目录
su 切换用户
su - 用户名 使用login shell 方式切换用户
sudo 以其他用户身份执行命令
visudo 设置需要使用sudo的用户(组)
当我们用root用户下想让系统30分钟关机就输入shutdown -h 30这条命令,切换至普通用户user2时就无法使用shutdown -c来取消这条关机的命令,这时候可以使用su - root命令切换回root用户来执行shutdown -c命令,但是这样管理员root用户的密码就被普通用户知道了,不能保证安全性,所以我们怎么样才能既保证安全性,又可以让普通用户执行想要的命令呢?
授予用户命令权限的步骤
以shutdown -c举例
1.给user2设置密码
passwd user2 //为用户user2设置密码
2.给user2赋予需要执行命令的权限
visudo //打开visudo的样例文件
在后面的三个字段来编辑执行相关的信息
第一个字段:指的是授予哪一个用户或用户组可以执行这些命令,用户可以直接写用户名称,用户组前面需要加%,比如下图中的%wheel和%users。
第二个字段:表示在哪一台主机上执行哪些命令,多个命令之间可以用逗号隔开,因为Linux登录可以通过本地登录也可以通过远程登录,比如如果允许本地登录访问可以使用localhost,本地登录和远程登录都允许访问可以使用ALL。
第三个字段:表示普通用户执行这些指令时是否需要输入密码,不建议使用NOPASSWD。
赋予user2用户shutdown -c权限步骤:
1.按G将光标切换到文本末端,按o进入另起一行编辑模式
2.输入user2 ALL=/sbin/shutdown -c
3.按ESC键返回普通模式
4.输入:wq保存并退出
当设置命令时候不清楚命令的完整路径,可以先暂时返回普通模式使用:!which+命令名称来获取命令的完整路径
:!which shutdown //获取shutdown的完全路径
设置完成之后进行验证的步骤
shutdown -h 30 //现在root用户下设置一个30分钟后关机的命令
su - user2 //切换至user2用户
shutdown -c //直接输入关闭关机命令,发现权限不够
sudo /sbin/shutdown -c //使用sudo加上命令的完整路径
最后输入root用户为user2设置的密码之后成功执行shutdown -c