Quản lý người dùng & phân quyền Linux toàn tập: Từ Files cơ bản đến SUDO
7 min read

Table of contents
- Giải mã 4 tệp tin quản lý người dùng quan trọng
- Các loại Tài khoản & cách tạo người dùng mới
- Làm việc với nhóm (Groups)
- Tùy chỉnh môi trường: Biến môi trường (Environment Variables)
- Phân quyền Files & Thư mục: Ai được làm gì?
- Quyền đặc biệt: SUID, SGID & Sticky Bit
- Lệnh chmod & chown: Bậc thầy phân quyền
- Sudo: Trao quyền có kiểm soát
- Kết luận
Quản lý người dùng và phân quyền là trái tim của mọi hệ thống Linux bảo mật và ổn định. Dù bạn là người mới tìm hiểu hay một quản trị viên hệ thống dày dạn kinh nghiệm, việc nắm vững cách tạo, quản lý tài khoản, nhóm và thiết lập quyền truy cập chính xác là kỹ năng không thể thiếu.
Giải mã 4 tệp tin quản lý người dùng quan trọng
Hệ thống Linux dựa vào 4 tệp tin chính để quản lý toàn bộ thông tin về người dùng và nhóm:
/etc/passwd:
Đây là tệp văn bản chứa thông tin tài khoản của tất cả người dùng.
Nó lưu trữ ID người dùng, ID nhóm, thư mục chính, shell mặc định và mô tả ngắn.
Trường mật khẩu thường hiển thị là 'x', cho biết mật khẩu thực sự đã được mã hóa và lưu trong
/etc/shadow
.Thông thường, chỉ root mới có quyền ghi, còn người dùng khác chỉ có quyền đọc.
/etc/shadow:
Lưu trữ thông tin mật khẩu đã mã hóa và các chính sách mật khẩu.
Chỉ có tài khoản root hoặc người dùng có quyền sudo mới có thể truy cập.
Các trường bao gồm: tên người dùng, mật khẩu mã hóa (với thuật toán như MD5, SHA-256, SHA-512), ngày đổi mật khẩu lần cuối, thời gian tối thiểu/tối đa hiệu lực, thời gian cảnh báo hết hạn, và thời gian khóa tài khoản.
Các ký tự đặc biệt như '!', 'LK' cho biết tình trạng khóa hoặc không có mật khẩu.
/etc/group:
Chứa thông tin về các nhóm người dùng trên hệ thống.
Ai cũng có thể đọc nhưng chỉ root mới có quyền ghi.
Các trường bao gồm: tên nhóm, mật khẩu nhóm (nếu có, thường là 'x'), ID nhóm (GID), và danh sách các thành viên phụ.
/etc/gshadow:
Lưu trữ thông tin bảo mật về mật khẩu nhóm (nếu có) và quản trị viên nhóm.
Chỉ root hoặc người dùng
sudo
mới đọc được.
Các loại Tài khoản & cách tạo người dùng mới
Linux có 3 loại tài khoản chính:
Tài khoản root: Superuser, có quyền lực tối cao, có thể làm mọi thứ.
Tài khoản hệ thống: Dành riêng cho các dịch vụ (sshd, mail...).
Tài khoản người dùng cá nhân: Dành cho người dùng tương tác, quyền bị giới hạn.
Tạo người dùng bằng dòng lệnh:
useradd <username>
: Lệnh cơ bản để tạo người dùng mới.passwd <username>
: Đặt hoặc thay đổi mật khẩu cho người dùng.useradd -d /home/dir -g group -s /bin/shell username
: Tạo người dùng với các tùy chọn nâng cao như thư mục nhà, nhóm chính, và shell mặc định.adduser
: Một phiên bản thân thiện và trực quan hơn củauseradd
, đặc biệt trên các hệ thống Debian.
Làm việc với nhóm (Groups)
Nhóm là cách để tập hợp các tài khoản có chung mục đích hoặc quyền hạn. Mỗi người dùng phải thuộc ít nhất một nhóm (nhóm chính) và có thể thuộc nhiều nhóm khác (nhóm phụ, tối đa 15).
id <username>
: Xem thông tin nhóm chính và phụ của người dùng.groupadd <groupname>
: Tạo một nhóm mới.groupmod -n <new_name> <old_name>
: Đổi tên nhóm.groupmod -g <new_gid> <groupname>
: Đổi GID của nhóm.groupdel <groupname>
: Xóa một nhóm. Lưu ý: Không thể xóa nhóm nếu nó là nhóm chính của bất kỳ người dùng nào.usermod -g <new_group> <username>
: Thay đổi nhóm chính của người dùng.adduser <username> <groupname>
: Thêm người dùng vào một nhóm phụ (thường dùngusermod -aG <groupname> <username>
cũng rất phổ biến).deluser -g <groupname>
: Xóa nhóm (tương tựgroupdel
).deluser <username>
: Xóa người dùng.
Tùy chỉnh môi trường: Biến môi trường (Environment Variables)
Biến môi trường là các giá trị động ảnh hưởng đến cách shell và các chương trình hoạt động.
Một số biến quan trọng:
$HOME
: Thư mục nhà của người dùng.$PATH
: Danh sách các thư mục mà hệ thống tìm kiếm lệnh thực thi.$USER
: Tên người dùng hiện tại.$SHELL
: Shell đang sử dụng.$LANG
: Cài đặt ngôn ngữ.
Quản lý biến môi trường:
echo $VARNAME
hoặcprintenv VARNAME
: Xem giá trị một biến.printenv
: Xem tất cả các biến.VARNAME=Value
: Tạo hoặc gán giá trị (chỉ có hiệu lực trong phiên hiện tại).export VARNAME=Value
: Tạo biến và cho phép các tiến trình con kế thừa.unset VARNAME
: Xóa biến.Lưu trữ vĩnh viễn:
/etc/environment
: Áp dụng cho toàn hệ thống.~/.bashrc
: Áp dụng cho người dùng cụ thể (cần logout/login lại hoặcsource ~/.bashrc
).
Phân quyền Files & Thư mục: Ai được làm gì?
Quyền truy cập là nền tảng bảo mật của Linux. Có 3 quyền cơ bản:
Read (r): Đọc nội dung file / Liệt kê nội dung thư mục.
Write (w): Ghi/Xóa nội dung file / Thêm/Sửa/Xóa file trong thư mục.
Execute (x): Thực thi file / Truy cập (cd) vào thư mục.
Mỗi file/thư mục có 3 bộ quyền (9 bit) cho 3 đối tượng:
User (u): Chủ sở hữu.
Group (g): Nhóm sở hữu.
Others (o): Những người còn lại.
Dùng ls -l
để xem quyền. Ví dụ: rw-rw-r--
nghĩa là user và group có quyền đọc/ghi, others chỉ có quyền đọc.
Quyền đặc biệt: SUID, SGID & Sticky Bit
SUID (Set User ID - 4000): Khi một file thực thi có SUID, nó sẽ chạy với quyền của chủ sở hữu file, không phải người dùng thực thi. Dùng
chmod u+s file
hoặcchmod 4750 file
.SGID (Set Group ID - 2000): Tương tự SUID nhưng chạy với quyền của nhóm sở hữu file. Với thư mục, file/thư mục con tạo ra sẽ thừa hưởng nhóm của thư mục cha. Dùng
chmod g+s file
hoặcchmod 2750 file
.Sticky Bit (1000): Chỉ áp dụng cho thư mục. Khi được đặt, chỉ chủ sở hữu file (hoặc root) mới có thể xóa hoặc đổi tên file trong thư mục đó, ngay cả khi người khác có quyền ghi vào thư mục. Dùng
chmod o+t dir
hoặcchmod 1750 dir
.Tìm kiếm:
find / -perm -4000
(SUID),find / -perm -2000
(SGID),find / -perm -1000
(Sticky Bit).
Lệnh chmod & chown: Bậc thầy phân quyền
chmod
: Thay đổi quyền.Kiểu ugo:
chmod u+x,g-w,o=r file
(Thêm x cho user, bỏ w cho group, gán r cho others).Kiểu số: Dựa trên giá trị (r=4, w=2, x=1).
chmod 755 file
(User: rwx, Group: r-x, Others: r-x).Tùy chọn:
-R
(áp dụng đệ quy),-v
(hiển thị chi tiết).
chown
: Thay đổi chủ sở hữu và nhóm sở hữu.Cú pháp:
chown [user]:[group] file
.Ví dụ:
chown datnt:users test.txt
.Cần quyền root (hoặc
sudo
) để thực hiện.
Sudo: Trao quyền có kiểm soát
sudo
cho phép người dùng thông thường thực thi lệnh với quyền của người dùng khác (thường là root) mà không cần biết mật khẩu root, chỉ cần nhập mật khẩu của chính mình.
Tệp cấu hình:
/etc/sudoers
.Chỉnh sửa an toàn: Luôn dùng
visudo -f /etc/sudoers
.Thêm người dùng vào nhóm sudo/wheel:
adduser <username> sudo
(Debian/Ubuntu) hoặcusermod -aG wheel <username>
(CentOS/RHEL) là cách phổ biến.Tạo quy tắc tùy chỉnh:
Cú pháp:
user hostname = (runas-user:runas-group) command
.Ví dụ:
datnt_vcs ALL = (ALL:ALL) /sbin/shutdown
cho phépdatnt_vcs
chạy lệnh shutdown với quyền root.%admin ALL = (ALL) ALL
cho phép mọi thành viên nhómadmin
chạy mọi lệnh với quyền root.
Kết luận
Quản lý người dùng và phân quyền là kỹ năng sống còn trong môi trường Linux. Bằng cách hiểu rõ các tệp cấu hình, thành thạo các lệnh useradd
, groupadd
, chmod
, chown
, và biết cách sử dụng sudo
một cách an toàn, bạn có thể xây dựng và duy trì một hệ thống Linux mạnh mẽ, bảo mật và dễ dàng quản lý.