linux sudo命令详解
普通用户运行sudo
首先检查/var/db/sudo下是否有时间戳文件,并检查是否已经超过五分钟?如果未超过五分钟【超过五分钟,用户需要输入口令】,检查/etc/sudoers配置文件是否有运行sudo和执行相应命令的权限 如果有权限则执行命令。
visudo 【可以检查语法】 = vim /etc/sudoers【不会检查语法】
sudo权限配置说明
用户或组 | 授权角色 | 可以执行的命令 |
---|---|---|
user | All = (ALL:ALL) |
1 ALL 2 NOPASSWD:ALL (相当于root) |
user | All = (ALL:ALL) | /user/sbin/useradd ,/usr/sbin/userdel |
一般不要授权all 不然当前用户 sudo su -root 可以以root身份操作服务器,权限过大
同时,用户如果sed命令权限过大时,用户也可以通过sed修改sudo文件来改变自己权限
举例: sudo sed -i "99a, user ALL=(ALL:ALL) NOPASSWD:ALL" 通过sed修改自己权限进而操控整个服务器。
sudo -l :查看当前用户可执行的sudo权限
sudo -k :删除时间戳
/etc/sudoers 可以给用户或组,主机,切换的用户角色,或者命令起别名
什么时候需要用别名:
工作中与一般有多个系统用户,需要分类,分层次管理用户的时候。
举例如下
sudo配置文件/etc/sudoers 授权规则注意事项总结
1) 授权规则中所有ALL 字符串必须为大写字母
2) 运行执行的命令是有顺序的,从测试的结果看,命令的顺序是从后向前,即把禁止执行的命令放在允许执行的命令后面:
如:/usr/sbin/*,/sbin/*,!/usr/sbin/visudo,!/sbin/fdisk ,前面的为允许,后面的为禁止
3) 一行内容超长可以用"\" 斜线换行
4) "!" 表示非,就是命令取反的意思,即禁止执行命令。
远程sudo的使用方法
1 ssh -t hostname sudo cmd
2 如果sudoers文件里面存着 内容 default requiretty 可以把他注释掉
1