Lệnh usermod trong Linux là công cụ dùng để chỉnh sửa thông tin các tài khoản người dùng đã tồn tại, hỗ trợ quản trị viên cập nhật nhóm, UID, thư mục home, shell và trạng thái tài khoản một cách linh hoạt. Trong bài viết này, mình sẽ cùng bạn tìm hiểu chi tiết về cách sử dụng, những ví dụ thực tế và lỗi thường gặp khi sử dụng lệnh usermod để quản lý vòng đời tài khoản trên hệ thống Linux.
Những điểm chính
- Khái niệm: Hiểu rõ lệnh usermod là công cụ dùng để chỉnh sửa tài khoản người dùng, qua đó hỗ trợ quản trị viên tổ chức và phân quyền trên hệ thống dễ dàng hơn.
- Cú pháp và các tùy chọn: Nắm vững cú pháp cơ bản và các tùy chọn quan trọng, giúp bạn kiểm soát chi tiết các thuộc tính cần thay đổi như nhóm, shell, thư mục home và trạng thái tài khoản.
- Các ví dụ thực hành: Biết thêm các ví dụ thực tế, giúp bạn áp dụng lệnh usermod một cách linh hoạt, từ việc thêm người dùng vào nhóm sudo đến thay đổi thư mục home và khóa/mở khóa tài khoản.
- Các lỗi thường gặp và cách khắc phục: Nhận diện được các lỗi phổ biến, hỗ trợ chẩn đoán và xử lý sự cố một cách nhanh chóng, hiệu quả.
- Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến lệnh usermod trong Linux.
Lệnh usermod trong Linux là gì?
Usermod trong Linux là tiện ích dòng lệnh dùng để chỉnh sửa thông tin của tài khoản người dùng đã tồn tại, cho phép thay đổi các thuộc tính như nhóm chính, nhóm phụ, thư mục home, shell đăng nhập, UID, tên đăng nhập hoặc trạng thái khóa/mở khóa tài khoản mà không cần xóa và tạo lại user. Khi thực thi usermod [tùy_chọn] USERNAME, hệ thống sẽ cập nhật các file quản lý tài khoản như /etc/passwd, /etc/shadow, /etc/group theo các tùy chọn được cung cấp. Từ đó, lệnh này hỗ trợ quản trị viên điều chỉnh cấu hình và quyền hạn của user hiện có một cách linh hoạt, phù hợp với thay đổi về tổ chức, phân quyền hoặc cấu trúc hệ thống.

