普通用户运行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    可以给用户或组,主机,切换的用户角色,或者命令起别名

linux sudo命令详解_sed

什么时候需要用别名:

     工作中与一般有多个系统用户,需要分类,分层次管理用户的时候。

举例如下

linux sudo命令详解_sed_02

 

linux sudo命令详解_sed_03

 

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