天天看点

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。

继续阅读