Trong quản lý vòng đời tài khoản trên Linux, usermod đảm nhiệm vai trò chỉnh sửa các tài khoản người dùng đã tồn tại, bổ sung cho useradd (tạo user mới) và userdel (xóa user không còn sử dụng). Thay vì xóa rồi tạo lại tài khoản khi cần thay đổi nhóm, shell đăng nhập, thư mục home hoặc các thuộc tính liên quan, quản trị viên có thể sử dụng usermod để cập nhật trực tiếp thông tin user. Tùy theo tùy chọn được áp dụng, usermod sẽ điều chỉnh dữ liệu trong các file quản lý như /etc/passwd, /etc/shadow hoặc /etc/group, qua đó hỗ trợ tái cấu trúc phân quyền, nhóm và cấu hình đăng nhập của người dùng hiện có mà vẫn giữ nguyên UID và các dữ liệu gắn liền với tài khoản.
Cách sử dụng lệnh usermod
1. Cú pháp chung của usermod
Cú pháp cơ bản của usermod được sử dụng dưới dạng:
usermod [OPTIONS] USERNAMETrong đó:
- OPTIONS: Là các tham số cho phép bạn thay đổi nhiều thuộc tính của tài khoản như shell đăng nhập, thư mục home, nhóm chính, nhóm phụ, UID, mô tả hoặc trạng thái khóa/mở khóa tài khoản.
- USERNAME: Là tên tài khoản người dùng đã tồn tại mà bạn muốn chỉnh sửa.
Lệnh usermod cần được thực thi bởi tài khoản root hoặc user có quyền sudo, vì nó trực tiếp cập nhật thông tin trong các tệp quản lý tài khoản quan trọng như /etc/passwd, /etc/shadow và /etc/group. Tác động đến cách người dùng đăng nhập và quyền truy cập trên hệ thống.
2. Các tùy chọn thường dùng của usermod
Các tùy chọn của usermod cho phép quản trị viên điều chỉnh linh hoạt nhiều khía cạnh của tài khoản người dùng, từ shell đăng nhập, thư mục home, nhóm, UID đến trạng thái khóa/mở khóa và thông tin mô tả. Bảng dưới đây tóm tắt những tùy chọn thường dùng nhất khi làm việc với lệnh usermod:
| Tùy chọn | Chức năng |
-s SHELL | Thay đổi shell đăng nhập mặc định của user, ví dụ /bin/bash, /bin/sh, zsh hoặc shell khác tùy cấu hình hệ thống. |
-d HOME_DIR | Chỉ định thư mục home mới cho user, nhưng không tự di chuyển dữ liệu từ home cũ nếu không kết hợp với -m. |
-m | Di chuyển toàn bộ file hiện có từ thư mục home cũ sang thư mục home mới, thường dùng cùng -d khi thay đổi đường dẫn home. |
-g GROUP | Đặt nhóm chính (primary group) mới cho user, cập nhật lại GID mặc định khi user tạo file. |
-G G1,G2 | Thiết lập danh sách nhóm phụ (secondary groups) cho user, thay thế toàn bộ danh sách nhóm phụ hiện tại bằng các nhóm được chỉ định. |
-aG GROUPS | Thêm user vào một hoặc nhiều nhóm phụ mới mà không xóa các nhóm phụ đang có; thường dùng để cấp thêm quyền như sudo, Docker,… |
-l NEWNAME | Đổi tên đăng nhập (username) từ tên cũ sang tên mới, đồng thời cập nhật entry trong /etc/passwd và các file liên quan. |
-u UID | Gán UID mới cho user; có thể kết hợp -o khi cần cho phép UID trùng (non-unique) trong một số kịch bản đặc thù. |
-e YYYY-MM-DD | Thiết lập ngày hết hạn tài khoản, sau thời điểm này user sẽ bị vô hiệu hóa đăng nhập cho đến khi giá trị được thay đổi lại. |
-L | Khóa tài khoản bằng cách khóa mật khẩu trong /etc/shadow, chặn user đăng nhập nhưng không xóa dữ liệu hay cấu hình. |
-U | Mở khóa tài khoản đã bị -L, khôi phục khả năng đăng nhập nếu các điều kiện khác vẫn hợp lệ. |
-c "COMMENT" | Cập nhật trường mô tả (GECOS comment) cho tài khoản trong /etc/passwd, giúp lưu thông tin bổ sung về người dùng. |
Thao tác chỉnh sửa user với usermod
- Ví dụ 1: Thay đổi shell đăng nhập
- Ví dụ 2: Thêm user vào nhóm phụ
- Ví dụ 3: Khóa và mở khóa tài khoản user
- Ví dụ 4: Đặt ngày hết hạn cho tài khoản
- Ví dụ 5: Đổi thư mục home và di chuyển dữ liệu
- Ví dụ 6: Đổi username với usermod
- Ví dụ 7: Đổi UID cho user
- Ví dụ 8: Đổi UID trùng
- Ví dụ 9: Cập nhật comment cho tài khoản
- Ví dụ 10: Cấu hình số ngày inactive sau khi mật khẩu hết hạn
- Ví dụ 11: Áp dụng usermod trong môi trường chroot
Ví dụ 1: Thay đổi shell đăng nhập
Khi cần thay đổi môi trường shell mặc định của một user để phù hợp với thói quen sử dụng hoặc yêu cầu của ứng dụng, bạn có thể cập nhật trực tiếp login shell trong thông tin tài khoản. Để chuyển shell đăng nhập của user vietnix sang /bin/bash, bạn có thể sử dụng lệnh:
usermod -s /bin/bash vietnix
Tùy chọn -s /bin/bash đặt /bin/bash làm shell đăng nhập mới của user và thay đổi này có thể được kiểm tra lại thông qua lệnh getent passwd vietnix hoặc đọc file /etc/passwd.
Ví dụ 2: Thêm user vào nhóm phụ
Trường hợp user cần được cấp thêm quyền truy cập tài nguyên hoặc thực thi lệnh đặc thù (như sudo hay docker) mà không thay đổi nhóm chính, bạn có thể thêm user vào các nhóm phụ tương ứng. Để bổ sung user vietnix vào các nhóm phụ sudo và docker mà vẫn giữ nguyên các nhóm phụ hiện tại, bạn sử dụng lệnh:
usermod -aG sudo,docker vietnix
Ở đây, -aG sudo,docker thêm vietnix vào hai nhóm phụ sudo và docker. Nếu bỏ tùy chọn -a, danh sách nhóm phụ sẽ bị thay thế bằng đúng các nhóm được chỉ định sau -G.
Ví dụ 3: Khóa và mở khóa tài khoản user
Trong những tình huống cần tạm thời dừng quyền đăng nhập của một tài khoản mà vẫn giữ nguyên dữ liệu và cấu hình, bạn có thể sử dụng cơ chế khóa/mở khóa tài khoản qua usermod. Để khóa tài khoản vietnix, bạn có thể sử dụng lệnh:
usermod -L vietnixSau khi thực hiện, user vietnix sẽ bị vô hiệu hóa đăng nhập cho đến khi được mở khóa lại bằng tùy chọn -U. Khi cần khôi phục quyền đăng nhập cho tài khoản này, bạn sử dụng:
usermod -U vietnixLệnh trên sẽ mở khóa tài khoản, cho phép user đăng nhập trở lại nếu các thông tin xác thực khác vẫn hợp lệ.
Ví dụ 4: Đặt ngày hết hạn cho tài khoản
Đối với các tài khoản dùng tạm thời cho dự án, cộng tác viên hoặc môi trường thử nghiệm, việc cấu hình ngày hết hạn giúp kiểm soát vòng đời tài khoản và giảm rủi ro tồn tại tài khoản không còn sử dụng. Ví dụ, để đặt ngày hết hạn cho user vietnix là 31/12/2025, bạn sử dụng lệnh:
usermod -e 2025-12-31 vietnixTùy chọn -e 2025-12-31 cấu hình thời điểm tài khoản vietnix tự động hết hạn sau ngày 31/12/2025. Bạn có thể kiểm tra lại thông tin này bằng lệnh chage -l vietnix hoặc đọc trường tương ứng trong file /etc/shadow.
Ví dụ 5: Đổi thư mục home và di chuyển dữ liệu
Khi thay đổi cấu trúc lưu trữ hoặc chuyển dữ liệu user sang phân vùng, thư mục mới, bạn có thể đồng thời cập nhật đường dẫn home và di chuyển toàn bộ dữ liệu hiện có để đảm bảo môi trường làm việc nhất quán. Để đặt thư mục home mới cho user vietnix là /data/users/vietnix và di chuyển toàn bộ dữ liệu từ home cũ sang vị trí mới, bạn có thể sử dụng lệnh:
usermod -d /data/users/vietnix -m vietnixTrong ví dụ này, -d /data/users/vietnix chỉ định thư mục home mới, còn -m thực hiện di chuyển dữ liệu, nên đảm bảo user không chạy tiến trình nào trong lúc thao tác để tránh lỗi hoặc dữ liệu bị khóa.
Ví dụ 6: Đổi username với usermod
Khi cần chuẩn hóa lại tên đăng nhập cho phù hợp với quy ước đặt tên hoặc thay đổi nhân sự nhưng vẫn muốn giữ nguyên UID, group và dữ liệu cũ, quản trị viên có thể dùng usermod để đổi username trực tiếp. Giả sử, để đổi tên đăng nhập từ vps sang vietnix-cloud, bạn sử dụng lệnh:
sudo usermod -l vietnix-cloud vpsTùy chọn -l nhận tên đăng nhập mới và áp dụng lên tài khoản hiện có, giúp cập nhật username mà không cần tạo user mới rồi di chuyển quyền và dữ liệu thủ công.
Ví dụ 7: Đổi UID cho user
Trong một số trường hợp đồng bộ quyền trên nhiều máy hoặc chuẩn hóa dải UID cho nhóm người dùng, việc thay đổi UID là cần thiết để tránh xung đột quyền sở hữu file trên hệ thống. Để đổi UID của user vps sang 2024, bạn có thể sử dụng lệnh:
sudo usermod -u 2024 vpsSau khi thực hiện, bạn nên kiểm tra lại bằng id vps và cân nhắc chạy thêm các lệnh chown tương ứng nếu cần đồng bộ lại quyền sở hữu file theo UID mới.
Ví dụ 8: Đổi UID trùng
Một số kịch bản lab, môi trường test hoặc tình huống gom quyền đặc biệt có thể yêu cầu hai tài khoản dùng chung một UID, khi đó cần kích hoạt chế độ UID không duy nhất. Để đặt UID của user vps trùng với UID 1000 đang dùng cho user vietnix, bạn có thể sử dụng lệnh:
sudo usermod -o -u 1000 vpsTùy chọn -o (hoặc --non-unique) cho phép cấu hình UID trùng, nhưng nên giới hạn trong những môi trường kiểm soát vì có thể gây khó khăn khi truy vết quyền sở hữu và nhật ký hoạt động.
Ví dụ 9: Cập nhật comment cho tài khoản
Khi cần bổ sung thông tin mô tả như họ tên, bộ phận, số điện thoại để hỗ trợ quản lý và nhận diện tài khoản, bạn có thể dùng trường comment trong /etc/passwd. Giả sử, để thêm mô tả “Vietnix DevOps Engineer” cho user vietnix, bạn có thể sử dụng lệnh:
sudo usermod -c "Vietnix DevOps Engineer" vietnixTrường comment này sẽ xuất hiện ở cột GECOS trong entry của user, giúp dễ dàng tra cứu thông tin khi quản lý nhiều tài khoản trên hệ thống.
Ví dụ 10: Cấu hình số ngày inactive sau khi mật khẩu hết hạn
Đối với các môi trường yêu cầu chính sách mật khẩu chặt chẽ, việc quy định số ngày tài khoản bị vô hiệu hóa sau khi mật khẩu hết hạn giúp giảm rủi ro tài khoản không được quản lý. Để đặt số ngày inactive sau khi password hết hạn cho user vietnix là 30 ngày, bạn sử dụng lệnh:
sudo usermod -f 30 vietnixTùy chọn -f quy định sau bao nhiêu ngày kể từ khi mật khẩu hết hạn thì tài khoản bị vô hiệu hóa vĩnh viễn, và thông tin này có thể được kiểm tra lại bằng chage -l vietnix.
Ví dụ 11: Áp dụng usermod trong môi trường chroot
Khi hệ thống triển khai cơ chế chroot hoặc container hóa, đôi khi cần chỉnh sửa user bên trong một cây thư mục hệ thống khác với root hiện tại, khi đó bạn có thể chỉ định thư mục chroot cho usermod. Để áp dụng thay đổi user bên trong thư mục chroot /mnt/chroot, bạn sử dụng lệnh:
sudo usermod -R /mnt/chroot -e 2099-08-08 hostingTùy chọn -R /mnt/chroot yêu cầu usermod làm việc với file cấu hình tài khoản bên trong thư mục chroot, kết hợp với -e để đặt ngày hết hạn cho user hosting trong môi trường đó.
Lỗi thường gặp khi dùng usermod
1. “Usermod: user is currently logged in”
Lỗi “usermod: user is currently logged in” thường xuất hiện khi cố gắng đổi UID, di chuyển thư mục home hoặc thay đổi thông tin quan trọng của tài khoản trong khi user đó vẫn đang đăng nhập hoặc còn tiến trình đang chạy. Khi đó, hệ thống khóa một số thao tác để tránh tình trạng tiến trình sử dụng thông tin tài khoản cũ trong khi cấu hình đã thay đổi.
Để xử lý, trước tiên bạn kiểm tra các tiến trình của user bằng lệnh ps -u username hoặc các công cụ tương đương. Sau đó, bạn kết thúc tiến trình bằng pkill -u username trước khi chạy lại usermod. Trong môi trường sản xuất, bạn nên lên lịch bảo trì và thông báo trước cho người dùng để thao tác không ảnh hưởng đến phiên làm việc đang diễn ra.
2. Lỗi khi đổi UID hoặc di chuyển thư mục home
Khi đổi UID hoặc di chuyển thư mục home, đặc biệt với user đang chạy dịch vụ (web server, database, ứng dụng nền), nguy cơ lớn nhất là làm lệch quyền sở hữu file. Việc này khiến dịch vụ không truy cập được dữ liệu hoặc sinh ra các file không còn gắn với UID/GID mong muốn. Thao tác trong lúc tài khoản còn tiến trình hoạt động cũng có thể dẫn đến lỗi phân quyền, gây gián đoạn dịch vụ.
Để tránh lỗi này, bạn cần là đảm bảo user không có tiến trình đang chạy bằng cách kiểm tra với ps -u username hoặc thực hiện các thay đổi này trong single-user mode/maintenance mode khi áp dụng trên hệ thống quan trọng. Sau khi đổi UID hoặc thư mục home, bạn nên rà soát và đồng bộ lại quyền sở hữu file bằng lệnh find kết hợp chown để đảm bảo toàn bộ dữ liệu thuộc về UID/GID mới và các dịch vụ liên quan hoạt động ổn định trở lại.

