sudo命令的使用详解与配置方法
命令使用格式:
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 可以追踪那个用户执行了那个命令。