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.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

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/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.

Cùng chuyên mục:

Hướng dẫn cấu hình Mail Server trên CentOs 6.5

Hướng dẫn cấu hình Mail Server trên CentOs 6.5

Cách dùng lệnh Users trong Linux để xem user đang online

Cách dùng lệnh Users trong Linux để xem user đang online

Nếu bạn đang là quản trị viên thì việc quản lý thông tin / xem…

Cách sử dụng lệnh Wall trong Linux

Cách sử dụng lệnh Wall trong Linux

Wall là một công cụ dòng lệnh giúp hiển thị thông báo đến tất cả…

Cách dùng lệnh Whereis trong Linux

Cách dùng lệnh Whereis trong Linux

Whereis là một tiện ích dòng lệnh command line, nó cho phép bạn tìm ..

Cách sử dụng lệnh Which trong Linux

Cách sử dụng lệnh Which trong Linux

Linux dùng lệnh which để xác định vị trí file thực thi của lệnh mà…

Cách sử dụng lệnh whoami trong Linux

Cách sử dụng lệnh whoami trong Linux

Giống như tên gọi của nó, lệnh whoami in tên người dùng đang chạy ...

Cách dùng lệnh zcat trong Linux

Cách dùng lệnh zcat trong Linux

Mặc dù tính năng nén file rất hữu ích vì nó giúp ta tiết kiệm…

Hiểu rõ hơn về chmod 777 trong Linux

Hiểu rõ hơn về chmod 777 trong Linux

Bạn đang xây dựng một website và sử dụng tính năng upload ...

Cách sử dụng lệnh tail trong Linux

Cách sử dụng lệnh tail trong Linux

Mặc định thì lệnh tail sẽ hiển thị 10 dòng cuối cùng của file, thông…

Cách sử dụng lệnh Head trong Linux

Cách sử dụng lệnh Head trong Linux

Trong quá trình quản trị dữ liệu trên Linux đôi khi bạn muốn xem nhanh…

Cách sử dụng lệnh Whatis trong Linux

Cách sử dụng lệnh Whatis trong Linux

Trong bài này chúng ta sẽ tìm hiểu lệnh whatis trong ...

Cách sử dụng lệnh kill trong Linux

Cách sử dụng lệnh kill trong Linux

Linux là một hệ điều hành rất nhanh nhưng không phải lúc nào nó không…

Cách dùng lệnh who trong Linux

Cách dùng lệnh who trong Linux

Who là một công cụ dòng lệnh command-line, được ...

Cách dùng lệnh basename trong Linux

Cách dùng lệnh basename trong Linux

basename là một tiện ích dòng lệnh (command line) dùng để lấy ...

Cách sử dụng lệnh gzip trên Linux

Cách sử dụng lệnh gzip trên Linux

Gzip là một trong những thuật toán nén file phổ biến nhất, nó cho phép…

Cách dùng lệnh wait trong Linux

Cách dùng lệnh wait trong Linux

Wait là lệnh dùng để đợi một thời gian cho tới khi công việc nào…

Cách dùng lệnh ping trong Linux

Cách dùng lệnh ping trong Linux

Lệnh ping là một trong những công cụ được sử dụng nhiều nhất để khắc…

Cách dùng lệnh sleep trong Linux

Cách dùng lệnh sleep trong Linux

sleep là một tiện ích command line cho phép lập trình viên ..

Các ví dụ học Bash Script trong Linux cơ bản nhất

Các ví dụ học Bash Script trong Linux cơ bản nhất

Bash Script đuọc xem là mã code lập trình trên Linux ...

Vòng lặp until trong Shell Script

Vòng lặp until trong Shell Script

Top