Câu hỏi thường gặp
Usermod khác gì useradd và userdel trong quản lý tài khoản?
Usermod dùng để chỉnh sửa thông tin tài khoản đã tồn tại, trong khi useradd tạo tài khoản mới và userdel xóa tài khoản khỏi hệ thống. Ba lệnh này kết hợp thành chuỗi thao tác quản lý vòng đời tài khoản bao gồm: Tạo mới, chỉnh sửa khi có thay đổi và xóa khi không còn sử dụng.
Khi nào nên dùng usermod -aG thay vì usermod -G?
usermod -aG được dùng khi muốn thêm user vào một hoặc nhiều nhóm phụ mới nhưng vẫn giữ nguyên các nhóm phụ hiện có. Nếu chỉ dùng -G mà không có -a, danh sách nhóm phụ sẽ bị ghi đè, có thể làm mất các quyền đã được cấp trước đó.
Tại sao nhận lỗi “usermod: user is currently logged in” và xử lý thế nào?
Lỗi này xuất hiện khi user đang đăng nhập hoặc còn tiến trình hoạt động, khiến hệ thống chặn các thay đổi nhạy cảm như đổi UID hoặc di chuyển thư mục home. Cách xử lý là kiểm tra và dừng toàn bộ tiến trình của user bằng ps -u username và pkill -u username, sau đó mới chạy lại lệnh usermod.
Khi nắm vững cách dùng lệnh usermod, quản trị viên có thể chuẩn hóa thông tin tài khoản, tối ưu phân quyền và xử lý các tình huống thay đổi nhân sự, dự án hoặc cấu trúc hệ thống mà không ảnh hưởng đến dữ liệu hiện có. Dựa trên các ví dụ và lưu ý lỗi thường gặp trong bài, bạn có thể áp dụng usermod một cách an toàn, kiểm soát tốt hơn quyền truy cập và trạng thái tài khoản trên môi trường Linux thực tế. Cảm ơn bạn đã theo dõi bài viết.




