วิธีการอนุญาตให้ดำเนินการโดยไม่ต้องแจ้งรหัสผ่านโดยใช้ sudo


15

ฉันกำลังเขียนแอปพลิเคชัน Java ที่ฉันต้องทำการประมวลผลบรรทัดคำสั่งและได้รับผลกลับ แต่เมื่อฉันรันคำสั่งมันขอรหัสผ่าน sudo จนถึงตอนนี้ฉันพยายาม:

$ sudo -s
$ vim /etc/sudoers
# User privilege specification
root         ALL=(ALL:ALL) NOPASSWD: ALL
javauser     ALL=(ALL:ALL) NOPASSWD: ALL

:wq
$ 4 -r--r-----   1 root root     615 2011-10-26 09:23 sudoers

เมื่อฉันรันคำสั่งมันจะถามรหัสผ่าน "[javauser] สำหรับ javauser:" อีกครั้ง แต่ฉันพูดถึง noPASSWD แล้ว

whoamiส่งคืนalexและฉันกำลังเพิ่มเป็นเช่นนี้ในsudoersไฟล์

# User privilege specification
root    ALL=(ALL:ALL) ALL
alex 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

วิ่งถามรหัสผ่านของฉันความคิดใดบ้าง


ดูเหมือนว่ามีคำถามที่คล้ายกันอยู่แล้ว: askubuntu.com/questions/39281/… - คุณได้ลองคำตอบจากที่นั่นหรือยัง?
Sergey

ตรวจสอบให้แน่ใจว่าในโค้ดจาวาของคุณคุณใช้ "sudo / absolute / path / to / command" ในการเรียกระบบของคุณ Btw เพื่อเหตุผลด้านความปลอดภัยคุณควรใช้sudo visudoแทนvimการแก้ไขไฟล์ sudoers ด้วยวิธีนี้หากคุณทำผิดพลาดโปรแกรมจะเตือนคุณเกี่ยวกับเรื่องนี้
con-f-use

สามารถพบได้ที่นี่สิ่งที่ฉันพยายาม: gist.github.com/1315951

คำตอบ:


28

คุณต้องทำสิ่งต่อไปนี้ในประเภทเทอร์มินัลsudo visudoและเพิ่มบรรทัดแบบนี้ในตอนท้ายของไฟล์ที่ระบุคำสั่งที่คุณต้องการรันโดยไม่ต้องพิมพ์รหัสผ่าน sudo (ฉันแนะนำให้คุณใช้คำสั่งแต่ละคำสั่งที่คุณต้องการใช้ในโปรแกรม ไม่เพียง แต่อนุญาตให้โปรแกรมทั้งหมดดำเนินการโดยสิ่งนี้)

<yourusername> ALL=NOPASSWD: <command1>, <command2>

sudoตอนนี้คุณสามารถเรียกใช้คำสั่งที่ระบุไม่มีรหัสผ่านตราบเท่าที่คุณพิมพ์คำสั่งที่มี

เช่น: ให้บอกว่าคุณต้องการใช้งานshutdown -r nowโดยไม่ต้องพิมพ์รหัสผ่าน sudo ทุกครั้งและชื่อผู้ใช้ของคุณคือ 'joedoe'

  1. พิมพ์sudo visudoบนเทอร์มินัล

  2. เพิ่มjoedoe ALL=NOPASSWD: /usr/sbin/shutdown -r nowเป็นบรรทัดใหม่ที่ท้ายไฟล์ใช้พา ธ สัมบูรณ์ไปยังโปรแกรมที่คุณพยายามใช้

  3. ในโปรแกรมของคุณคุณสามารถใช้งานได้sudo shutdown -r nowโดยไม่ต้องพิมพ์รหัสผ่าน sudo

คุณสามารถค้นหาพา ธ สัมบูรณ์ไปยังโปรแกรมโดยใช้which <program name>บนเทอร์มินัล

มันเป็นเคล็ดลับสกปรกมากที่ทำให้ระบบของคุณเปิดสำหรับอันตรายอื่น ๆ แต่ฉันเดาว่าคุณรู้ว่าคุณกำลังทำอะไรอยู่และต้องการสิ่งนี้

แก้ไข

คุณต้องตรวจสอบให้แน่ใจว่าการอนุญาตที่คุณตั้งค่านั้นอยู่ท้ายไฟล์เพื่อไม่ให้มีการเขียนทับโดยสิทธิ์ของกลุ่ม


ดูเหมือนว่าเขาได้ทำไปแล้ว
con-f-use

หากเขาทำเช่นนั้นแล้วทำไมคุณถึงอธิบายให้เขาฟังว่าเขาควรใช้sudo visudoและไม่vimแก้ไขไฟล์ sudoers? ถ้าเขาทำสิ่งนี้มันจะได้ผล
Bruno Pereira

1
@goOgle คุณพิมพ์sudoต่อหน้าคำสั่งในรหัสของคุณหรือไม่ คุณต้องทำแม้ว่าคุณจะบังคับให้ nopasswd ในไฟล์ sudoers เช่น: การใช้งานไม่เพียง แต่sudo <command> <command>
Bruno Pereira

1
สำหรับฉัน cmd = "whoami" ผลตอบแทนbrunoและ cmd = "sudo whoami"ผลตอบแทนroot
Bruno Pereira

3
พบมัน! สามารถทำซ้ำได้หากบรรทัดของฉันไม่ได้อยู่ที่ส่วนท้ายของsudoersไฟล์ หลังจากกลุ่มที่ได้รับมอบหมาย ฯลฯ จริง ๆ แล้วบรรทัดสุดท้าย! ย้ายบรรทัดไปเป็นบรรทัดสุดท้ายในไฟล์! (หวังว่าจะเป็นแบบนี้)
Bruno Pereira
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.