Quản lý User và Group
Cấu trúc User trong Linux
Các file quan trọng
/etc/passwd — Thông tin user
cat /etc/passwd
# format: username:x:UID:GID:comment:home_dir:shell
# sontn:x:1001:1001:Son Nguyen:/home/sontn:/bin/bash
# nginx:x:101:101:nginx user:/var/cache/nginx:/sbin/nologin
# ↑ không có login shell
/etc/shadow — Password hash
sudo cat /etc/shadow # chỉ root đọc được
# format: username:password_hash:last_change:min:max:warn:inactive:expire
# sontn:$6$salt$hashedpassword...:19711:0:99999:7:::
/etc/group — Thông tin group
cat /etc/group
# format: groupname:x:GID:members
# docker:x:999:sontn,deployer
# sudo:x:27:sontn
Xem thông tin user nhanh
whoami # tên user hiện tại
id # uid, gid, groups đầy đủ
id sontn # thông tin user cụ thể
groups # danh sách group của user hiện tại
w # ai đang login và đang làm gì
who # danh sách user đang login
last # lịch sử login
last sontn # lịch sử login của user sontn
getent passwd sontn # thông tin user từ database (kể cả LDAP)
Quản lý User
Tạo user
# Cơ bản
sudo useradd sontn
# Đầy đủ options
sudo useradd \
-m \ # tạo home directory
-s /bin/bash \ # bash shell
-c "Son Nguyen" \ # comment/display name
-G docker,sudo \ # thêm vào group bổ sung
sontn
# Interactive wizard (Ubuntu)
sudo adduser sontn
Đặt và quản lý password
sudo passwd sontn # đặt password cho user
passwd # đổi password của chính mình
sudo passwd -e sontn # force đổi password lần login tiếp
sudo passwd -l sontn # lock tài khoản (disable login)
sudo passwd -u sontn # unlock tài khoản
sudo passwd -S sontn # xem trạng thái password
Sửa user
sudo usermod -aG docker sontn # thêm vào group docker (PHẢI có -a)
sudo usermod -aG sudo sontn # cấp quyền sudo
sudo usermod -s /bin/zsh sontn # đổi shell
sudo usermod -l newname oldname # đổi tên user
sudo usermod -L sontn # lock tài khoản
sudo usermod -U sontn # unlock tài khoản
sudo usermod -d /new/home sontn # đổi home directory
usermod -G vs usermod -aG
usermod -G docker sontn → xoá user khỏi tất cả group khác, chỉ giữ docker.
usermod -aG docker sontn → append, chỉ thêm vào docker, không xoá group cũ.
Luôn dùng -aG khi muốn thêm group!
Xoá user
sudo userdel sontn # xoá user (giữ home dir)
sudo userdel -r sontn # xoá user VÀ home dir + mail spool
Quản lý Group
# Tạo group
sudo groupadd devops
sudo groupadd -g 2000 devops # chỉ định GID
# Quản lý thành viên
sudo gpasswd -a sontn devops # thêm sontn vào group devops
sudo gpasswd -d sontn devops # xoá sontn khỏi group devops
sudo gpasswd -A sontn devops # đặt sontn làm admin của group
# Xoá group
sudo groupdel devops
# Kiểm tra
getent group devops # thành viên của group
cat /etc/group | grep devops
sudo — Leo thang đặc quyền
# Dùng sudo
sudo apt update # chạy với quyền root
sudo -u nginx ls /var/cache/nginx # chạy với tư cách user khác
sudo -i # mở shell root hoàn toàn
sudo -l # xem mình được sudo những gì
sudo !! # chạy lại lệnh trước với sudo
# su — switch user
su - sontn # chuyển sang sontn (kèm environment)
su - # chuyển sang root
exit # thoát khỏi su session
Cấu hình sudoers
sudo visudo # PHẢI dùng visudo — validate syntax trước khi lưu
# KHÔNG edit /etc/sudoers trực tiếp bằng nano/vi
# /etc/sudoers — cú pháp:
# WHO WHERE=(AS_WHOM) WHAT
# Cho user sontn sudo mọi lệnh
sontn ALL=(ALL:ALL) ALL
# Group devops dùng systemctl không cần password
%devops ALL=(ALL) NOPASSWD: /bin/systemctl
# CI/CD deployer chỉ được chạy docker
deployer ALL=(ALL) NOPASSWD: /usr/bin/docker
# Include file cấu hình riêng (best practice)
#includedir /etc/sudoers.d/
# Tạo file riêng trong /etc/sudoers.d/ (best practice)
sudo visudo -f /etc/sudoers.d/deployer
# deployer ALL=(ALL) NOPASSWD: /usr/bin/docker, /bin/systemctl
Bảng tổng kết lệnh User/Group
| Tác vụ | Lệnh |
|---|---|
| Xem user hiện tại | whoami, id |
| Tạo user | sudo useradd -m -s /bin/bash <user> |
| Đặt password | sudo passwd <user> |
| Thêm vào group | sudo usermod -aG <group> <user> |
| Xoá user | sudo userdel -r <user> |
| Tạo group | sudo groupadd <group> |
| Xem group của user | groups <user> |
| Cấu hình sudo | sudo visudo |
| Kiểm tra quyền sudo | sudo -l |