จะให้สิทธิ์การปิดระบบแก่ผู้ใช้ได้อย่างไร?


9

ฉันใช้ Ubuntu 11.04 ฉันต้องการเรียกใช้สคริปต์ที่ตรวจสอบกระบวนการทำงานและปิดระบบเมื่อกระบวนการนั้นสิ้นสุดลง ในการทำเช่นนี้ผู้ใช้จำเป็นต้องเข้าถึงการปิดระบบเพื่อให้สคริปต์สามารถดำเนินการได้โดยไม่ต้องใช้รหัสผ่าน

ฉันอ้างถึงหน้านี้และเพิ่มข้อความในไฟล์ sudoers ของฉัน sudo shutdown -h nowแต่ก็ยังคงขอให้ฉันรหัสผ่านทุกครั้งที่ผมดำเนินการ นอกจากนี้ฉันได้รับข้อผิดพลาดที่บอกว่าจำเป็นต้องมีสิทธิ์ใช้งานรูทเมื่อฉันปิดการทำงานโดยไม่ต้องใช้ sudo

ไฟล์ sudoers ของฉันมีลักษณะเช่นนี้

# Cmnd alias specification
Cmnd_Alias      SHUTDOWN = /sbin/shutdown

# User privilege specification
root    ALL=(ALL:ALL) ALL
myusername    ALL = NOPASSWD: SHUTDOWN

ฉันจะให้สิทธิ์แก่ผู้ใช้เพื่อดำเนินการคำสั่งปิดเครื่องโดยไม่ต้องป้อนรหัสผ่านด้วยตนเองได้อย่างไร

ขอบคุณ


1
คุณช่วยโพสต์sudoersไฟล์จริงและไฟล์ทั้งหมดได้ไหม
enzotib

คำตอบ:


6

คุณสามารถปิดหรือรีสตาร์ทโดยใช้ HAL หรือ ConsoleKit ซึ่งคุณไม่จำเป็นต้องป้อนชื่อผู้ใช้ / รหัสผ่าน:

HAL (เวอร์ชั่น Ubuntu เก่ากว่า):

dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown

ConsoleKit (เวอร์ชั่นใหม่กว่าของ Ubuntu ทดสอบบน Ubuntu 11.04):

dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

7

ฉันทำเช่นนั้นในคำตอบนี้ทำงานได้อย่างไร้ที่ติสำหรับฉัน บางทีวิธีการของคุณคิดถึงvisudoส่วนหนึ่ง?

เปิดบรรทัดคำสั่งและพิมพ์:

sudo visudo 

ในไฟล์ที่เปิดเพิ่มบรรทัดต่อไปนี้ในตอนท้าย:

yourusername ALL=NOPASSWD: /sbin/halt

จากนั้นออกจากเครื่องมือแก้ไขและป้องกัน (CTRL + x)

ตอนนี้คุณสามารถปิดคอมพิวเตอร์ของคุณจากบรรทัดคำสั่งเช่นหลังจากที่คุณดาวน์โหลดบางสิ่ง:

wget UrlOfTheFileYouWantToDownload ; sudo halt

1

เมื่อก่อนฉันทำสิ่งนี้โดยตั้ง suid (ตั้งค่า ID ผู้ใช้) สิ่งนี้ทำให้โปรแกรมดำเนินการในฐานะเจ้าของไฟล์ไม่ใช่ผู้ใช้ที่เรียกใช้ เนื่องจากการปิดระบบเป็นของ root จึงควรให้คุณปิดระบบโดยไม่ต้องใช้ sudo

chmod u+s /sbin/shutdown

มีผลกระทบด้านความปลอดภัยแม้ว่าจะมีใครก็ตามสามารถเรียกใช้การปิดระบบได้ http://en.wikipedia.org/wiki/Setuid


โดยทั่วไปจะไม่แนะนำให้แก้ไขไฟล์หรือข้อมูลเมตาของไฟล์ติดตั้งจากแพคเกจอื่น ๆ /etcนอกเหนือจากแฟ้มการกำหนดค่าใน
enzotib

อืม ... จริง! แต่อย่างเป็นทางการแล้วคืออะไร? กำลังเล่นกับ polkit? ไม่ดีเช่นกัน ...
เทอร์โบ

sudoเป็นวิธีที่ถูกต้องในความคิดของฉัน แต่น่าเสียดายที่ผู้ใช้ไม่ได้ให้โอกาสที่จะดูsudoersไฟล์และสิ่งที่ผิดกับมัน
enzotib

นี่เป็นสิ่งเดียวที่ทำงานให้ฉัน
Mark Stewart

0

ดูเหมือนว่าคุณต้องการเรียกใช้สคริปต์ในฐานะรูท หากคุณต้องการเรียกใช้สคริปต์ที่รอให้บางสิ่งบางอย่างเสร็จสิ้นจากนั้นปิดคอมพิวเตอร์ของคุณคุณเพียงแค่เรียกใช้สคริปต์ด้วย sudo ที่จะถามรหัสผ่านของคุณเมื่อคุณเรียกใช้สคริปต์ แต่สคริปต์นั้นมีอิสระในการปิดระบบโดยไม่ต้องดำเนินการใด ๆ เพิ่มเติม

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