Poweroff หรือ Reboot เป็นผู้ใช้ปกติ


17

ในการรันคำสั่งpoweroffหรือrebootจำเป็นต้องเป็นผู้ใช้ขั้นสูง มีอยู่ฉันสามารถเรียกใช้สิ่งนี้ในฐานะผู้ใช้ปกติได้หรือไม่ ฉันไม่ต้องการsudoและใส่รหัสผ่านทุกครั้งที่ฉันรีบูทหรือปิดเครื่อง


2
คำตอบขึ้นอยู่กับว่าระบบ init ใดที่ distro ของคุณใช้ ... ตัวอย่างเช่นด้วยsystemdและlogindเซสชันที่ใช้งานอยู่คุณสามารถรีบูตหรือ poweroff โดยไม่มีสิทธิ์ยกระดับหากไม่มีผู้ใช้รายอื่นเข้าสู่ระบบ ...
jasonwryan

@ jasonwryan ฉันกำลังใช้ Ubuntu ซึ่งไม่ได้ใช้งานsystemdตามค่าเริ่มต้นคุณหมายถึง Distros อื่น ๆ เช่น Arch สามารถรีบูตโดยไม่มีสิทธิ์พิเศษหรือไม่
Stormvirux

ใช่: เป็นไปตามเงื่อนไขในความคิดเห็นแรกของฉัน
jasonwryan

คำตอบ:


22

ฉันเปลี่ยน/etc/sudoersเพื่อให้ผู้ใช้ทุกคนที่อยู่ในกลุ่มผู้ดูแลระบบสามารถดำเนินการคำสั่งต่อไปนี้โดยไม่ต้องขอรหัสผ่าน

sudo halt
sudo reboot
sudo poweroff

คุณเพียงแค่ต้องเพิ่มบรรทัดต่อไปนี้ /etc/sudoers

## Admin user group is allowed to execute halt and reboot 
%admin ALL=NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

และเพิ่มตัวคุณเองในกลุ่มผู้ดูแลระบบ

หากคุณต้องการให้ผู้ใช้เพียงคนเดียวสามารถทำได้เพียงแค่ลบ%adminและแทนที่ด้วยusernameแบบนี้

## user is allowed to execute halt and reboot 
stormvirux ALL=NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยว/etc/sudoersกับด้วยman sudoersหรือmanpage ออนไลน์


4

คุณยังสามารถสร้างไฟล์ใหม่ภายใต้/etc/sudoers.dชื่อไฟล์ตามที่คุณต้องการ (ฉันตั้งชื่อไฟล์'shutdown') และวางบรรทัดต่อไปนี้ไว้ภายใน:

# Allows me to shutdown the system without a password

yourUserName ALL = NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

การเปลี่ยนแปลงเพียงแค่ "yourusername" shutdownสำหรับผู้ใช้ของคุณชื่อและเพิ่มหรือลบคำสั่งการใช้งานส่วนตัวผมใช้เฉพาะสำหรับ หนึ่งในความแตกต่างหลักของการสร้างไฟล์เฉพาะภายใต้sudoers.dคือไฟล์นี้จะอยู่รอดการอัพเกรดระบบ


1
หากคุณเลือกวิธีการนี้ให้แน่ใจว่า/etc/sudoersมีความเหมาะสมสั่งการอ่านไฟล์จาก#include /etc/sudoers.d/
patricktokeeffe

2

คุณสามารถทำสิ่งนี้ได้ด้วยการหลอกด้วย setuid ฉันไม่รู้ว่ามันจะใช้ได้กับทุกระบบหรือไม่เพราะบางครั้งพวกเขาก็ไม่สนใจบิต setuid / setgid

admคุณสามารถระบุกลุ่มของผู้ใช้ที่สามารถดำเนินการเปลี่ยนแปลงสถานะของระบบในกรณีของฉันมันเป็น จากนั้นเพิ่มผู้ใช้ที่เหมาะสมในกลุ่มนี้

gpasswd -a $USER adm

ระบุการอนุญาต:

chmod 4550 /usr/bin/reboot

ls -l outpus ควรมีลักษณะเช่นนี้:

-r-sr-x--- 1 root adm 18928 Mar 13  2015 /usr/bin/reboot

หลังจากนั้นคุณสามารถพิมพ์:

reboot

1

วิธีที่ง่ายที่สุด:

sudo echo $USER >> /etc/shutdown.allow

จากนั้นคุณสามารถใช้หนึ่งในคำสั่งนี้:

shutdown -ah now   // halt
shutdown -ar now   // reboot

ตามการปิดระบบของมนุษย์มีตัวเลือก-aสำหรับการใช้งานที่ไม่ใช่รูท:

หากshutdownถูกเรียกด้วยอาร์กิวเมนต์-a (เพิ่มสิ่งนี้ลงในการเรียกใช้การปิดระบบใน/ etc / inittab ) จะตรวจสอบว่าไฟล์/etc/shutdown.allowมีอยู่หรือไม่ จากนั้นจะเปรียบเทียบชื่อล็อกอินในไฟล์นั้นกับรายชื่อบุคคลที่ล็อกอินในคอนโซลเสมือน ...

มันทำงานได้ใน Debian Linux และมีขีด จำกัด สำหรับ 32 /etc/shutdown.allowในชื่อผู้ใช้


4
ไม่มีตัวเลือกเช่น Fedora, CentOS หรือ RHEL
fpmurphy

1
นี่ยังใช้งานไม่ได้กับ Ubuntu อย่างน้อยนั่นก็คือสิ่งที่ฉันได้รับจากเอกสาร มันจะมีประโยชน์ที่จะดูว่านี่เป็นคุณสมบัติของเดเบียนเท่านั้นหรือไม่
Raphael Ahrens

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