15 ví dụ lệnh usermod trên Centos / Ubuntu / Debian / Fedora

Lệnh 'useradd' hoặc 'adduser' được sử dụng để tạo tài khoản người dùng trong các hệ thống Linux. Sau khi tạo tài khoản người dùng, trong một số tình huống mà chúng ta cần thay đổi các thuộc tính của một người dùng đã tồn tại như, thay đổi thư mục chủ của người dùng, tên đăng nhập, shell đăng nhập, ngày hết hạn mật khẩu, v.v., trong trường hợp đó lệnh 'usermod' được sử dụng.

Khi thực thi lệnh 'usermod' trong terminal, các tệp sau đây được sử dụng và ảnh hưởng:

  • /etc/passwd - Thông tin tài khoản người dùng.
  • /etc/shadow - Thông tin tài khoản bảo mật.
  • /etc/group - Thông tin tài khoản nhóm.
  • /etc/gshadow - Thông tin tài khoản nhóm bảo mật.
  • /etc/login.defs - Cấu hình bộ công cụ mật khẩu shadow.

Cú pháp cơ bản của lệnh: 

usermod [options] username

Yêu cầu

  • Có tài khoản người dùng đã tồn tại để thực hiện lệnh usermod.
  • Chỉ có người dùng siêu (root) được phép thực thi lệnh usermod.
  • Lệnh usermod có thể được thực thi trên bất kỳ bản phân phối Linux nào.
  • Phải có kiến thức cơ bản về lệnh usermod và các tùy chọn

Các tùy chọn của Usermod

Lệnh 'usermod' dễ sử dụng với nhiều tùy chọn để thay đổi một người dùng đã tồn tại. Hãy xem cách sử dụng lệnh usermod bằng cách thay đổi một số người dùng đã tồn tại trong hệ thống Linux thông qua các tùy chọn sau đây.

  • -c = Thêm trường bình luận cho tài khoản người dùng.
  • -d = Thay đổi thư mục cho bất kỳ tài khoản người dùng nào đã tồn tại.
  • -e = Đặt ngày hết hạn của tài khoản trong một khả năng cụ thể.
  • -g = Thay đổi nhóm chính cho một người dùng.
  • -G = Thêm các nhóm bổ sung.
  • -a =Thêm một nhóm nào đó vào một nhóm phụ.
  • -l = Thay đổi tên đăng nhập từ tecmint thành tecmint_admin.
  • -L = Khóa tài khoản người dùng. Điều này sẽ khóa mật khẩu để bạn không thể sử dụng tài khoản đó.
  • -m = Di chuyển nội dung của thư mục chủ từ thư mục chủ hiện có sang thư mục mới.
  • -p = Sử dụng mật khẩu không được mã hóa cho mật khẩu mới. (Không an toàn).
  • -s = Tạo một shell cụ thể cho tài khoản mới.
  • -u = Sử dụng để gán UID cho tài khoản người dùng trong khoảng từ 0 đến 999.
  • -U = Mở khóa các tài khoản người dùng. Điều này sẽ xóa khóa mật khẩu và cho phép chúng ta sử dụng tài khoản người dùng.

Trong bài viết này, chúng ta sẽ xem '15 lệnh usermod' với các ví dụ thực tế và cách sử dụng trong Linux, giúp bạn học và nâng cao kỹ năng sử dụng dòng lệnh của mình với những tùy chọn này.

Thêm thông tin vào tài khoản người dùng

Tùy chọn ‘-c‘ được sử dụng để đặt một ghi chú (thông tin) ngắn về tài khoản người dùng. Ví dụ, hãy thêm thông tin cho người dùng 'tecmint' bằng cách sử dụng lệnh sau. 

# usermod -c "This is Tecmint" tecmint

Sau khi thêm thông tin cho người dùng, ghi chú tương tự có thể được xem trong tệp /etc/passwd.

# grep -E --color 'tecmint' /etc/passwd
tecmint:x:500:500:This is Tecmint:/home/tecmint:/bin/sh

Thêm thông tin cho người dùng

  Thay đổi thư mục chủ của người dùng

