sudo và sudoers
Xem thửsudo cho phép user được ủy quyền chạy lệnh với quyền hiệu lực khác (thường root) theo chính sách sudoers, có ghi log — an toàn hơn chia sẻ mật khẩu root.
Dùng sudo hàng ngày
sudo -l # quyền của bạn
sudo -u www-data id # chạy với user khác
sudo -i # shell login root (nếu được phép)
sudo -s # shell giữ env nhiều hơn (tùy cấu hình)
sudo cat /etc/shadow
sudoers — chỉnh sửa an toàn
Luôn dùng visudo (hoặc visudo -f /etc/sudoers.d/file) để kiểm tra cú pháp trước khi ghi. Sai một dòng có thể khóa toàn bộ sudo.
Đang tải sơ đồ…
Cách đọc sơ đồ. visudo không sửa trực tiếp tệp đang có hiệu lực mà chỉnh một bản tạm, kiểm tra cú pháp rồi mới thay thế. Vì vậy một dòng sai không thể khóa toàn bộ sudo như khi sửa bằng nano thường.
sudo visudo
sudo ls /etc/sudoers.d/
sudo visudo -f /etc/sudoers.d/90-alice
Mẫu chính sách (minh họa)
# Thành viên group sudo (Debian) — thường đã có sẵn
%sudo ALL=(ALL:ALL) ALL
# RHEL-family thường dùng wheel
%wheel ALL=(ALL) ALL
# Ủy quyền hẹp hơn — tốt hơn ALL
alice ALL=(root) NOPASSWD: /bin/systemctl restart nginx
Đang tải sơ đồ…
Cách đọc sơ đồ. Một quy tắc sudoers gồm năm phần: ai, trên máy nào, chạy với quyền của ai, các thẻ như NOPASSWD, và lệnh được phép. Giới hạn ở một lệnh cụ thể như trên an toàn hơn nhiều so với ALL vì chỉ mở đúng việc cần làm.
ALL=(ALL:ALL) ALLrất rộng — chỉ cho admin tin cậy.- Ưu tiên rule theo lệnh cụ thể + group thay vì từng user lẻ khi có thể.
- Drop file trong
/etc/sudoers.d/với quyền0440, tên không chứa dấu~/.lạ (tùy#includedir).
Thêm user vào nhóm sudo/wheel
# Debian/Ubuntu
sudo usermod -aG sudo alice
# RHEL/Rocky/Alma
sudo usermod -aG wheel alice
Relogin rồi sudo -l để xác nhận.
Bảo mật thực tế
- Không chạy
chmod 777 /etc/sudoers. - Hạn chế
NOPASSWD— chỉ cho automation đã kiểm soát. - Giám sát
journalctl//var/log/auth.logcho lệnh sudo thất bại/thành công. - Giữ một session root console/break-glass trước khi thử đổi sudoers trên máy remote.
Lỗi thường gặp
- Sửa
/etc/sudoersbằngnanothường, gặp syntax error là mất sudo từ xa. usermod -G sudoquên-athì user mất group khác.- Cấp
NOPASSWD: ALLcho tài khoản cá nhân trên server Internet-facing.
Đang tải sơ đồ…
Cách đọc sơ đồ. sudo đối chiếu yêu cầu với chính sách trong /etc/sudoers*: nếu được phép thì chạy với quyền của user đích, nếu bị từ chối thì ghi nhận lại. Thực tế cả lần thành công lẫn thất bại đều được ghi log, nên log sudo là nguồn để audit ai đã chạy gì.