天天看點

Linux下普通使用者執行關機、重新開機指令方法1(推薦)方法2(不安全)方法3(xfce桌面下,gnome等桌面并不可行)意外情況

方法1(推薦)

在root使用者下用visudo指令添加以下代碼到/etc/sudoers檔案的末端。替換其中的user為你的使用者名,hostname為你的主機名(可以使用hostname指令查詢)。

user hostname=NOPASSWD: /sbin/shutdown -h now
user hostname=NOPASSWD: /sbin/reboot
           

或者合并為一行表示

user hostname=NOPASSWD: /sbin/shutdown -h now,/sbin/reboot
           

修改完之後ctrl+o寫入,ctrl+x退出編輯。

現在你的使用者可以用sudo shutdown -h now指令關機,reboot指令重新開機了。

注意:修改完仔細檢查,寫錯了會導緻無法進入root權限,如果出現了錯誤可以參照文章最後進行修複

方法2(不安全)

[email protected] ~]#whereis reboot                        #查找reboot的位置
reboot: /sbin/reboot  /usr/share/man/man8/reboot.8.gz
[[email protected] ~]#su user                              #切換到user
[[email protected] root]$ reboot                           #執行重新開機測試
reboot: Need to be root                                 #提示需要root
[[email protected] root]$ exit                             #退回到root使用者
exit
[[email protected] ~]# ll /sbin/reboot         #檢視預設/sbin/reboot的詳細資訊
-rwxr-xr-x. 1 root root 13932 Jul 19  2011 /sbin/reboot #注意看前三個為rwx
[[email protected] ~]# chmod u+s /sbin/reboot              #增加suid權限
[[email protected] ~]# ll /sbin/reboot                     #重新檢視修改後的/sbin/reboot詳細資訊
-rwsr-xr-x. 1 root root 13932 Jul 19  2011 /sbin/reboot #這時候已經變更為rws
[[email protected] ~]# su user                             #重新切換到user使用者
[use[email protected] root]$ reboot                           #執行reboot指令
           

方法3(xfce桌面下,gnome等桌面并不可行)

在Xfce下,如果你希望使用者利用Halt關機,需要安裝sudo。然後用visudo -f指令添加以下内容到/etc/sudoers中

對所有使用者:

%users hostname=NOPASSWD:/usr/lib/xfce4/xfsm-shutdown-helper
           

對單一使用者:

user hostname=NOPASSWD:/usr/lib/xfce4/xfsm-shutdown-helper
           

替換其中的user為你的使用者名,hostname為你的主機名。

這樣你定義了的使用者的“關機”和“重新開機”選項就激活了。

意外情況

因為修改了/etc/sudoers以及相關權限,導緻sudo無法使用,錯誤如下:

sudo: >>> /etc/sudoers:syntax error 在行  附近<<<   
sudo: /etc/sudoer中第  行附近有解析錯誤   
sudo: 沒有找到有效的 sudoers 資源,退出                                         
sudo: 無法初始化政策插件
           

解決方法:

1、重新開機ubuntu,啟動時按Esc或Shift鍵,可以看到引導選項;

2、在引導選項中選擇Recovery模式的那一項來引導;

3、進入Recovery Menu頁面,選擇root,也就是進入試用root使用者進行系統恢複,在這裡可以執行超級使用者的權限的操作,回車後可以看到熟悉的 [email protected] ~# 指令提示符;

4、設定或者撤銷/etc/sudoers檔案的權限,也可以将該檔案改回到發生錯誤之前的狀态。

chmod  /dev/null
    mount -o remount rw /
    vi /etc/sudoers 
    恢複本檔案内容并存盤(:wq!)
           

5、退出Recovery模式,重新啟動ubuntu。

繼續閱讀