Trong bước trước, chúng ta có thể thấy thư mục chủ của chúng ta nằm trong /home/tecmint/. Nếu chúng ta muốn thay đổi nó sang một thư mục khác, chúng ta có thể thay đổi bằng cách sử dụng tùy chọn -d với lệnh usermod.

Ví dụ, tôi muốn thay đổi thư mục chủ của chúng ta thành /var/www/, nhưng trước khi thay đổi, hãy kiểm tra thư mục chủ hiện tại của người dùng bằng cách sử dụng lệnh sau. 

# grep -E --color '/home/tecmint' /etc/passwd
tecmint:x:500:500:This is Tecmint:/home/tecmint:/bin/sh

Sau đó, thay đổi thư mục chủ từ /home/tecmint thành /var/www/ và xác nhận thư mục chủ sau khi thay đổi.

# usermod -d /var/www/ tecmint
# grep -E --color '/var/www/' /etc/passwd
tecmint:x:500:500:This is Tecmint:/var/www:/bin/sh

Thay đổi thư mục chính của người dùng

Đặt ngày hết hạn cho tài khoản người dùng

Tùy chọn ‘-e‘ được sử dụng để đặt ngày hết hạn cho tài khoản người dùng với định dạng ngày YYYY-MM-DD. Trước khi đặt ngày hết hạn cho một người dùng, hãy kiểm tra trạng thái hết hạn hiện tại của tài khoản bằng cách sử dụng lệnh ‘chage‘ (thay đổi thông tin ngày hết hạn mật khẩu người dùng). 

# chage -l tecmint
Last password change : Nov 02, 2014
Password expires : never
Password inactive : never
Account expires : Dec 01, 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

Trạng thái hết hạn của người dùng ‘tecmint‘ là 1 tháng 12 năm 2014, hãy thay đổi thành 1 tháng 11 năm 2014 bằng cách sử dụng tùy chọn ‘usermod -e‘ và xác nhận ngày hết hạn bằng lệnh ‘chage‘.

# usermod -e 2014-11-01 tecmint
# chage -l tecmint
Last password change : Nov 02, 2014
Password expires : never
Password inactive : never
Account expires : Nov 01, 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

Đặt ngày hết hạn tài khoản người dùng

Thay đổi nhóm chính của người dùng

Để thiết lập hoặc thay đổi nhóm chính cho một người dùng, chúng ta sử dụng tùy chọn ‘-g‘ với lệnh usermod. Trước khi thay đổi nhóm chính người dùng, hãy đảm bảo kiểm tra nhóm hiện tại cho người dùng tecmint_test. 

# id tecmint_test
uid=501(tecmint_test) gid=502(tecmint_test) groups=502(tecmint_test)

Bây giờ, hãy đặt nhóm 'babin' làm nhóm chính cho người dùng 'tecmint_test' và xác nhận các thay đổi.

# usermod -g babin tecmint_test
# id tecmint_test
uid=501(tecmint_test) gid=502(babin) groups=502(tecmint_test)

Thay đổi nhóm người dùng chính

Thêm nhóm cho người dùng hiện có

Nếu bạn muốn thêm một nhóm mới có tên là 'tecmint_test0' cho người dùng 'tecmint', bạn có thể sử dụng tùy chọn '-G' với lệnh usermod như dưới đây. 

# usermod -G tecmint_test0 tecmint
# id tecmint

Thêm nhóm vào người dùng

Lưu ý: Cẩn thận khi thêm các nhóm mới vào người dùng hiện có bằng tùy chọn '-G' một mình, nó sẽ gỡ bỏ tất cả các nhóm hiện có mà người dùng thuộc về. Vì vậy, luôn luôn thêm tùy chọn '-a' (append) với tùy chọn '-G' để thêm hoặc gắn thêm các nhóm mới.

Thêm nhóm bổ sung và nhóm chính cho người dùng

Nếu bạn muốn thêm người dùng vào bất kỳ một trong các nhóm bổ sung, bạn có thể sử dụng các tùy chọn '-a' và '-G'. Ví dụ, ở đây chúng tôi sẽ thêm tài khoản người dùng 'tecmint_test0' vào nhóm người dùng 'wheel'. 

