วิธีการปิดใช้งาน requiretty สำหรับคำสั่งเดียวใน sudoers?


44

ฉันต้องการปิดการใช้งานจำเป็นเพื่อให้ฉันสามารถ sudo ภายในสคริปต์ แต่ฉันจะปิดการใช้งานมันสำหรับคำสั่งเดียวมากกว่าทุกอย่าง เป็นไปได้ว่าภายใน sudoers config?

คำตอบ:


55

คุณสามารถแทนที่การตั้งค่าเริ่มต้นสำหรับตัวเลือกต่าง ๆ เช่น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

31

บางสิ่งเช่นนี้

myuser    ALL=(ALL)    NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser        !requiretty

สิ่งนี้อาจใช้งานได้/etc/sudoersแต่ดูเหมือนจะไม่ทำงานใน/etc/sudoers.d/ไฟล์
8bitjunkie

สำหรับสิ่งที่คุ้มค่าสำหรับฉันการแก้ไขนี้ใช้งานได้เมื่อเพิ่มลงใน/etc/sudoers.d/ไฟล์ CentOS 7.1
John Erck

/etc/sudoers.d/มันไม่ทำงานสำหรับฉันเมื่อมีการใช้ CentOS 7.5 :(
Stefan Lasiewski

4

/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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.