คำนำ
นี่เป็นคำถามที่ค่อนข้างซับซ้อนที่เกี่ยวข้องกับไฟล์ Sudoers และคำสั่ง sudo โดยทั่วไป
หมายเหตุ: ฉันได้ทำการเปลี่ยนแปลงเหล่านี้บนเครื่องเฉพาะที่ใช้ Ubuntu Desktop 13.04 ซึ่งฉันใช้เพื่อวัตถุประสงค์ในการเรียนรู้เท่านั้น ฉันเข้าใจว่าเป็นความเสี่ยงด้านความปลอดภัยขนาดใหญ่ที่จะเปิดใช้งาน sudo NOPASSWD
คำถาม
เริ่มแรกการเปลี่ยนเฉพาะไฟล์ sudoers (/ etc / sudoers) ของฉันคือหนึ่งบรรทัดข้อมูลจำเพาะผู้ใช้ที่ควรเปิดใช้งาน 'nicholsonjf' เพื่อเรียกใช้คำสั่งทั้งหมดด้วย sudo โดยไม่ต้องป้อนรหัสผ่าน (ดูบรรทัดที่ขึ้นต้นด้วย 'nicholsonjf '):
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
nicholsonjf ALL=NOPASSWD: ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
อย่างไรก็ตามนี่ใช้งานไม่ได้และฉันก็ยังได้รับรหัสผ่านของฉันทุกครั้งที่ฉันรันคำสั่งในชื่อ 'nicholsonjf' ฉันสามารถเริ่มต้นใช้งานคำสั่ง sudo เป็น 'nicholsonjf' เมื่อฉันลบ 'nicholsonjf' ออกจากกลุ่ม sudo และ admin เท่านั้น
ใครสามารถอธิบายได้ว่าทำไมสิ่งนี้ถึงได้ผล
เป็นเพราะผู้ใช้ 'nicholsonjf' ได้รับสิทธิ์ sudo จากข้อกำหนดกลุ่มสองกลุ่มของ 'admin' และ 'sudo' (ดูด้านล่างในไฟล์ sudoers) ซึ่งมีการแทนที่ข้อมูลจำเพาะของผู้ใช้ 'nicholsonjf' เพราะพวกเขายังอยู่ใน ไฟล์ config หรือไม่