ใช้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ไม่ให้เข้า
การแก้ปัญหาอาจจะมีการแก้ไขไฟล์โดยใช้ซึ่งเป็นทางเลือกในการpkexecsudo
วิธีแก้ไข/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