# usermod -a -G wheel tecmint_test0
# id tecmint_test0

Vì vậy, người dùng 'tecmint_test0' sẽ thuộc nhóm chính và cũng thuộc nhóm phụ (wheel). Điều này cho phép tài khoản người dùng thông thường của tôi thực thi bất kỳ lệnh nào yêu cầu đặc quyền root trên hệ thống Linux.

eg : sudo service httpd restart

Thêm nhiều nhóm cho người dùng

7.Thay đổi tên đăng nhập của người dùng

Để thay đổi tên đăng nhập của người dùng hiện có, chúng ta có thể sử dụng tùy chọn '-l' (tên đăng nhập mới). Trong ví dụ dưới đây, bạn thay đổi tên đăng nhập từ 'tecmint' thành 'tecmint_admin'. Vì vậy, tên người dùng 'tecmint' đã được đổi thành tên mới 'tecmint_admin'.

# usermod -l tecmint_admin tecmint

Bây giờ, kiểm tra tài khoản 'tecmint', nó sẽ không còn tồn tại vì chúng ta đã thay đổi thành 'tecmint_admin'. 

# id tecmint

Kiểm tra tài khoản 'tecmint_admin', nó sẽ vẫn tồn tại với cùng UID và nhóm hiện có mà chúng ta đã thêm trước đó.

# id tecmint_admin

Thay đổi tên đăng nhập người dùng

8.Khóa tài khoản người dùng

Để khóa tài khoản người dùng hệ thống, chúng ta có thể sử dụng tùy chọn '-L' (khóa). Sau khi tài khoản bị khóa, chúng ta sẽ không thể đăng nhập bằng mật khẩu và bạn sẽ thấy một dấu '!' được thêm trước mật khẩu đã được mã hóa trong tệp /etc/shadow, có nghĩa là mật khẩu đã bị vô hiệu hóa. 

# usermod -L babin

Kiểm tra tài khoản bị khóa.

# grep -E --color 'babin' cat /etc/shadow

Khóa tài khoản người dùng

Mở khóa tài khoản người dùng

Tùy chọn '-U' được sử dụng để mở khóa người dùng bị khóa, điều này sẽ loại bỏ dấu '!' trước mật khẩu đã được mã hóa. 

# grep -E --color 'babin' /etc/shadow
# usermod -U babin

Xác minh tài khoản sau khi mở khóa.

# grep -E --color 'babin' /etc/shadow

Mở khóa tài khoản người dùng

Di chuyển thư mục gốc của người dùng đến vị trí mới

Giả sử bạn có một tài khoản người dùng với tên 'pinky' và thư mục gốc là '/home/pinky', bạn muốn di chuyển nó đến vị trí mới là '/var/pinky'. Bạn có thể sử dụng các tùy chọn '-d' và '-m' để di chuyển các tệp tin người dùng hiện có từ thư mục gốc hiện tại đến thư mục gốc mới. 

Kiểm tra tài khoản và thư mục gốc hiện tại của nó. 

# grep -E --color 'pinky' /etc/passwd

Sau đó, liệt kê các tệp tin thuộc sở hữu của người dùng pinky. 

# ls -l /home/pinky/

Bây giờ chúng ta sẽ di chuyển thư mục gốc từ '/home/pinky' đến '/var/pinky'. 

# usermod -d /var/pinky/ -m pinky

Tiếp theo, xác minh sự thay đổi thư mục. 

# grep -E --color 'pinky' /etc/passwd

Kiểm tra các tệp tin trong '/home/pinky'. Ở đây, chúng ta đã di chuyển các tệp tin sử dụng tùy chọn -m nên sẽ không còn tệp tin. Các tệp tin của người dùng pinky sẽ nằm dưới '/var/pinky'.

# ls -l /home/pinky/
# ls -l /var/pinky/

Di chuyển thư mục chính của người dùng

Tạo mật khẩu không được mã hóa cho người dùng

