Skip to main content

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 sontnappend, 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ạiwhoami, id
Tạo usersudo useradd -m -s /bin/bash <user>
Đặt passwordsudo passwd <user>
Thêm vào groupsudo usermod -aG <group> <user>
Xoá usersudo userdel -r <user>
Tạo groupsudo groupadd <group>
Xem group của usergroups <user>
Cấu hình sudosudo visudo
Kiểm tra quyền sudosudo -l