命令使用格式:

sudo [-l user] command            某个用户通过另一个用户的身份在某台主机上执行命令

        使用sudo命令会让你输入密码,密码为当前用户的密码,密码会保持5分钟,在此时间内使用命令不用再次输入密码。

    -k        使用 sudo -k 命令就不会保存密码。

    -l        列出当前用户所有可用的sudo命令


配置文件目录:

        sudo命令的配置文件/etc/sudoers,visodu专门用来编辑/etc/sudoers文件的命令。

        自定义sudo文件可以放在/etc/sudoers.d/ 中,文件名任意,修改文件权限为440。


sodu配置

        配置格式为:usernames  hosts=(users)  commands


用户授权:

        root        ALL=(ALL)       ALL        root用户所有权限,括号的ALL表示root

        qiyang    ALL=(root)      ALL        用户qiyang可以用root身份来执行所有命令

        qiyang    ALL=(ALL)   NOPASSWD: ALL    不输入密码执行命令

例:

# 允许ops用户在192.168.1.12节点上以root身份来执行(/usr/bin/mount /dev/cdrom /mnt)这个操作,注意/mnt后面有“/”则执行命令的时候也要加“/”。
ops 192.168.1.12=(root) /usr/bin/mount /dev/cdrom /mnt
# 多个命令用逗号分隔
ops 192.168.1.12=(root) /usr/bin/mount /dev/cdrom /mnt,/usr/bin/mount /mnt # 不写/mnt代表所有目录都可以卸载

例2:

# 在192.168.199.12,192.168.199.11两个节点上可以以root身份执行/usr/sbin/文件夹里的所有命令,但是不可以执行/usr/sbin/useradd命令
ops 192.168.199.12,192.168.199.11=(root) /usr/sbin/,!/usr/sbin/useradd


组授权:

        %wheel  ALL=(ALL)       ALL        所有加入到wheel组的用户都可以使用root身份来运行命令。


        qiyang     ALL=(root)   /usr/sbin/useradd, /usr/sbin/usermod        括号中的root表示以root用户的身份执行命令,命令必须要以全路径的方式定义

        qiyang     ALL=(root)  NOPASSWD:  /usr/sbin/useradd              在命令前加上NOPASSWD:前缀再使用命令时就可以不用输入密码了

        qiyang     ALL=(root)  NOPASSWD: /usr/sbin/useradd,  PASSWD: /usr/sbin/usermod     这样只有usermod命令需要输入密码,而useradd则不需要


sudoedit:

授权用户sudoedit命令,这样用户就可以编辑/etc/sudoers文件了

ops ALL= sudoedit # 等于号后面不写相当于ALL即所有用户

sudoedit /etc/sudoers

使用通配符授权文件,但是有安全隐患

ops ALL= /bin/cat /var/log/xxx*

修改sudo输入密码的超时时间:

sudoedit /etc/sudoers
Defaults env_reset,timestamp_timeout=2 # 1/6 为一小时,2就是18000分钟

查看到密码过期时间

sudo -V | grep timeout
Authentication timestamp timeout: 18000.0 minutes


别名:

        定义别名可以方便书写和配置,别名类型有:

User_Alias
Runas_Alias
Host_Alias
Cmmd_Alias

定义别名:

User_Alias USERNAMES = qiyang, %shared, %public : USERNAMES1 = ops # 多个用冒号隔开
Cmnd_Alias COMMANDS = /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel, /usr/bin/passwd [A-za-z]*, ! /usr/bin/passwd root

使用别名:

USERNAMES    ALL=(root) NOPASSWD: COMMANDS

        1、定义用户名和组名时如例子中的第一行,User_Alias为定义别名的前缀,USERNAMES为别名,等号后面的是用户名和组名,用户名直接写上即可,组名要在前面加上百分号“%”。

        2、Cmnd_Alias为定义命令的前缀,后面为命令别名,别名要写全路径。其中  !  /usr/bin/passwd  root 这条命令的意义为 不许用passwd命令执行对root用户的任何操作。

        3、使用别名的时候同上面的配置一样,只要把用户名和命令换成对应的别名即可。

        4、Host_Alias主机的别名。主机名、ip、网络地址、主机别名。

        5、Runas_Alias以那些用户执行命令,主机名、组名。

        6、别名可以嵌套使用。


日志文件:

        sudo命令的日志文件:/var/log/secure 可以追踪那个用户执行了那个命令。