Chúng ta đều biết về các lệnh phổ biến nhất được gọi là ‘useradd‘ hoặc ‘adduser‘ trên Linux. Đôi khi, một quản trị viên hệ thống Linux được yêu cầu tạo tài khoản người dùng trên Linux với các thuộc tính, giới hạn hoặc bình luận cụ thể. Lệnh useradd Linux là một tiện ích cấp thấp được sử dụng để thêm hoặc tạo tài khoản người dùng trên Linux và các hệ điều hành tương tự Unix khác. Lệnh adduser rất tương tự với lệnh useradd, chỉ là một liên kết tượng trưng.
Trong một số bản phân phối Linux, lệnh useradd có thể có một phiên bản khác nhau. Tôi đề nghị đọc tài liệu của bạn trước khi sử dụng các hướng dẫn của chúng tôi để tạo tài khoản người dùng mới trên Linux.
Khi chúng ta chạy lệnh ‘useradd‘ trong terminal Linux, nó thực hiện các nhiệm vụ chính sau:
- Nó chỉnh sửa các tệp /etc/passwd, /etc/shadow, /etc/group, và /etc/gshadow cho các tài khoản người dùng mới được tạo.
- Tạo và điền thông tin vào thư mục nguồn cho người dùng mới.
- Đặt quyền và sở hữu cho thư mục nguồn.
Cú pháp lệnh Useradd Linux
Cú pháp cơ bản của lệnh useradd là:
useradd [options] username
Trong bài viết này, chúng tôi sẽ thể hiện 15 lệnh ‘useradd‘ được sử dụng phổ biến nhất với các ví dụ thực tế trên Linux.
1. Cách thêm người dùng mới trên Linux
Để thêm hoặc tạo một người dùng mới, bạn phải sử dụng lệnh ‘useradd‘ hoặc ‘adduser‘, tiếp theo là ‘tên người dùng‘. ‘tên người dùng‘ là tên đăng nhập mà người dùng sử dụng để đăng nhập vào hệ thống.
Chỉ có thể thêm một người dùng, và tên người dùng phải là duy nhất, chưa tồn tại trên hệ thống.
Ví dụ, để thêm một người dùng mới có tên là ‘tecmint‘, sử dụng lệnh sau:
useradd tecmint
Khi chúng ta thêm một người dùng mới trong Linux bằng lệnh ‘useradd‘, người đó được tạo ra trong trạng thái bị khóa. Để mở khóa tài khoản người dùng đó, chúng ta cần đặt mật khẩu cho tài khoản đó bằng lệnh ‘passwd‘.
passwd tecmint
Changing password for user tecmint.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
Khi một người dùng mới được tạo ra, mục nhập của nó được tự động thêm vào tệp ‘/etc/passwd‘. Tệp này được sử dụng để lưu trữ thông tin của người dùng, và mục nhập phải được.
tecmint:x:1000:1000:tecmint:/home/tecmint:/bin/bash
Mục nhập trên bao gồm một tập hợp bảy trường phân tách bằng dấu hai chấm, mỗi trường đều có ý nghĩa riêng của nó.
Hãy xem những trường này là gì:
- Tên người dùng – Tên đăng nhập người dùng được sử dụng để đăng nhập vào hệ thống. Nó phải có độ dài từ 1 đến 32 ký tự.
- Mật khẩu – Mật khẩu người dùng (hoặc ký tự
'x'
) được lưu trữ trong tệp ‘/etc/shadow‘ trong một định dạng đã được mã hóa.
- User ID (UID) – Mỗi người dùng phải có một User ID (UID), có nghĩa là User Identification Number. Mặc định, UID 0 được dành riêng cho người dùng root, và các UID từ 1 đến 99 được dành riêng cho các tài khoản được xác định trước khác. Ngoài ra, UID từ 100 đến 999 được dành cho các tài khoản và nhóm hệ thống.
- Group ID (GID) – Group ID chính (GID), có nghĩa là Group Identification Number, được lưu trữ trong tệp ‘/etc/group‘.
- Thông tin người dùng – Trường này là tùy chọn và cho phép bạn xác định thông tin bổ sung về người dùng, chẳng hạn như tên đầy đủ của người dùng. Thông tin này có thể được điền bằng cách sử dụng lệnh finger.
- Thư mục home – Vị trí tuyệt đối của thư mục home của người dùng.
- Shell – Vị trí tuyệt đối của shell của người dùng, tức là /bin/bash.
2. Cách tạo user với một thư mục Home khác nhau
Mặc định, lệnh ‘useradd‘ tạo một thư mục home của người dùng dưới thư mục ‘/home‘ với tên người dùng. Ví dụ, như đã thấy ở trên, thư mục home mặc định cho người dùng ‘tecmint‘ là ‘/home/tecmint‘.
Tuy nhiên, hành vi này có thể thay đổi bằng cách sử dụng tùy chọn '-d'
kết hợp với vị trí thư mục home mới (ví dụ, ‘/data/projects‘). Ví dụ, lệnh sau sẽ tạo một người dùng ‘anusha‘ với thư mục home được đặt là ‘/data/projects‘.
# useradd -d /data/projects anusha
# passwd anusha
Bạn có thể xem thư mục home của người dùng và thông tin liên quan đến người dùng khác, chẳng hạn ID người dùng, ID nhóm, shell và bình luận, bằng cách sử dụng lệnh cat sau.
cat /etc/passwd | grep anusha
anusha:x:1001:1001::/data/projects:/bin/bash
3. Cách tạo user với một user ID cụ thể
Trong Linux, mỗi người dùng có một User ID (Unique Identification Number) riêng. Mặc định, khi chúng ta tạo một tài khoản người dùng mới trên Linux, nó sẽ gán các ID người dùng mặc định 500, 501, 502, và tiếp tục.
Tuy nhiên, chúng ta có thể tạo người dùng với ID người dùng tùy chỉnh bằng cách sử dụng tùy chọn '-u'
. Ví dụ, lệnh sau sẽ tạo một người dùng ‘navin‘ với một ID người dùng tùy chỉnh ‘1002‘.
useradd -u 1002 navin
Bây giờ, hãy xác minh rằng người dùng được tạo với user id đã xác định (1002) bằng lệnh sau.
cat /etc/passwd | grep navin
navin:x:1002:1002::/home/navin:/bin/bash
LƯU Ý: Hãy đảm bảo giá trị của ID người dùng phải là duy nhất so với bất kỳ người dùng đã được tạo trước đó trên hệ thống.
4. Cách tạo user với một Group ID cụ thể
Tương tự, mỗi người dùng có GID (Group Identifier) riêng của họ. Chúng ta cũng có thể tạo người dùng với các GID nhóm cụ thể bằng cách sử dụng tùy chọn '-g'
.
Trong ví dụ này, chúng ta sẽ thêm một người dùng ‘tarunika‘ với một UID và GID cụ thể đồng thời với sự trợ giúp của các tùy chọn '-u'
và '-g'
.
useradd -u 1005 -g tecmint tarunika
Bây giờ, kiểm tra tên ID người dùng và ID nhóm đã được gán trong tệp ‘/etc/passwd‘.
cat /etc/passwd | grep tarunika
tarunika:x:1005:1000::/home/tarunika:/bin/bash
Để xác minh GID của người dùng, sử dụng lệnh id:
id -gn tarunika
5. Cách thêm một user vào nhiều nhóm
Tùy chọn '-G'
được sử dụng để thêm một người dùng vào các nhóm bổ sung. Mỗi tên nhóm được phân tách bằng dấu phẩy, không có khoảng trống ở giữa.
Trong ví dụ này, chúng ta đang thêm một người dùng ‘tecmint‘ vào nhiều nhóm, chẳng hạn như admins, webadmin, và developers.
groupadd admins
groupadd webadmin
groupadd developers
usermod -a -G admins,webadmin,developers tecmint
useradd -G admins,webadmin,developers paddy
Tiếp theo, xác minh rằng người dùng đã được gán nhiều nhóm bằng lệnh id.
id tecmint
uid=1000(tecmint) gid=1000(tecmint)
groups=1000(tecmint),1007(admins),1008(webadmin),1009(developers)
context=root:system_r:unconfined_t:SystemLow-SystemHigh
6. Cách tạo user mà không có thư mục Home
Trong một số tình huống, chúng ta không muốn gán thư mục home cho một người dùng vì lý do bảo mật, thư mục home của người dùng sẽ là root khi họ đăng nhập vào hệ thống vừa khởi động. Khi một người dùng như vậy sử dụng lệnh ‘su‘, thư mục đăng nhập của họ sẽ là thư mục home của người dùng trước.
Để tạo người dùng mà không có các thư mục home của họ, chúng ta sử dụng tùy chọn '-M'
. Ví dụ, lệnh sau sẽ tạo một người dùng ‘shilpi‘ mà không có thư mục home.
useradd -M shilpi
Bây giờ, hãy xác minh rằng người dùng đã được tạo mà không có thư mục home bằng lệnh ls.
ls -l /home/shilpi
ls: cannot access /home/shilpi: No such file or directory
7. Cách tạo user với ngày hết hạn trong Linux
Mặc định, khi chúng ta thêm người dùng bằng lệnh ‘useradd‘, tài khoản người dùng không bao giờ hết hạn, có nghĩa là ngày hết hạn của họ được đặt là 0 (tức là không bao giờ hết hạn).
Tuy nhiên, chúng ta có thể đặt ngày hết hạn bằng cách sử dụng tùy chọn '-e'
, nó phải có định dạng YYYY-MM-DD. Điều này hữu ích để tạo các tài khoản tạm thời trong một khoảng thời gian cụ thể.
Trong ví dụ này, chúng ta tạo một người dùng ‘aparna‘ với ngày hết hạn tài khoản, là 27 tháng 08 năm 2021, theo định dạng YYYY-MM-DD.
useradd -e 2021-08-27 aparna
Tiếp theo, xác minh thông tin giới hạn tài khoản và mật khẩu bằng lệnh chage cho người dùng ‘aparna‘ sau khi đặt ngày hết hạn tài khoản.
chage -l aparna
Last password change : Jun 25, 2021
Password expires : never
Password inactive : never
Account expires : Aug 27, 2021
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
8. Cách tạo user với ngày hết hạn mật khẩu
Các đối số '-f'
được sử dụng để xác định số ngày sau khi mật khẩu hết hạn. Giá trị của 0 sẽ vô hiệu hóa tài khoản người dùng ngay khi mật khẩu hết hạn. Mặc định, giá trị hết hạn mật khẩu được đặt là -1
, có nghĩa là nó không bao giờ hết hạn.
Trong ví dụ này, chúng ta sẽ đặt ngày hết hạn mật khẩu, là 45 ngày, cho người dùng ‘mansi‘ bằng cách sử dụng các tùy chọn '-e'
và '-f'
.
useradd -e 2014-04-27 -f 45 mansi
9. Cách thêm user với bình luận trong Linux
Tùy chọn '-c'
cho phép bạn thêm bình luận tùy chỉnh, chẳng hạn như tên đầy đủ của người dùng, số điện thoại, v.v., vào tệp ‘/etc/passwd‘. Bình luận có thể được thêm vào dưới dạng một dòng duy nhất mà không có khoảng trống.
Ví dụ, lệnh sau sẽ thêm một người dùng ‘mansi‘ và chèn tên đầy đủ của người dùng đó, Manis Khurana, vào trường bình luận.
useradd -c "Manis Khurana" mansi
Bạn có thể xem bình luận đã chèn vào tệp ‘/etc/passwd‘ trong phần bình luận bằng cách sử dụng lệnh tail.
tail -1 /etc/passwd
mansi:x:1010:1013:Manis Khurana:/home/mansi:/bin/sh
10. Cách tạo user với Shell đăng nhập trong Linux
Đôi khi, chúng ta thêm các người dùng không có liên quan gì đến shell đăng nhập hoặc đôi khi chúng ta được yêu cầu gán shell khác nhau cho người dùng của chúng ta. Chúng ta có thể gán các shell đăng nhập khác nhau cho mỗi người dùng bằng cách sử dụng tùy chọn '-s'
.
Ở đây, ví dụ này, chúng ta sẽ thêm một người dùng ‘tecmint‘ mà không có shell đăng nhập, tức là shell /sbin/nologin .
useradd -s /sbin/nologin tecmint
Bạn có thể kiểm tra shell đã được gán cho người dùng trong tệp ‘/etc/passwd‘.
tail -1 /etc/passwd
tecmint:x:1011:1014::/home/tecmint:/sbin/nologin
11. Cách tạo user với thư mục Home, Shell và bình luận cụ thể
Lệnh sau sẽ tạo một người dùng ‘ravi‘ với một thư mục home ‘/var/www/tecmint‘, một shell mặc định là /bin/bash, và thông tin bổ sung về người dùng.
useradd -m -d /var/www/ravi -s /bin/bash -c "TecMint Owner" -U ravi
Trong lệnh trên, các tùy chọn '-m'
và '-d'
tạo người dùng với thư mục home cụ thể, và tùy chọn '-s'
đặt shell mặc định của người dùng thành /bin/bash. Tùy chọn '-c'
thêm thông tin bổ sung về người dùng và đối số '-U'
tao/thêm một nhóm với cùng tên với người dùng.
12. Cách tạo user với thư mục, Shell, bình luận, UID/GID được xác định
Lệnh này rất tương tự với lệnh phía trên, nhưng ở đây chúng ta xác định shell là /bin/zsh và đặt UID và GID tuỳ chỉnh cho người dùng ‘tarunika‘. Tùy chọn '-u'
xác định UID người dùng mới (tức là 100), và tùy chọn '-g'
xác định GID (tức là 1000).
useradd -m -d /var/www/tarunika -s /bin/zsh -c "TecMint Technical Writer" -u 1000 -g 100 tarunika
13. Cách tạo user với thư mục, không có Shell, bình luận và UID
Lệnh sau rất tương tự với hai lệnh ở trên. Sự khác biệt duy nhất ở chỗ, ở đây, chúng ta vô hiệu hóa shell đăng nhập cho một người dùng có tên ‘avishek‘ với một User ID người dùng tuỳ chỉnh (tức là 1019).
Tùy chọn '-s'
đặt shell mặc định thành /bin/bash, nhưng trong trường hợp này, chúng ta đã đặt shell đăng nhập thành ‘/usr/sbin/nologin‘. Điều đó có nghĩa là người dùng ‘avishek‘ sẽ không thể đăng nhập vào hệ thống.
useradd -m -d /var/www/avishek -s /usr/sbin/nologin -c "TecMint Sr. Technical Writer" -u 1019 avishek
14. Cách tạo user với thư mục, Shell, Skeleton và UID được xác định
Sự khác biệt duy nhất trong lệnh này là chúng ta đã sử dụng tùy chọn '-k'
để đặt thư mục khung tùy chỉnh thành /etc/custom.skell thay vì mặc định, /etc/skel. Chúng ta cũng đã sử dụng tùy chọn '-s'
để xác định một shell khác, /bin/tcsh, cho người dùng ‘navin‘.
useradd -m -d /var/www/navin -k /etc/custom.skell -s /bin/tcsh -c "No Active Member of TecMint" -u 1027 navin
15. Cách tạo user mà không có thư mục, Shell hoặc nhóm, với bình luận
Lệnh sau khác rất nhiều với các lệnh khác được giải thích ở trên. Ở đây, chúng ta đã sử dụng tùy chọn '-M'
để tạo một người dùng mà không có thư mục home của người dùng, và tùy chọn '-N'
được sử dụng để chỉ cho hệ thống chỉ tạo ra tên người dùng (không có nhóm). Tùy chọn '-r'
dùng để tạo một người dùng hệ thống.
useradd -M -N -r -s /bin/false -c "Disabled TecMint Member" clayton
Để biết thêm thông tin và tùy chọn về ‘useradd‘, chạy lệnh ‘useradd‘ trong terminal để xem các tùy chọn có sẵn
useradd
Nếu bạn muốn thay đổi các thuộc tính tài khoản người dùng như chỉnh sửa tên user, ID người dùng (UID), thư mục home, shell, và nhiều hơn nữa, hãy sử dụng lệnh usermod.