linux下允许普通用户执行关机(halt|shutdown)或重启(reboot)指令

1、使用suid让普通用户也具有重启linux系统的权限。
linux对权限把控比较严格,普通用户没有关机或重启的权限。
今天群里有朋友问,如何让linux的普通用户也有关机和重启的权限。
测试了一下,写下来供大家参考。

以下是测试的过程。

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指令
Broadcast message from root@localhost.localdomain       #重启成功
        (/dev/pts/0) at 21:28 ...
The system is going down for reboot NOW!               

2、另一种方法,使用sudo!
上面这样做被认为是一种对安全的威胁,因为包括root在内的所有用户都可以关机和重启了。比较安全些的方法是使用sudo命令。首先安装sudo:

#pacman -S sudo

然后,在root用户下用visudo命令添加以下到/etc/sudoers文件的末端。替换其中的user为你的用户名,hostname为你的主机名。
user hostname=NOPASSWD: /sbin/shutdown -h now
user hostname=NOPASSWD: /sbin/reboot
或者合并为一行表示
user hostname=NOPASSWD: /sbin/shutdown -h now,/sbin/reboot
现在你的用户可以用sudo shutdown -h now命令关机,reboot命令重启了。

3、方法三:Xfce
在Xfce下,如果你希望用户利用Hal关机,需要安装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为你的主机名(你可以用hostname命令得到它)。
这样你定义了的用户的“关机”和“重启”选项就激活了。

4、我们知道,可以用sudo halt -p这样的命令,让普通用户关闭计算机。但是如何不使用sudo就可以让普通用户关闭计算机呢。
我们可以将用户加入到operator组中,这样就可以直接用命令halt -p关闭计算机了。
将用户test增加到operator组中
pw groupmod operator -m test

你可能感兴趣的:(linux)