ฉันต้องการปิดการใช้งานจำเป็นเพื่อให้ฉันสามารถ sudo ภายในสคริปต์ แต่ฉันจะปิดการใช้งานมันสำหรับคำสั่งเดียวมากกว่าทุกอย่าง เป็นไปได้ว่าภายใน sudoers config?
ฉันต้องการปิดการใช้งานจำเป็นเพื่อให้ฉันสามารถ sudo ภายในสคริปต์ แต่ฉันจะปิดการใช้งานมันสำหรับคำสั่งเดียวมากกว่าทุกอย่าง เป็นไปได้ว่าภายใน sudoers config?
คำตอบ:
คุณสามารถแทนที่การตั้งค่าเริ่มต้นสำหรับตัวเลือกต่าง ๆ เช่นrequiretty
สำหรับผู้ใช้ที่เฉพาะเจาะจงหรือสำหรับคำสั่งเฉพาะ (หรือสำหรับการใช้งานในฐานะผู้ใช้หรือโฮสต์ที่เฉพาะเจาะจง) แต่ไม่ใช่สำหรับคำสั่งเฉพาะเมื่อดำเนินการในฐานะผู้ใช้เฉพาะ
ตัวอย่างเช่นสมมติว่าrequiretty
มีการตั้งค่าในตัวเลือกการคอมไพล์เริ่มต้นsudoers
ไฟล์ต่อไปนี้ช่วยให้ทั้งสองartbristol
และbob
ดำเนินการ/path/to/program
ในฐานะ root จากสคริปต์ artbristol
ไม่จำเป็นต้องใช้รหัสผ่านในขณะที่bob
ต้องป้อนรหัสผ่าน (อาจtty_tickets
ปิดและbob
ป้อนรหัสผ่านของเขาในเทอร์มินัลบางเครื่องเมื่อเร็ว ๆ นี้)
artbristol ALL = (root) NOPASSWD: /path/to/program
bob ALL = (root) /path/to/program
Defaults!/path/to/program !requiretty
หากคุณต้องการเปลี่ยนการตั้งค่าสำหรับคำสั่งที่มีอาร์กิวเมนต์เฉพาะคุณต้องใช้นามแฝงคำสั่ง (นี่เป็นข้อ จำกัด ทางไวยากรณ์) ตัวอย่างเช่นแฟรกเมนต์ต่อไปนี้อนุญาตให้artbristol
รัน/path/to/program --option
ในสคริปต์ แต่ไม่มี/path/to/program
อาร์กิวเมนต์อื่น
Cmnd_Alias MYPROGRAM = /path/to/program --option
artbristol ALL = (root) /path/to/program
artbristol ALL = (root) NOPASSWD: MYPROGRAM
Defaults!MYPROGRAM !requiretty
บางสิ่งเช่นนี้
myuser ALL=(ALL) NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser !requiretty
/etc/sudoers.d/
ไฟล์ CentOS 7.1
/etc/sudoers.d/
มันไม่ทำงานสำหรับฉันเมื่อมีการใช้ CentOS 7.5 :(
/etc/sudoers.d
ผมพบว่ามันทำงานได้ดีสำหรับผมที่ใช้ไฟล์ใน มันค่อนข้างง่ายในการตรวจสอบ
ก่อนอื่นฉันสร้าง/etc/sudoers.d/01build
ด้วยเนื้อหา:
build ALL=(ALL) NOPASSWD:/bin/date
Defaults:build !requiretty
จากนั้นทดสอบว่าใช้งานได้:
ssh host sudo -n /bin/date
Mon Nov 16 16:04:27 CST 2015
จากนั้นฉันแก้ไข/etc/sudoers.d/01build
และลบDefaults:
บรรทัดและหลังจากนั้นฉันจะได้รับ:
ssh host sudo -n /bin/date
sudo: sorry, you must have a tty to run sudo
/etc/sudoers
แต่ดูเหมือนจะไม่ทำงานใน/etc/sudoers.d/
ไฟล์