Để tạo một mật khẩu không được mã hóa, chúng ta sử dụng tùy chọn '-p' (mật khẩu). Ví dụ, tôi đang đặt mật khẩu mới là 'redhat' cho người dùng pinky. 

# usermod -p redhat pinky

Sau khi đặt mật khẩu, kiểm tra tệp shadow để xem liệu nó có trong định dạng đã được mã hóa hay không. 

# grep -E --color 'pinky' /etc/shadow

Tạo mật khẩu người dùng không được mã hóa

Lưu ý: Bạn đã thấy trong hình ảnh trên, mật khẩu được hiển thị rõ ràng cho tất cả mọi người. Vì vậy, tùy chọn này không được khuyến nghị sử dụng, vì mật khẩu sẽ hiển thị cho tất cả người dùng.

Thay đổi Shell của người dùng

Shell đăng nhập của người dùng có thể được thay đổi hoặc xác định trong quá trình tạo người dùng bằng lệnh useradd hoặc thay đổi bằng lệnh 'usermod' sử dụng tùy chọn '-s' (shell). Ví dụ, người dùng 'babin' mặc định có shell /bin/bash, giờ tôi muốn thay đổi thành /bin/sh. 

# grep -E --color 'babin' /etc/passwd
# usermod -s /bin/sh babin

Sau khi thay đổi shell của người dùng, hãy kiểm tra shell của người dùng bằng lệnh sau.

# grep -E --color 'babin' /etc/passwd

Thay đổi Shell đăng nhập người dùng

Thay đổi User ID (UID)

Trong ví dụ dưới đây, bạn có thể thấy tài khoản người dùng của tôi là 'babin' có UID là 502, giờ tôi muốn thay đổi thành 888 làm UID của tôi. Chúng ta có thể gán UID từ 0 đến 999. 

# grep -E --color 'babin' /etc/passwd
OR
# id babin

Giờ, hãy thay đổi UID cho người dùng babin bằng cách sử dụng tùy chọn '-u' (uid) và xác minh các thay đổi.

# usermod -u 888 babin
# id babin

Thay đổi UID người dùng

Sửa đổi tài khoản người dùng với nhiều tùy chọn

Ở đây, có một người dùng Jack và muốn sửa đổi thư mục gốc, shell, ngày hết hạn, nhãn, UID. Nhóm của anh ấy cùng một lúc bằng một lệnh duy nhất với tất cả các tùy chọn trên.

Người dùng Jack có thư mục gốc mặc định là /home/jack, giờ muốn thay đổi thành /var/www/html và gán shell của anh ta là bash, đặt ngày hết hạn là ngày 10 tháng 12 năm 2014, thêm nhãn mới là "This is jack", thay đổi UID thành 555 và anh ta sẽ là thành viên của nhóm apple. 

Hãy xem cách sửa đổi tài khoản jack bằng nhiều tùy chọn.

# usermod -d /var/www/html/ -s /bin/bash -e 2014-12-10 -c "This is Jack" -u 555 -aG apple jack

Sau đó, kiểm tra các thay đổi về UID và thư mục gốc. 

# grep -E --color 'jack' /etc/passwd

Kiểm tra hết hạn tài khoản. 

# chage -l jack

Kiểm tra các nhóm mà jack đã là thành viên.

# grep -E --color 'jack' /etc/group

Sử dụng nhiều tùy chọn với usermod

Thay đổi UID và GID của người dùng

Chúng ta có thể thay đổi UID và GID của một người dùng hiện tại. Để thay đổi thành GID mới, chúng ta cần một nhóm hiện có. Ở đây đã có một tài khoản có tên là orange với GID là 777.

Giờ đây, tài khoản người dùng jack muốn được gán UID là 666 và GID là Orange (777).

Kiểm tra UID và GID hiện tại trước khi thay đổi. 

# id jack

Thay đổi UID và GID. 

# usermod -u 666 -g 777 jack

Kiểm tra các thay đổi.

# id jack

Thay đổi User UID và GID

Mọi người cùng tìm kiếm: usermod, usermod centos