Cách dùng lệnh useradd trong Linux để thêm người dùng mới
Trong bài này chúng ta cùng tìm hiểu cách dùng lệnh adduser hoặc useradd trong Linux, công dụng của lệnh này là thêm một người dùng mới vào danh sách user của Linux.
Trong Linux, lệnh useradd là một lệnh cấp thấp (low-lever) được dùng để thêm / tạo tài khoản người dùng mới trong Linux và các hệ điều hành Unix khác. Lưu ý rằng lệnh useradd cũng tương tự như useradd.
Trong một số bản Linux khác thì lệnh useradd có thể có sự khác biệt nhẹ, vì vậy bạn nên đọc tài liệu của phiên bản linux đó trước khi xem bài này.
I. Cú pháp lệnh useradd trong Linux
Khi chúng ta chạy lệnh ‘useradd‘ thì nó thực hiện những bước như sau:
Bài viết này được đăng tại [free tuts .net]
- Chỉnh sửa các file
/etc/passwd
,/etc/shadow
,/etc/group
và/etc/gshadow
cho tài khoản người dùng mới được tạo. - Tạo và điền thư mục chính cho người dùng mới.
- Đặt quyền và quyền sở hữu cho thư mục chính.
Cú pháp của lệnh này như sau:
useradd [options] username
Trong đó phần options
ta sẽ được học thông qua những ví dụ ở phần II.
Thêm mới người dùng trong Linux
Để thêm người dùng mới thì ta chạy lệnh ‘useradd‘ hoặc ‘adduser‘ với ‘username’. ‘username’ là tên đăng nhập của người dùng, được sử dụng để đăng nhập vào hệ thống.
Mỗi lần chạy lệnh ta chỉ có thể thêm một người dùng và tên người dùng đó phải là duy nhất (khác với tên người dùng khác đã tồn tại trên hệ thống).
Ví dụ: để thêm người dùng mới có tên là ‘tecmint‘, hãy sử dụng lệnh sau.
[root@tecmint ~]# useradd tecmint
Khi chúng ta thêm người dùng mới vào Linux bằng lệnh ‘useradd‘ thì người dùng đó sẽ ở trạng thái bị khóa, vì vây ta cần đặt mật khẩu cho nó bằng lệnh ‘passwd‘ thì mới mở khóa được.
[root@tecmint ~]# passwd tecmint Changing password for user tecmint. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
Sau khi bạn đặt mật khẩu thì nó sẽ được lưu vào file /etc/passwd
, cấu trúc dữ liệu của nó được lưu trong file có dạng như sau:
tecmint:x:504:504:tecmint:/home/tecmint:/bin/bash
Trong đó được chia làm 7 phần được ngăn cách nhau bởi dấu hai chấm. Ý nghĩa của mỗi phần như sau:
- Username: Là tên đăng nhập, có độ dài từ 1 đến 32 ký tự.
- Password: Là mật khẩu, được lưu trữ trong file
/etc/shadow
ở dạng mã hóa. - User ID (UID): Mỗi user phải có một ID và duy nhất, ta gọi nó là UID.
- Group ID (GID): Là group id nhận dạng người dùng này, ta gọi là GID
- User Info: Là thông tin cơ bản về người dùng, chẳng hạn như full name.
- Home Directory: Là đường dẫn tuyệt đối đến thư mục chính của người dùng.
- Shell: Là đường dẫn tuyệt đối đến login shell của người dùng.
II. Các ví dụ sử dụng lệnh useradd trong Linux cơ bản
Đây là những ví dụ ở mức cơ bản, nhưng đó là nền tảng để bạn tạo ra những lệnh nâng cao.
1. Tạo mới user ở một thư mục khác thư mục home
Theo mặc định, lệnh ‘useradd‘ tạo thư mục chính của người dùng trong thư mục /home
với tên người dùng. Như ở ví dụ trên ta có thể thấy thư mục chính mặc định cho người dùng ‘tecmint‘ là /home/tecmint
.
Tuy nhiên, ta hoàn toàn có thể thay đổi thư mục bằng cách sử dụng tùy chọn -d
cùng với đó là vị trí của thư mục mới.
Ví dụ: lệnh sau sẽ tạo một người dùng ‘analha‘ với thư mục chính /data/project
.
[root@tecmint ~]# useradd -d /data/projects anusha
Lúc này kiểm tra trong file /etc/passwd
bạn có thể thấy thư mục chính của người dùng và thông tin liên quan đến người dùng hoàn toàn khác.
[root@tecmint ~]# cat /etc/passwd | grep anusha anusha:x:505:505::/data/projects:/bin/bash
2. Tạo người dùng và gắn ID User cụ thể
Trong Linux, mỗi người dùng đều có UID (số nhận dạng duy nhất) của riêng mình. Theo mặc định, bất cứ khi nào chúng ta tạo tài khoản người dùng mới trong Linux, nó sẽ chỉ định userid 500, 501, 502, v.v.
Tuy nhiên, chúng ta có thể tạo user’s bằng userid tùy chỉnh với tùy chọn ‘-u
‘.
Ví dụ: lệnh sau sẽ tạo một người dùng ‘navin‘ với userid tùy chỉnh là ‘999‘.
[root@tecmint ~]# useradd -u 999 navin
Bây giờ kiểm tra xem thông tin có chính xác hay không nhé.
[root@tecmint ~]# cat /etc/passwd | grep navin navin:x:999:999::/home/navin:/bin/bash
Lưu ý rằng bạn phải đả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 nào khác đã được tạo trên hệ thống.
3. Tạo người dùng và gắn ID Group cụ thể
Tương tự, mỗi người dùng đều có GID (số nhận dạng nhóm) riêng. Chúng tôi có thể tạo người dùng với ID nhóm cụ thể cũng với tùy chọn -g
.
Ở trong ví dụ này ta sẽ thêm người dùng ‘tarunika‘ với UID và GID được chỉ định cụ thể.
[root@tecmint ~]# useradd -u 1000 -g 500 tarunika
Kiểm tra trong file /etc/passwd
sẽ như sau:
[root@tecmint ~]# cat /etc/passwd | grep tarunika tarunika:x:1000:500::/home/tarunika:/bin/bash
4. Thêm một người dùng vào nhiều nhóm
Tùy chọn ‘-G‘ được sử dụng để thêm 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ó dấu cách xen vào.
Trong ví dụ này ta đang thêm người dùng ‘tecmint‘ vào nhiều nhóm như admins, webadmin và developer.
[root@tecmint ~]# useradd -G admins,webadmin,developers tecmint
Kiểm tra trong file /etc/passwd
sẽ như sau:
[root@tecmint ~]# id tecmint uid=1001(tecmint) gid=1001(tecmint) groups=1001(tecmint),500(admins),501(webadmin),502(developers) context=root:system_r:unconfined_t:SystemLow-SystemHigh
5. Thêm người dùng mà không cần thư mục /home
Trong một số trường hợp, chúng ta không muốn chỉ định thư mục chính cho người dùng vì một số lý do bảo mật. Trong trường hợp này, khi người dùng đăng nhập vào một hệ thống vừa mới khởi động lại, thư mục chính của nó sẽ là root. Khi người dùng đó sử dụng lệnh su
, thư mục đăng nhập của nó sẽ là thư mục chính của người dùng trước đó.
Để tạo của người dùng mà không có thư mục chính của họ thì ta sử dụng tùy chọn ‘-M‘.
Ví dụ: lệnh sau sẽ tạo một người dùng ‘shilpi‘ không có thư mục chính.
[root@tecmint ~]# useradd -M shilpi
Kiểm tra trong file /etc/passwd
sẽ như sau:
Bây giờ hãy sử dụng lệnh ls
để xem có thư mục /home không nhé.
[root@tecmint ~]# ls -l /home/shilpi ls: cannot access /home/shilpi: No such file or directory
6. Tạo user có ngày hết hạn tài khoản
Theo mặc định, khi chúng ta thêm tài khoản người dùng bằng lệnh ‘useradd’ thì tài khoản đó không bao giờ hết hạn, tức là ngày hết hạn của họ được đặt thành 0.
Tuy nhiên, chúng tôi có thể đặt ngày hết hạn bằng tùy chọn ‘-e‘, đặt ngày ở định dạng YYYY-MM-DD
. Điều này rất hữu ích cho việc tạo tài khoản tạm thời trong một khoảng thời gian cụ thể.
Ở đây trong ví dụ này, chúng ta tạo một người dùng ‘aparna‘ có ngày hết hạn tài khoản là ngày 27 tháng 4 năm 2014 ở định dạng YYYY-MM-DD
.
[root@tecmint ~]# useradd -e 2014-03-27 aparna
Xác minh thời hạn của 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 như sau:
[root@tecmint ~]# chage -l aparna Last password change : Mar 28, 2014 Password expires : never Password inactive : never Account expires : Mar 27, 2014 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
7. Tạo user kèm ngày hết hạn cho mật khẩu
Đối số ‘-f‘ được sử dụng để xác định số ngày hết hạn cho mật khẩu. Mặc định thì giá trị hết hạn mật khẩu được đặt thành -1, có nghĩa là 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 tài khoản là 45 ngày đối với người dùng ‘tecmint’ bằng cách sử dụng các tùy chọn ‘-e‘ và ‘-f‘.
[root@tecmint ~]# useradd -e 2014-04-27 -f 45 tecmint
9. Thêm người dùng kèm một comment
Tùy chọn ‘-c‘ cho phép bạn thêm comment cho người dùng vừa tạo. Ví dụ như bạn cần ghi note lại thông tin gồm: tên đầy đủ, số điện thoại, v.v. của người dùng vào file /etc/passwd
. Comment có thể được thêm vào dưới dạng một dòng duy nhất mà không có bất kỳ khoảng trắng nào.
Ví dụ: lệnh sau sẽ thêm người dùng ‘mansi‘ và sẽ chèn tên đầy đủ của người dùng đó là "Manis Khurana" vào phần comment.
[root@tecmint ~]# useradd -c "Manis Khurana" mansi
Kiểm tra trong file /etc/passwd
sẽ như sau:
[root@tecmint ~]# tail -1 /etc/passwd mansi:x:1006:1008:Manis Khurana:/home/mansi:/bin/sh
8. Thay đổi Login Shell cho người dùng
Khi một phiên đăng nhập thành công thì login shell của người dùng đó cũng được mở theo. Nếu bạn muốn thay đổi login shell này thì có thể sử dụng đối số -s.
Trong ví dụ dưới đây mình đã thiết lập shell cho tài khoản useradd là Non-Login Shell.
[root@tecmint ~]# useradd -s /sbin/nologin tecmint
Kiểm tra trong file /etc/passwd
sẽ như sau:
[root@tecmint ~]# tail -1 /etc/passwd tecmint:x:1002:1002::/home/tecmint:/sbin/nologin
III. Các ví dụ sử dụng lệnh useradd trong Linux nâng cao
Dưới đây là 2 ví dụ nâng cao, sự kết hợp của nhiều tùy chọn trong lệnh useradd.
1. Thêm user tại thư mục home, default shell và custom comment
Lệnh sau sẽ tạo một người dùng ‘ravi‘ với thư mục chính là /var/www/tecmint
, shell mặc định là /bin/bash
và thêm thông tin comment cho người dùng.
[root@tecmint ~]# useradd -m -d /var/www/ravi -s /bin/bash -c "TecMint Owner" -U ravi
2. Thêm user tại thư mục home, custom Shell, custom comment và UID/GID
Lệnh tương tự như ví dụ trên, nhưng ở đây chúng ta định nghĩa shell là /bin/zsh
và UID và GID tùy chỉnh cho người dùng ‘tarunika‘. Trong đó ‘-u
‘ xác định UID của người dùng mới (tức là 1000) và ‘-g
‘ xác định GID (tức là 1000).
[root@tecmint ~]# useradd -m -d /var/www/tarunika -s /bin/zsh -c "TecMint Technical Writer" -u 1000 -g 1000 tarunika
Qua 2 ví dụ ở phần nâng cao này mình muốn nhấn mạnh rằng: Bạn có thể sử dụng các thông số tùy chọn ở phần 1 và gắn liên tiếp để tạo thành một lệnh tạo user nâng cao trong Linux.