Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> สมาร์ทโฟน >> Linux

คู่มือ sudo Command และ sudoers Configuration File

คู่มือครบครันสำหรับ sudo - ระบบให้สิทธิ์ Root แบบเจาะจง (Granular) แทนการ Login Root โดยตรง

sudo คืออะไร?

  • ให้ User ทั่วไป รันคำสั่งเป็น Root (หรือ User อื่น)
  • ควบคุมได้ละเอียด: User, Host, Command, NOPASSWD
  • Log ทุกการใช้งาน (Audit trail)
  • Ubuntu Default: Lock root account, ใช้ sudo แทน

แก้ไข sudoers: visudo

# visudo
  • ใช้ Editor ที่ปลอดภ (ตรวจสอบ Syntax ก่อน Save)
  • ไฟล์จริง: /etc/sudoers + /etc/sudoers.d/
  • ห้ามแก้ /etc/sudoers โดยตรง - ผิด Syntax = Locked out

Syntax พื้นฐาน

user    host=(runas)  commands

ตัวอย่าง

# Full root access
calvin ALL=(ALL) ALL

# เฉพาะ restart apache
calvin ALL=(ALL) /etc/init.d/httpd restart

# หลายคำสั่ง (คั่นด้วย comma)
calvin ALL=(ALL) /etc/init.d/httpd restart, /etc/init.d/httpd stop

# ไม่ต้องรหัสผ่าน (NOPASSWD)
calvin ALL=(ALL) NOPASSWD: /etc/init.d/httpd restart

# Group (นำหน้าด้วย %)
%admin ALL=(ALL) ALL
%wheel ALL=(ALL) ALL

Default /etc/sudoers (Ubuntu)

root    ALL=(ALL:ALL) ALL
%admin  ALL=(ALL:ALL) ALL
%sudo   ALL=(ALL:ALL) ALL
# User เพิ่มใน group sudo จะได้สิทธิ์เต็ม

เพิ่ม User ให้มีสิทธิ์ sudo (Ubuntu/Debian)

usermod -aG sudo username

Defaults ที่น่าสนใจ

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults        timestamp_timeout=15   # จดจำรหัสผ่าน 15 นาที (default)
Defaults        lecture=always         # แสดงข้อความเตือนทุกครั้ง
Defaults        logfile="/var/log/sudo.log"

Debug และ Troubleshooting

# ตรวจสอบสิทธิ์ของ user ปัจจุบัน
sudo -l

# ตรวจสอบ user อื่น (ต้องเป็น root)
sudo -l -U username

# รันคำสั่งเป็น user อื่น
sudo -u postgres psql

# Preserve Environment variables
sudo -E command

Best Practices

  • ใช้ Group (%sudo, %wheel) แทน User โดยตรง
  • จำกัดคำสั่งให้เฉพาะที่จำเป็น (Principle of Least Privilege)
  • หลีกเลี่ยง NOPASSWD ยกเว้น Service Account/Automation
  • ใช้ /etc/sudoers.d/ สำหรับ Custom rules (Include จาก sudoers หลัก)
  • Audit: grep sudo /var/log/auth.log

sudo เป็นมาตรฐานการจัดการสิทธิ์ใน Linux การตั้งค่าที่ถูกต้อง = Security + Convenience