Linux下普通用戶執行關機、重啓指令

方法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(不安全)

root@localhost ~]#whereis reboot                        #查找reboot的位置
reboot: /sbin/reboot  /usr/share/man/man8/reboot.8.gz
[root@localhost ~]#su user                              #切換到user
[user@localhost root]$ reboot                           #執行重啓測試
reboot: Need to be root                                 #提示需要root
[user@localhost root]$ exit                             #退回到root用戶
exit
[root@localhost ~]# ll /sbin/reboot         #查看默認/sbin/reboot的詳細信息
-rwxr-xr-x. 1 root root 13932 Jul 19  2011 /sbin/reboot #注意看前三個爲rwx
[root@localhost ~]# chmod u+s /sbin/reboot              #增加suid權限
[root@localhost ~]# ll /sbin/reboot                     #重新查看修改後的/sbin/reboot詳細信息
-rwsr-xr-x. 1 root root 13932 Jul 19  2011 /sbin/reboot #這時候已經變更爲rws
[root@localhost ~]# su user                             #重新切換到user用戶
[user@localhost 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 在行 32 附近<<<   
sudo: /etc/sudoer中第 32 行附近有解析錯誤   
sudo: 沒有找到有效的 sudoers 資源,退出                                         
sudo: 無法初始化策略插件

解決方法:
1、重啓ubuntu,啓動時按Esc或Shift鍵,可以看到引導選項;
2、在引導選項中選擇Recovery模式的那一項來引導;
3、進入Recovery Menu頁面,選擇root,也就是進入試用root用戶進行系統恢復,在這裏可以執行超級用戶的權限的操作,回車後可以看到熟悉的 root@user ~# 命令提示符;
4、設置或者撤銷/etc/sudoers文件的權限,也可以將該文件改回到發生錯誤之前的狀態。

    chmod 666 /dev/null
    mount -o remount rw /
    vi /etc/sudoers 
    恢復本文件內容並存盤(:wq!)

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章