Quản lý người dùng: các lệnh adduser
, usermod
, passwd
1. Tại sao việc hiểu quản lý người dùng lại quan trọng?
Hôm nay tụi mình sẽ tìm hiểu sâu về quản lý người dùng, bởi vì đây là một phần quan trọng của việc quản trị Linux. Tạo người dùng, cấu hình môi trường cho họ và quản lý mật khẩu của họ – tất cả những thứ này sẽ trở thành bộ công cụ quan trọng cho công việc của bạn. Nào bắt đầu thôi!
Thường thì trong Linux, sẽ có rất nhiều người dùng làm việc trên cùng một server. Hệ thống cung cấp cho mỗi người những quyền nhất định để bảo vệ dữ liệu và tránh sự hỗn loạn. Bạn cần biết cách thêm người dùng mới (ví dụ như các lập trình viên trong nhóm của bạn), cấu hình môi trường của họ (ví dụ thay đổi shell) và khi cần thiết, giới hạn quyền truy cập.
2. Tạo người dùng bằng adduser
Linux cung cấp lệnh adduser
, đây là một biến thể thân thiện hơn của lệnh useradd
. Nó cho phép tạo người dùng mới một cách dễ dàng và nhanh chóng:
Cú pháp chính
adduser tên_người_dùng
Điều gì xảy ra khi tạo người dùng?
- Một mục mới được tạo trong tệp
/etc/passwd
cho người dùng. - Thư mục chính được tạo (ví dụ:
/home/tên_người_dùng
). - Các thiết lập cơ bản được định cấu hình (ví dụ: shell mặc định).
- Bạn sẽ được yêu cầu nhập mật khẩu và các thông tin bổ sung (ví dụ: tên, số điện thoại — nhưng các dữ liệu này không bắt buộc).
Ví dụ
Chúng ta hãy tạo một người dùng mới với tên dev_user
:
sudo adduser dev_user
Sau khi nhập lệnh này, bạn sẽ được yêu cầu:
- Đặt mật khẩu cho người dùng.
- Nhập thông tin bổ sung, có thể bỏ qua bằng cách nhấn
Enter
.
Kiểm tra
Để đảm bảo người dùng đã được tạo, bạn có thể kiểm tra tệp /etc/passwd
:
cat /etc/passwd | grep dev_user
Bạn sẽ thấy một dòng chứa thông tin về người dùng dev_user
.
3. Cấu hình người dùng bằng usermod
Khi người dùng đã được tạo, có thể sẽ cần thay đổi các thông số của họ. Ví dụ, đổi tên, chỉ định shell khác hoặc thêm vào nhóm.
Thay đổi tên người dùng
Trước tiên, hãy đảm bảo rằng người dùng chưa đăng nhập vào hệ thống. Sau đó thực hiện lệnh:
sudo usermod -l ten_moi ten_cu
Ví dụ:
sudo usermod -l developer dev_user
Bây giờ người dùng dev_user
sẽ được đổi tên thành developer
. Tuy nhiên, thư mục home của họ vẫn sẽ giữ nguyên tên cũ.
Thay đổi shell mặc định
Giả sử bạn muốn thay đổi shell của người dùng thành /bin/zsh
. Để làm điều này, thực hiện lệnh:
sudo usermod --shell /bin/zsh developer
Kiểm tra xem shell đã thay đổi chưa bằng lệnh:
cat /etc/passwd | grep developer
Thay đổi thư mục home
Nếu bạn muốn người dùng mới làm việc trong một thư mục home khác, hãy làm như sau:
sudo usermod -d /thu_muc_moi developer
nếu thư mục chưa tồn tại, sử dụng tuỳ chọn -m
để nó được tạo và nội dung của thư mục cũ được chuyển đi:
sudo usermod -d /home/new_developer -m developer
4. Quản lý mật khẩu bằng passwd
Cài đặt và thay đổi mật khẩu
Để cài đặt (hoặc thay đổi) mật khẩu của người dùng, bạn sử dụng lệnh:
sudo passwd tên_người_dùng
Ví dụ:
sudo passwd developer
Hệ thống sẽ yêu cầu bạn nhập mật khẩu mới hai lần để đảm bảo không bị sai sót.
Bắt buộc thay đổi mật khẩu khi đăng nhập lần tới
Điều này hữu ích khi bạn tạo người dùng mới và muốn họ tự đặt mật khẩu trong lần đăng nhập đầu tiên:
sudo passwd -e developer
Sau đó, người dùng developer
khi đăng nhập vào hệ thống sẽ nhận thông báo cần thay đổi mật khẩu.
5. Thực hành
Bài tập 1: Tạo người dùng mới
Thêm người dùng
tester
:sudo adduser tester
Đảm bảo rằng người dùng đã được tạo:
cat /etc/passwd | grep tester
Bài tập 2: Thiết lập thông số người dùng
Thay đổi tên người dùng:
sudo usermod -l test_user tester
Thay đổi thư mục home của người dùng:
sudo usermod -d /home/test_user -m test_user
Đảm bảo rằng các thay đổi đã được áp dụng:
ls -l /home/
Thay đổi shell của người dùng:
sudo usermod --shell /bin/zsh test_user
Kiểm tra dữ liệu người dùng đã được cập nhật:
cat /etc/passwd | grep test_user
Bài tập 3: Đặt mật khẩu mới cho người dùng
Đặt mật khẩu cho người dùng:
sudo passwd test_user
Bắt buộc người dùng đổi mật khẩu ở lần đăng nhập tiếp theo:
sudo passwd -e test_user
6. Giới thiệu về pipe |
trong Linux
Pipe |
là một cơ chế trong Unix/Linux, cho phép chuyển đầu ra của một lệnh (stdout) làm đầu vào (stdin) cho lệnh khác. Đây là một công cụ mạnh mẽ, giúp kết hợp các lệnh, tạo ra "dây chuyền" xử lý dữ liệu.
Nó hoạt động thế nào?
Khi bạn sử dụng pipe giữa các lệnh, Linux chuyển đầu ra tiêu chuẩn của lệnh đầu tiên vào đầu vào tiêu chuẩn của lệnh tiếp theo. Điều này giúp xử lý hiệu quả khối lượng lớn dữ liệu mà không cần tới các file tạm thời.
Cú pháp:
lệnh1 | lệnh2 | lệnh3
lệnh1
tạo ra dữ liệu.lệnh2
xử lý dữ liệu nhận được.lệnh3
thực hiện xử lý bổ sung hoặc lưu kết quả.
Ví dụ:
Hiển thị danh sách file và lọc theo mẫu:
ls -l | grep ".txt"
Ở đây ls -l
hiển thị danh sách file, còn grep
lọc chỉ các file có đuôi .txt
.
Đếm số dòng chứa một từ cụ thể:
cat file.txt | grep "Linux" | wc -l
Cách này lần lượt hiển thị nội dung file, tìm các dòng chứa "Linux", rồi đếm số lượng của chúng.
Lợi ích của pipe:
- Đơn giản hóa các thao tác phức tạp.
- Giảm thiểu việc sử dụng các file tạm thời.
- Có thể kết hợp các công cụ mạnh mẽ của Linux để tự động hóa công việc.
7. Làm quen với grep trong Linux
grep
(Global Regular Expression Print) — là công cụ dòng lệnh trong Unix/Linux để tìm kiếm các dòng trong tệp mà khớp với mẫu đã chỉ định. Nó được sử dụng rộng rãi để lọc và tìm kiếm dữ liệu nhờ hỗ trợ các biểu thức chính quy và các tùy chỉnh linh hoạt.
grep
hoạt động như thế nào?
grep
nhận vào một tệp văn bản (hoặc đầu vào chuẩn), tìm kiếm các dòng khớp với mẫu đã chỉ định và xuất chúng ra.- Nếu không tìm thấy mẫu, lệnh sẽ không xuất ra bất kỳ điều gì.
Ví dụ
Hiển thị danh sách tệp và lọc theo mẫu:
ls -l | grep ".txt"
- Đầu tiên, lệnh
ls -l
chạy, hiển thị danh sách tệp trong thư mục hiện tại - Đầu ra của lệnh đầu tiên
ls
được chuyển bằng pipeline|
làm đầu vào cho lệnh thứ haigrep
- Lệnh thứ hai lọc các dòng được gửi đến nó và chỉ xuất các dòng chứa ".txt"
Đếm các dòng chứa một từ cụ thể:
cat file.txt | grep "Linux" | wc -l
- Đầu tiên, lệnh
cat file.txt
chạy, hiển thị nội dung của file file.txt - Đầu ra của lệnh đầu tiên
cat
được chuyển bằng pipeline|
làm đầu vào cho lệnh thứ haigrep
- Lệnh thứ hai lọc các dòng được gửi đến nó và chỉ xuất các dòng chứa Linux
- Sau đó đầu ra của lệnh thứ hai
grep
được chuyển bằng pipeline|
làm đầu vào cho lệnh thứ bawc
- Lệnh thứ ba đếm số dòng được gửi đến nó và hiển thị số lượng đó
8. Lỗi phổ biến và lưu ý
Lỗi "user is currently logged in" khi đổi tên người dùng. Nếu người dùng đã đăng nhập vào hệ thống, bạn không thể thay đổi tên của họ. Hãy đảm bảo người dùng đã đăng xuất.
Lỗi khi thay đổi thư mục home. Nếu quên chỉ định
-m
, nội dung của thư mục cũ sẽ không được chuyển đến thư mục mới. Người dùng có thể bị mất dữ liệu của mình.Quên đặt mật khẩu cho người dùng. Sau khi tạo người dùng bằng
adduser
, hãy kiểm tra chắc chắn đã đặt mật khẩu cho họ. Nếu không có mật khẩu, họ sẽ không thể đăng nhập.Giá trị của
UID
vàGID
. Đôi khi quản trị viên muốn chỉ định giá trịUID
(ID người dùng) vàGID
(ID nhóm) khi tạo người dùng. Để làm điều này, sử dụng lệnhuseradd
, nhưng đây là chủ đề cho nghiên cứu sâu hơn về Linux.
9. Ứng dụng thực tế
Hãy tưởng tượng: bạn là quản trị viên máy chủ của công ty. Các nhà phát triển đến gặp bạn và mỗi người trong số họ cần truy cập vào hệ thống với các cài đặt riêng. Bạn có thể:
- Tạo người dùng và phân phối quyền truy cập cần thiết cho họ.
- Cài đặt môi trường (ví dụ: shell) tùy theo sở thích của họ.
- Quản lý mật khẩu và đảm bảo an toàn.
Những lệnh này cũng sẽ rất hữu ích khi đi phỏng vấn vị trí DevOps hoặc quản trị hệ thống. Người ta có thể hỏi bạn cách tạo và cài đặt người dùng hoặc yêu cầu bạn thực hiện bài tập này theo cách thực tế.
Ghi chú nhanh: các lệnh cơ bản
Lệnh | Mô tả |
---|---|
sudo adduser ten_nguoi_dung |
Tạo một người dùng mới. |
sudo usermod -l ten_moi ten_cu |
Đổi tên người dùng. |
sudo usermod --shell duong_dan ten |
Chỉ định shell mặc định. |
sudo usermod -d duong_dan ten |
Thay đổi thư mục chính. |
sudo passwd ten |
Đặt mật khẩu mới. |
sudo passwd -e ten |
Bắt buộc thay đổi mật khẩu lần đăng nhập tiếp theo. |
Thực hành đi nào! Linux luôn yêu cầu làm việc bằng tay. Càng thử nghiệm nhiều với các lệnh, bạn sẽ càng dễ dàng làm việc với các hệ thống thực tế.
GO TO FULL VERSION