ใช้NOPASSWD
คำสั่ง
คุณสามารถใช้NOPASSWD
คำสั่งของคุณในไฟล์/etc/sudoers
หากผู้ใช้ของคุณถูกเรียกใช้user
และโฮสต์ของคุณถูกเรียกhost
คุณสามารถเพิ่มบรรทัดเหล่านี้ใน/etc/sudoers
:
user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot
สิ่งนี้จะช่วยให้ผู้ใช้user
เรียกใช้คำสั่งที่ต้องการhost
โดยไม่ต้องป้อนรหัสผ่าน sudo
คำสั่ง ed อื่น ๆ ทั้งหมดจะต้องใช้รหัสผ่าน
คำสั่งที่ระบุไว้ในsudoers
ไฟล์จะต้องได้รับการรับรองอย่างเต็มที่ (เช่นใช้เส้นทางแน่นอนกับคำสั่งในการทำงาน) ที่อธิบายไว้ในหน้าคนsudoers
การให้เส้นทางสัมพัทธ์ถือเป็นข้อผิดพลาดทางไวยากรณ์
หากคำสั่งลงท้ายด้วย/
อักขระต่อท้ายและชี้ไปที่ไดเร็กทอรีผู้ใช้จะสามารถรันคำสั่งใด ๆ ในไดเร็กทอรีนั้น (แต่ไม่อยู่ในไดเร็กทอรีย่อยใด ๆ ) ในตัวอย่างต่อไปนี้ผู้ใช้user
สามารถเรียกใช้คำสั่งใด ๆ ในไดเรกทอรี/home/someuser/bin/
:
user host = (root) NOPASSWD: /home/someuser/bin/
หมายเหตุ:ใช้คำสั่งvisudo
เพื่อแก้ไขsudoers
ไฟล์เสมอเพื่อให้แน่ใจว่าคุณไม่ได้ล็อคตัวเองออกจากระบบ - ในกรณีที่คุณตั้งใจเขียนสิ่งที่ไม่ถูกต้องลงในsudoers
ไฟล์ visudo
จะบันทึกแฟ้มที่แก้ไขของคุณไปยังสถานที่เก็บชั่วคราวและจะเพียงเขียนทับจริงsudoers
หากไฟล์ไฟล์ที่แก้ไขแล้วสามารถแยกวิเคราะห์ไม่มีข้อผิดพลาด
ใช้/etc/sudoers.d
แทนการดัดแปลง/etc/sudoers
ในฐานะที่เป็นทางเลือกในการแก้ไขที่/etc/sudoers
ไฟล์คุณสามารถเพิ่มทั้งสองสายไปยังแฟ้มใหม่ในเช่น/etc/sudoers.d
/etc/sudoers.d/shutdown
นี่เป็นวิธีที่ยอดเยี่ยมในการแยกการเปลี่ยนแปลงsudo
สิทธิ์ต่าง ๆ และปล่อยให้sudoers
ไฟล์ต้นฉบับไม่ถูกแตะต้องเพื่อการอัพเกรดที่ง่ายขึ้น
หมายเหตุ:อีกครั้งคุณควรใช้คำสั่งvisudo
เพื่อแก้ไขไฟล์เพื่อให้แน่ใจว่าคุณไม่ได้ล็อคตัวเองออกจากระบบ:
sudo visudo -f /etc/sudoers.d/shutdown
นอกจากนี้ยังช่วยให้มั่นใจได้ว่าเจ้าของและการอนุญาตของไฟล์ใหม่จะถูกตั้งค่าอย่างถูกต้อง
หากsudoers
เกิดความสับสน
หากคุณไม่ได้ใช้visudo
เพื่อแก้ไขไฟล์ของคุณจากนั้นทำให้เกิดความยุ่งเหยิง/etc/sudoers
หรือทำให้ไฟล์เสียหายโดยไม่ตั้งใจ/etc/sudoers.d
คุณจะถูกล็อคsudo
ไม่ให้เข้า
การแก้ปัญหาอาจจะมีการแก้ไขไฟล์โดยใช้ซึ่งเป็นทางเลือกในการpkexec
sudo
วิธีแก้ไข/etc/sudoers
:
pkexec visudo
วิธีแก้ไข/etc/sudoers.d/shutdown
:
pkexec visudo -f /etc/sudoers.d/shutdown
หากความเป็นเจ้าของและ / หรือการอนุญาตไม่ถูกต้องสำหรับsudoers
ไฟล์ใด ๆไฟล์จะถูกละเว้นโดยsudo
ดังนั้นคุณอาจพบว่าตัวเองถูกล็อคในสถานการณ์นี้ คุณสามารถใช้pkexec
เพื่อแก้ไขปัญหานี้อีกครั้ง
สิทธิ์ที่ถูกต้องควรเป็นเช่นนี้:
$ ls -l /etc/sudoers.d/shutdown
-r--r----- 1 root root 86 Jul 16 15:37 /etc/sudoers.d/shutdown
ใช้pkexec
สิ่งนี้เพื่อแก้ไขความเป็นเจ้าของและการอนุญาต :
pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown