หากฉันเข้าใจความคิดเห็นของคุณอย่างถูกต้องปัญหาในที่นี้คือคำสั่งจะถูกส่งผ่านการเชื่อมต่อที่ไม่มีความสามารถในการป้อนรหัสผ่านที่ sudo เป็นค่าเริ่มต้นสำหรับการร้องขอ นอกจากนี้ในการกระจาย OS หลาย ๆ ค่า sudo จะใช้ค่าเริ่มต้นเป็น TTY ซึ่งโปรแกรมนี้อาจไม่มี
อย่างไรก็ตาม sudo สามารถมีโครงสร้างสิทธิ์ที่ละเอียดมากทำให้ผู้ใช้หนึ่งรายขึ้นไปสามารถออกคำสั่งหนึ่งโดยไม่ต้องใช้รหัสผ่านและ TTY ด้านล่างฉันจะแสดงสามวิธีในการกำหนดค่านี้สำหรับความต้องการของคุณ ไม่ว่าคุณจะเลือกแบบใดผู้ใช้จะสามารถออกคำสั่งได้sudo rndc reload
โดยไม่ต้องป้อนรหัสผ่าน
(นอกจากนี้อาจไม่จำเป็น แต่ ... โปรดจำไว้ว่าให้ทำสำเนาสำรองของไฟล์ sudoers ของคุณก่อนทำการแก้ไขเพื่อเก็บเชลล์ที่คุณเปิดรูทไว้ในกรณีที่คุณต้องการเปลี่ยนกลับเป็นแบ็คอัพและแก้ไข มันใช้visudo
แทนsudo vi /etc/sudoers
หวังว่าข้อควรระวังเหล่านี้จะไม่จำเป็น แต่ ... ดีกว่าที่จะมีพวกเขาและไม่ต้องการพวกเขากลับกัน!)
1. หากคุณไม่ต้องการให้มี TTY สำหรับการร้องขอใด ๆ
วิธีที่ง่ายที่สุดในการกำจัดของความต้องการ TTY (ถ้ามี) เพื่อให้แน่ใจว่าเส้นเริ่มต้นด้วยDefaults
ใน/etc/sudoers
ไม่ได้มีคำว่าrequiretty
- !requiretty
แทนก็ควรมี อย่างไรก็ตามหากคุณทำสิ่งนี้หมายความว่าไม่มีคำสั่ง sudo ที่จะต้องใช้ tty!
คุณจะต้องเพิ่มบรรทัด
rndcuser ALL = (root) NOPASSWD: /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
2. หากคุณต้องการ TTY สำหรับผู้ใช้ทั้งหมดยกเว้นอันนี้
สิ่งนี้สามารถทำได้โดยการตั้งค่าเริ่มต้นสำหรับผู้ใช้รายนี้ดังนี้:
Defaults:rndcuser !requiretty
rndcuser ALL = (root) NOPASSWD: /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
3. หากคุณต้องการสร้าง TTY สำหรับคำสั่งทั้งหมดยกเว้นคำสั่งเดียวนี้โดยผู้ใช้รายนี้
นี่คือความซับซ้อนเล็กน้อยเนื่องจากไวยากรณ์ของไฟล์ sudoers คุณจะต้องสร้างนามแฝงคำสั่งสำหรับคำสั่งแล้วตั้งค่าเริ่มต้นสำหรับนามแฝงคำสั่งนั้นเช่น:
Cmnd_Alias RNDC_CMD = /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
Defaults!RNDC_CMD !requiretty
rndcuser ALL = (root) NOPASSWD: RNDC_CMD
sudo
สำหรับ ธุรกิจของคุณคัดค้านอะไรที่เขาใช้sudo
ในเรื่องนี้?