Quản lý người dùng trên máy chủ Linux đóng vai trò rất quan trọng trong việc bảo mật hệ thống và đảm bảo hoạt động ổn định cho doanh nghiệp. Việc kiểm soát quyền truy cập, phân quyền hợp lý và thường xuyên kiểm tra tài khoản người dùng giúp phòng tránh các rủi ro về bảo mật, ngăn chặn truy cập trái phép và đảm bảo dữ liệu luôn an toàn.
Đối với các quản trị viên hệ thống, việc nắm vững các phương pháp quản lý người dùng trên Linux không chỉ giúp tối ưu hiệu suất làm việc mà còn tăng cường khả năng phòng vệ trước các cuộc tấn công mạng ngày càng tinh vi. Bài viết này sẽ hướng dẫn chi tiết cách quản lý người dùng trên máy chủ Linux một cách an toàn, hiệu quả, đồng thời cung cấp các mẹo hữu ích nhằm giảm thiểu rủi ro và nâng cao bảo mật cho máy chủ của bạn. Nếu bạn đang tìm kiếm giải pháp quản lý người dùng trên Linux an toàn và chuẩn xác, đây sẽ là tài liệu hữu ích không nên bỏ qua.

Thêm người dùng
Bước đầu tiên là hiểu cách thêm người dùng trên máy chủ Linux, công việc này khá đơn giản.
Có hai lệnh thường dùng để thêm người dùng mới.
Lệnh adduser
Lệnh đầu tiên là adduser, thường có trên các bản phân phối dựa trên Debian như Ubuntu.
Đây là lệnh thân thiện với người dùng, sẽ hỏi thông tin người dùng một cách tương tác, giúp quá trình tạo tài khoản nhanh hơn.
Để thêm người dùng mới, chạy lệnh:
adduser username
Ngoài việc tạo người dùng mới, lệnh adduser còn thực hiện:
- Tạo nhóm mới cho người dùng.
- Tạo thư mục home cho người dùng mới trong
/home. - Hỏi mật khẩu.
- Hỏi thêm các thông tin như Tên đầy đủ, số phòng, số điện thoại công việc, điện thoại nhà,… Bạn có thể nhấn ENTER để bỏ qua các mục không bắt buộc này.
Lệnh useradd
Lệnh thứ hai là useradd, thường dùng trên các bản phân phối dựa trên Red Hat như CentOS và cũng có trên Ubuntu.
Trên Ubuntu, bạn phải chỉ định chi tiết và tùy chọn trực tiếp trên dòng lệnh, cách này thủ công hơn.
Một số điểm khác biệt so với adduser:
- Không tạo thư mục home mặc định.
- Không tạo mật khẩu.
- Không hỏi thông tin thêm.
Mặc định shell khi dùng adduser là Bash, còn khi dùng useradd không kèm tùy chọn thì shell mặc định là SH.
Nếu muốn useradd làm giống adduser, chạy:
useradd -m -d /home/<username> -c "Full Name" -s /bin/bash <username>
Giải thích:
-mtạo thư mục home.-d /home/usernamechỉ định đường dẫn thư mục home.-c "Full Name"đặt tên đầy đủ cho tài khoản.-s /bin/bashđặt shell mặc định là Bash.
Sau khi tạo người dùng, nhớ dùng lệnh sau để đặt mật khẩu:
passwd username
Nhập và xác nhận mật khẩu.
Nên dùng lệnh nào
Tùy nhu cầu mà chọn lệnh phù hợp. Thông thường, adduser được ưu tiên vì dễ dùng và nhanh chóng.
useradd thường được dùng trong script bash khi cần tạo user nhanh mà không cần hỏi tương tác.
Khóa quyền thư mục home
Mỗi bản phân phối Linux có thiết lập bảo mật mặc định cho thư mục home của người dùng khác nhau.
Nếu làm việc trong môi trường nhiều distro, bạn cần lưu ý điều này.
Ví dụ thêm user John bằng useradd trên Ubuntu 20.04:
useradd -m -d /home/john -s /bin/bash john
Xem nội dung thư mục home:
ls -l /home
Kết quả:
total 4
drwxr-xr-x 2 john john 4096 Jan 19 08:50 john
Thư mục home của John có quyền mở rộng cho tất cả mọi người đọc và thực thi, điều này không an toàn.
Mặc dù người dùng có thể tự chỉnh quyền, tốt hơn là thiết lập quyền mặc định đúng ngay khi tạo user mới.
Mở file /etc/login.defs, tìm dòng bắt đầu bằng UMASK, thay thành:
UMASK 077
Khi đó thư mục home mới sẽ có quyền bảo mật hơn.
Thêm user David để kiểm tra:
useradd -m -d /home/david -s /bin/bash david
ls -l /home
Kết quả:
total 4
drwx------ 2 david david 4096 Jan 19 09:02 david
drwxr-xr-x 2 john john 4096 Jan 19 08:50 john
Quyền truy cập thư mục của David đã bị hạn chế, bảo vệ tốt hơn.
Tuy nhiên thay đổi này không ảnh hưởng đến lệnh adduser, do đó bạn cần mở file /etc/adduser.conf và thay giá trị DIR_MODE thành:
DIR_MODE=0700
Trên Ubuntu phiên bản 22.04 và 24.04, mặc định quyền thư mục home đã được nâng lên thành 0750 cho cả useradd và adduser.
Bạn có thể kiểm tra trong /etc/login.defs với dòng:
HOME_MODE 0750
và trong /etc/adduser.conf với:
DIR_MODE=0750
Điều này cho phép chỉ chủ sở hữu và nhóm cá nhân truy cập thư mục home.
Quản lý mật khẩu
Sau khi biết cách thêm user, hãy quản lý mật khẩu của họ.
Quan trọng là giữ mật khẩu an toàn ở một nơi trung tâm thay vì mỗi người lưu riêng.
Ngày nay nên sử dụng trình quản lý mật khẩu an toàn như Bitwarden (được giới thiệu trong bài).
Bitwarden có tính năng Bitwarden Organizations giúp chia sẻ mật khẩu an toàn giữa các thành viên.
Tiêu chuẩn mật khẩu mạnh
Dùng module pwquality của PAM để bắt buộc mật khẩu mạnh.
Cài đặt:
apt install libpam-pwquality
Chỉnh file cấu hình /etc/security/pwquality.conf, tập trung hai biến:
minlen: chiều dài tối thiểu (tôi đề xuất 32).minclass: số loại ký tự tối thiểu (tôi đề xuất 4 bao gồm ký tự đặc biệt).
Bỏ chú thích các biến để kích hoạt.
Hết hạn mật khẩu
Muốn người dùng đổi mật khẩu mỗi 30 ngày, chỉnh file /etc/login.defs:
PASS_MAX_DAYS 30
Dùng lệnh sau để xem ngày hết hạn mật khẩu của user:
chage -l <username>
Ví dụ với user A:
Last password change : Jan 25, 2024
Password expires : Feb 24, 2024
Minimum number of days between password change : 0
Maximum number of days between password change : 30
Number of days of warning before password expires : 7
Tức là A phải đổi mật khẩu sau mỗi 30 ngày, sẽ nhận cảnh báo trước 7 ngày.
Nếu muốn giới hạn người dùng chỉ đổi mật khẩu trong khoảng 7 ngày cuối cùng trước khi hết hạn, chỉnh thêm:
PASS_MIN_DAYS 23
Ví dụ với user B:
Minimum number of days between password change : 23
Maximum number of days between password change : 30
Number of days of warning before password expires : 7
Cài đặt Sudo
Sudo giúp nâng cao bảo mật máy chủ rất nhiều. Ưu điểm chính:
- Gán quyền root đầy đủ cho một số user nhất định.
- User có thể làm việc admin mà không cần biết mật khẩu root.
- Cho phép vô hiệu hóa user root trực tiếp, tránh tấn công brute force.
- Giám sát hoạt động user khi dùng sudo.
Gán quyền root toàn phần
File cấu hình của sudo là /etc/sudoers. Không mở bằng editor thường mà dùng lệnh:
visudo
Mặc định nhóm sudo có quyền root đầy đủ:
%sudo ALL=(ALL:ALL) ALL
Thêm user David vào nhóm sudo:
usermod -aG sudo david
Sau đó chạy lệnh cần quyền root bằng cách prefix bằng sudo, ví dụ:
sudo apt update
Trên Red Hat/CentOS nhóm tương đương là wheel.
Bạn cũng có thể gán quyền root cho một user cụ thể trong file sudoers:
david ALL=(ALL:ALL) ALL
Tạo user kèm nhóm sudo luôn:
useradd -G sudo -m -d /home/john -s /bin/bash david
Gán quyền hạn chế
Bạn có thể tạo alias user và alias lệnh để gán quyền hạn chế cho nhóm user.
Ví dụ tạo alias user nhóm phần mềm:
User_Alias SOFTWAREADMINS = david, john
Cmnd_Alias SOFTWARECOMMANDS = /usr/bin/apt update, /usr/bin/apt upgrade, /usr/bin/apt install *
SOFTWAREADMINS ALL=(ALL:ALL) SOFTWARECOMMANDS
Nhóm này chỉ được chạy các lệnh cập nhật và cài phần mềm.
Lưu ý khi chỉ định lệnh
Nếu chỉ định lệnh mà không kèm theo tham số, người dùng có thể chạy kèm mọi tham số và gây hại.
Ví dụ với lệnh kiểm tra trạng thái dịch vụ:
Cmnd_Alias SERVICECOMMANDS = /usr/bin/systemctl status *
Cho phép kiểm tra trạng thái bất kỳ dịch vụ nào.
Ngăn người dùng trốn thoát shell
Một số chương trình như vim có tính năng shell escape (:!command) có thể làm người dùng thoát ra shell với quyền sudo nếu không cẩn thận.
Giải pháp là cho phép dùng sudoedit thay vì chỉnh trực tiếp file với vim trong sudoers.
Ví dụ:
david ALL=(ALL:ALL) sudoedit /etc/ssh/sshd_config
Hoặc sử dụng tùy chọn NOEXEC để ngăn escape shell với các chương trình như less:
david ALL=(ALL:ALL) NOEXEC: /usr/bin/less /etc/ssh/sshd_config
Tránh lạm dụng Script
Không nên cho phép user chạy script họ sở hữu với quyền root vì họ có thể chỉnh sửa script để nâng quyền root trái phép.
Nên di chuyển script sang /usr/local/sbin/, đổi chủ sang root rồi mới cấp quyền chạy sudo cho user.
Xem quyền Sudo
Dùng lệnh sau để xem bạn có quyền gì trong sudoers:
sudo -l
Bộ đếm thời gian Sudo
Sau khi nhập mật khẩu sudo lần đầu, các lần sau trong vòng 5 phút sẽ không hỏi lại (do timer mặc định).
Muốn tắt tính năng này (bắt nhập mật khẩu mỗi lần), thêm vào sudoers:
Defaults timestamp_timeout = 0
Muốn reset timer thủ công:
sudo -k
Giám sát hoạt động Sudo
Bình thường sudo log vào file /var/log/auth.log.
Bạn có thể chuyển log riêng vào file khác bằng cách thêm vào sudoers:
Defaults logfile=/var/log/sudo.log
Kết Luận
Bạn đã hoàn thành hướng dẫn quản lý người dùng và bảo mật cơ bản trên Linux server. Áp dụng những kiến thức này sẽ giúp bảo vệ máy chủ và dữ liệu tốt hơn.









