Quản trị tài khoản người dùng là một phần không thể thiếu trong công việc hàng ngày của bất kỳ quản trị viên hệ thống Linux nào. Bài viết này sẽ hướng dẫn bạn cách tạo tài khoản mới, chỉnh sửa thông tin người dùng, và xóa tài khoản không còn sử dụng, tất cả đều được thực hiện qua dòng lệnh bằng các công cụ mặc định sẵn có trên hệ thống Linux: useradd
, usermod
và userdel
. Đây là những tiện ích mạnh mẽ giúp bạn quản lý người dùng một cách hiệu quả, bảo mật và linh hoạt trong môi trường máy chủ hoặc hệ thống doanh nghiệp.
Trong hướng dẫn này, bạn sẽ được học:
- Ý nghĩa của tệp /etc/login.defs
- Cách tạo tài khoản người dùng với nhiều tùy chọn khác nhau bằng lệnh useradd
- Cách sửa đổi tài khoản người dùng bằng lệnh usermod
- Cách xóa tài khoản người dùng bằng lệnh userdel
Yêu cầu phần mềm và Quy ước sử dụng
Danh mục | Chi tiết |
---|---|
Hệ thống | Phân phối Linux độc lập |
Phần mềm | Các tiện ích useradd, usermod và userdel (được cài sẵn theo mặc định) |
Yêu cầu khác | Quyền root để thực hiện các tác vụ quản trị hệ thống |
Quy ước cú pháp lệnh:
#
– yêu cầu các lệnh Linux được thực thi với quyền root, tức là trực tiếp dưới tài khoản root hoặc sử dụng lệnhsudo
$
– yêu cầu các lệnh Linux được thực thi với tư cách người dùng thông thường không có đặc quyền
Cài đặt mặc định
Các thiết lập mặc định được áp dụng khi tạo một tài khoản người dùng được định nghĩa trong tệp /etc/login.defs
. Nếu bạn xem tệp này trên một hệ thống Fedora, bạn sẽ thấy các tùy chọn được định nghĩa trong đó; những tùy chọn này có thể được ghi đè tại thời điểm chạy bằng các tùy chọn dòng lệnh. Dưới đây là một số định nghĩa:
TÙY CHỌN | Ý NGHĨA | GIÁ TRỊ MẶC ĐỊNH |
---|---|---|
CREATE_HOME | Xác định xem có nên tạo thư mục home cho người dùng mới hay không | yes |
ENCRYPT_METHOD | Phương pháp mã hóa được dùng để mã hóa mật khẩu | SHA512 |
UID_MIN | Giá trị uid tối thiểu được tự động gán cho người dùng tiêu chuẩn | 1000 |
UID_MAX | Giá trị uid tối đa được tự động gán cho người dùng tiêu chuẩn | 60000 |
SYS_UID_MIN | Giá trị uid tối thiểu được tự động gán cho người dùng “system” | 201 |
SYS_UID_MAX | Giá trị uid tối đa được tự động gán cho người dùng “system” | 999 |
PASS_MAX_DAYS | Số ngày tối đa mà mật khẩu có thể được sử dụng | 99999 |
PASS_MIN_DAYS | Số ngày tối thiểu giữa các lần thay đổi mật khẩu | 0 |
PASS_WARN_AGE | Số ngày cảnh báo trước khi mật khẩu hết hạn | 7 |
Những mục trên chỉ là một phần nhỏ của các tùy chọn được định nghĩa trong tệp /etc/login.defs, nhưng đã đủ để cung cấp một ý niệm tổng quát.
Tạo tài khoản người dùng mới
Để tạo một tài khoản người dùng mới trên hệ thống Linux, chúng ta sử dụng tiện ích useradd
; cú pháp như sau:
useradd [options] LOGIN
Trong đó, LOGIN là tên đăng nhập của tài khoản sẽ được tạo ra. Giả sử chúng ta muốn tạo một tài khoản mới cho người dùng có tên “newuser”, ta sẽ chạy lệnh:
$ sudo useradd newuser
Lệnh trên sẽ tạo tài khoản “newuser” trên hệ thống; thêm vào đó, một thư mục home sẽ được tạo cho người dùng này, vì theo bảng trên, tùy chọn CREATE_HOME được đặt là yes theo mặc định. Nếu bạn muốn yêu cầu tạo thư mục home cho người dùng mới một cách rõ ràng, bạn có thể dùng tùy chọn -m (viết tắt của –create-home). Ngược lại, nếu muốn tránh việc tạo thư mục này, bạn nên sử dụng tùy chọn -M (viết tắt của –no-create-home).
Sau khi tạo người dùng, cách khuyến nghị để đặt mật khẩu cho người dùng mới là sử dụng tiện ích passwd – nhớ rằng, đây là bước quan trọng!
Chỉ định shell đăng nhập
Một yêu cầu phổ biến khi tạo người dùng mới là chỉ định shell đăng nhập của họ. Việc này được thực hiện bằng cách sử dụng tùy chọn -s (hoặc --shell
) và cung cấp đường dẫn đến file nhị phân của shell. Nếu không cung cấp tùy chọn này, shell được xác định bởi biến $SHELL
sẽ được sử dụng (trên Fedora thường là /bin/bash
). Ví dụ, để chỉ định rõ shell đăng nhập cho người dùng mới, ta chạy:
$ sudo useradd -s /bin/bash newuser
Chỉ định thủ công User UID
Mặc định, khi người dùng mới được tạo ra, UID đầu tiên có giá trị lớn hơn hoặc bằng UID được chỉ định bởi tùy chọn UID_MIN
trong tệp /etc/login.defs
, lớn hơn bất kỳ UID nào của người dùng khác và nhỏ hơn hoặc bằng giá trị của UID_MAX sẽ được gán cho người dùng đó. Nếu bạn muốn chỉ định thủ công một UID, hãy sử dụng tùy chọn -u
(hoặc --uid
) và cung cấp giá trị UID bạn muốn sử dụng (phải là một giá trị không âm). Để tạo một người dùng với UID bằng 1005
, ta chạy:
$ sudo useradd -u 1005 newuser
Tạo tài khoản người dùng “system”
Nếu không khai báo rõ ràng, lệnh useradd
sẽ tạo ra các người dùng “tiêu chuẩn”, tức là người dùng với UID ≥ 1000. Nếu bạn muốn tạo một người dùng “system” (người dùng hệ thống), tức là tài khoản không có thông tin về tuổi tác (aging information) trong tệp /etc/shadow
, bạn cần sử dụng tùy chọn -r
(hoặc --system
). Tài khoản hệ thống thường được sử dụng bởi các daemon hoặc ứng dụng khác, do đó thư mục home sẽ không được tạo cho chúng. UID của tài khoản này được chọn trong khoảng được định nghĩa bởi các tùy chọn SYS_UID_MIN
và SYS_UID_MAX
trong tệp /etc/login.defs
. Để tạo một tài khoản người dùng “system”, ta chạy:
$ sudo useradd -r newuser
Chỉ định các nhóm bổ sung cho người dùng mới
Khi một người dùng tiêu chuẩn được tạo ra, mặc định một nhóm có tên giống như tài khoản đó sẽ được tạo ra và người dùng sẽ được gán vào nhóm đó làm nhóm chính. Nếu bạn muốn chỉ định một loạt các nhóm bổ sung mà người dùng cần thuộc về, bạn hãy sử dụng tùy chọn -G (viết tắt của --groups
) và cung cấp danh sách nhóm, ngăn cách nhau bằng dấu phẩy. Ví dụ, để thêm người dùng vào nhóm wheel (nhóm này cho phép người dùng sử dụng lệnh sudo), ta chạy:
$ sudo useradd -G wheel newuser
Sửa đổi tài khoản người dùng bằng tiện ích usermod
Khi tiện ích useradd được sử dụng để tạo một tài khoản người dùng, tiện ích usermod (như tên gọi cho thấy) được dùng để sửa đổi tài khoản người dùng đã tồn tại. Cú pháp của lệnh usermod tương tự như useradd:
usermod [options] LOGIN
Dưới đây là một số ví dụ về cách sử dụng tiện ích này.
Thêm người dùng hiện có vào các nhóm bổ sung
Như đã thấy ở phần tạo người dùng, chúng ta có thể thêm người dùng vào các nhóm bổ sung bằng tùy chọn -G của lệnh useradd. Tuy nhiên, nếu tài khoản đã tồn tại và muốn thêm vào các nhóm phụ, bạn cần sử dụng tùy chọn -a (viết tắt của –append) kết hợp với -G và đưa vào danh sách các nhóm cần thêm. Ví dụ, để thêm người dùng vào nhóm newgroup, ta chạy:
$ sudo usermod -G -a newgroup user
Chú ý: Tùy chọn -a phải được sử dụng cùng với -G. Nếu chỉ sử dụng -G mà không có -a, danh sách các nhóm bổ sung mà người dùng tham gia sẽ bị ghi đè hoàn toàn bằng danh sách mới được chỉ định.
Khóa và mở khóa mật khẩu người dùng
Đôi khi, bạn có thể muốn khóa mật khẩu của người dùng để ngăn họ đăng nhập bằng mật khẩu đó. Trong những trường hợp như vậy, ta có thể sử dụng tùy chọn -L (viết tắt của –lock) với lệnh usermod:
$ sudo usermod -L newuser
Khi thực hiện lệnh này, ký tự ! sẽ được thêm vào trước mật khẩu đã mã hóa, từ đó vô hiệu hóa nó:
newuser:!$6$ISaqNDTydf51adbj$6ciHWBByfhe9k0sfg8Cky2F3HhgxdfMtmrWyq0323rvuCUu/un0d4rldwI0ELj4aSyFv0.cki3c/oLJFFNGyt/:18602:0:99999:7:::
Để mở khóa mật khẩu của người dùng, bạn cần sử dụng tùy chọn -U (hoặc –unlock):
$ sudo usermod -U newuser
Thay đổi uid của người dùng và gid của nhóm chính
Nếu cần thay đổi uid của một người dùng đã tồn tại, hãy sử dụng tùy chọn -u của lệnh usermod và cung cấp giá trị uid mới. Lưu ý, giá trị uid mới không được trùng với uid hiện có của bất kỳ người dùng nào khác; nếu không, bạn sẽ nhận được thông báo lỗi:
$ sudo usermod -u 1000 newuser usermod: UID '1000' already exists
Khi thay đổi uid của người dùng, tất cả các tập tin trong thư mục home của người dùng đó cũng sẽ được cập nhật uid tương ứng, ngoại trừ khi thư mục home có uid khác so với uid hiện tại của người dùng.
Bạn cũng có thể muốn thay đổi gid (ID nhóm) của nhóm chính của người dùng (nhóm này được tạo cùng với tài khoản người dùng, thường có gid giống với uid). Để thực hiện điều này, sử dụng lệnh usermod với tùy chọn -g (hoặc –gid); lưu ý rằng nhóm mới phải đã tồn tại:
$ sudo usermod -g 1006 newuser
Khi thay đổi nhóm chính, các tập tin trong thư mục home (được sở hữu bởi nhóm cũ) sẽ tự động được chuyển sang nhóm mới.
Thay đổi tên đăng nhập của người dùng
Để thay đổi tên đăng nhập của một người dùng, bạn sử dụng tùy chọn -l (hoặc –login) của lệnh usermod, cung cấp tên đăng nhập mới làm đối số đầu tiên và tên đăng nhập hiện tại làm đối số thứ hai. Giả sử bạn muốn thay đổi tên đăng nhập từ “newuser” thành “linuxconfig”, ta chạy:
$ sudo usermod -l linuxconfig newuser
Lưu ý rằng lệnh trên chỉ thay đổi tên đăng nhập của người dùng, không thay đổi bất kỳ thứ gì khác. Thư mục home của người dùng sẽ không được đổi tên. Nếu bạn muốn thay đổi thêm các thành phần khác, hãy tham khảo mục sau.
Thay đổi thư mục home của người dùng và chuyển tất cả các tập tin
Đôi khi, bạn cần thay đổi thư mục home của một người dùng. Để thực hiện việc này, hãy sử dụng lệnh usermod với tùy chọn -d (viết tắt của –home) và cung cấp đường dẫn đến thư mục mới. Nếu muốn chuyển tất cả các tập tin hiện có từ thư mục cũ sang thư mục mới, bạn cần thêm tùy chọn -m (viết tắt của –move-home). Thư mục home mới sẽ chỉ được tạo nếu thư mục hiện tại tồn tại; quyền sở hữu tập tin, chế độ truy cập, ACL và các thuộc tính mở rộng sẽ được cập nhật theo cấu hình mới, nhưng có thể cần thêm một số chỉnh sửa thủ công. Ví dụ, để thay đổi thư mục home của người dùng “newuser” từ /home/newuser sang /home/newuser_new và chuyển tất cả các tập tin, ta chạy:
$ sudo usermod -d /home/newuser_new -m newuser
Xóa tài khoản người dùng bằng tiện ích userdel
Sau khi đã tìm hiểu cách tạo và sửa đổi tài khoản người dùng, giờ chúng ta sẽ xem cách dùng tiện ích userdel để xóa tài khoản và tất cả các tập tin liên quan. Cú pháp của lệnh userdel cũng tương tự như useradd và usermod:
userdel [options] LOGIN
Tiện ích này có ít tùy chọn hơn so với useradd và usermod vì mục đích sử dụng khá đơn giản. Trường hợp phổ biến nhất là xóa tài khoản cùng với tất cả các tập tin nằm trong thư mục home và thư mục spool của người dùng, cũng như chính các thư mục đó. Để làm việc này, hãy sử dụng tùy chọn -r (viết tắt của –remove). Giả sử bạn muốn xóa tài khoản “newuser” cùng với thư mục home và thư mục spool, ta chạy:
$ sudo userdel -r newuser
Nếu người dùng đang đăng nhập, hệ thống sẽ trả về lỗi và từ chối xóa. Nếu muốn bắt buộc thao tác này, cần kết hợp thêm tùy chọn -f (viết tắt của –force). Tuy nhiên, hãy cẩn trọng khi sử dụng tùy chọn này vì nó có thể khiến hệ thống trở nên không nhất quán.
Kết luận
Thông qua hướng dẫn này, bạn đã nắm vững cách sử dụng ba tiện ích dòng lệnh quan trọng trong Linux – useradd, usermod và userdel – để thực hiện các thao tác tạo mới, chỉnh sửa và xóa tài khoản người dùng một cách chính xác và hiệu quả. Các ví dụ thực tế và tình huống cụ thể trong bài giúp bạn áp dụng linh hoạt vào môi trường hệ thống thực tế. Nếu bạn muốn tìm hiểu sâu hơn về các tham số nâng cao, hãy tham khảo tài liệu man page của từng lệnh để khai thác toàn bộ sức mạnh của các công cụ quản trị người dùng này trên Linux.