学习sudo权限的设置
使用visudo 命令配置默认配置/etc/sudoers文件
文章目录
- 学习sudo权限的设置
- 使用visudo 命令配置默认配置/etc/sudoers文件
- 概述
- 基本授权操作
- 1、授权sun⽤户完成 /usr/bin/cat /etc/shadow
- 2、授权某个⽤户组的⽤户具有特定权限
- 2、授权时间限制,默认5分钟内不⽤再次输⼊密码
- 3、sudoers配置⽂件中的其他配置⽅式
- 4、使⽤sudo时取消输⼊密码过程,在command前加上NOPASSWD
- 5、配置⽂件中定义别名
- 6、默认⽤户,使⽤sudo是可以使⽤-u 选项制定runas⽤户,不加-u是使⽤默认⽤户
- 7、在配置⽂件中使⽤通配符,使⽤时需要注意,有可能有漏洞
- 8、使⽤sudo -l 或者 -ll 查看当前⽤户具有的sudo可执⾏情况
- 9、不执⾏任何命令,将⽤户的免密码时间更新⼀下:sodu -v
- 10、sudo -k
- 11、sudo -i -u user有切换⽤户功能,root有此功能, 授权sun⽤户切换到root⽤户
- 12、给⽤户授权编辑sudoers⽂件的权限 使⽤sudoedit 即可
概述
centos7系统;在CentOS7上是 sudo.x86_64,使用yum install sudo命令即可安装。
sudo 的配置文件为/etc/sudoers、/etc/sudoers.d、/etc/sudoers 为总配置文件,也可以
在/etc/sudoers.d/文件夹下单独创建配置文件,实现配置分别管理。
可通过/usr/sbin/visudo 对配置文件进行编辑。
sudo程序的可执行文件为/usr/bin/sudo 有特殊权限位。
基本授权操作
sun 172.20.121.11=(root) /bin/cat /etc/shadow
被授权用户 登录主机地址=(授权成的用户) 授权的具体命令
被授权用户 user: 命令的发起用户
登录主机 host: 被授权用户所在的主机地址,可以写成ALL
授权成的用户 (runas): 想用哪个用户身份去运行命令
授权命令 command: 想被授权的命令 ,可以写成ALL 即所有命
-a type 使用指定的 BSD 认证类型
-b 在后台运行命令
-C fd 关闭所有 >= fd 的文件描述符
-E 在执行命令时保留用户环境
-e 编辑文件而非执行命令
-g group 以指定的用户组执行命令
-H 将 HOME 变量设为目标用户的主目录。
-h 显示帮助消息并退出
-i [command] 以目标用户身份运行一个登录 shell
-K 完全移除时间戳文件
-k 无效的时间戳文件
-l[l] command 列出用户能执行的命令
-n 非交互模式,将不提示用户
-P 保留组向量,而非设置为目标的组向量
-p prompt 使用指定的密码提示
-S 从标准输入读取密码
-s [command] 以目标用户身份运行 shell
-U user 在列表时,列出指定用户的权限
-u user 以指定用户身份运行命令(或编辑文件)
-V 显示版本信息并退出
-v 更新用户的时间戳而不执行命令
-- 停止处理命令行参数
1、授权sun⽤户完成 /usr/bin/cat /etc/shadow
编辑/etc/sudoers ⽂件
root ALL=(ALL) ALL
sun 192.168.26.6=(root) /bin/cat /etc/shadow
----------------------------------------------------
使用sun用户直接cat /etc/shadow 提示权限不够;
使用sudo cat /etc/shadow 提示输入sun用户密码,让后执行授权操
----------------------------------------------------
cat /etc/shadow 不能访问
sudo cat /etc/shadow 输入密码后可访问
2、授权某个⽤户组的⽤户具有特定权限
visudo 编辑 配置⽂件/etc/sudoers 配置如下
%wheel ALL=(ALL) ALL
%tom ALL=(ALL) ALL
tom组的⽤户具有所有⽤户的所有命令的权限
su -l tom
sudo cat /etc/shadow
输入密码即可
在/etc/sudoers.d ⽬录下创建授权配置⽂件 tom,并授权成root权限,可执⾏所有命令
cd /etc/sudoers.d/
vim tom
tom ALL=(root) ALL
-------------------------
su -l tom
cat /etc/shadow #拒绝
sudo /etc/shadow #输入密码即可
对于/etc/sudoers.d 下的授权管理配置⽂件也可以⽤visudo编辑,使⽤-f选项即可
visudo -f /etc/sudoers.d/tom
visudo 可以加上-c选项进⾏内容格式检查
visudo -c -f /etc/sudoers.d/tom
2、授权时间限制,默认5分钟内不⽤再次输⼊密码
使⽤sudo -V 可以查看⼀下sudo的详细信息
sudo -V
---------------------------------------
...
Authentication timestamp timeout: 5.0 minutes
Password prompt timeout: 5.0 minutes
Number of tries to enter a password: 3
Umask to use or 0777 to use user's: 022
Path to mail program: /usr/sbin/sendmail
Flags for mail program: -t
Address to send mail to: root
Subject line for mail messages: *** SECURITY information for %h ***
Incorrect password message: Sorry, try again.
Path to authentication timestamp dir: /var/db/sudo #时间戳文件路径
...
---------------------------------------------------
查看⼀下对应⽤户的时间戳⽂件,⽂件内容不可直接查看
[root@centos6 ~]# cd /var/db/sudo #时间戳文件路径
[root@centos6 sudo]# ll
total 4
drwx------ 2 root sun 4096 Nov 10 18:07 sun
[root@centos6 sudo]# cat sun
cat: sun: Is a directory
[root@centos6 sudo]# cd sun/
[root@centos6 sun]# ll
total 4
-rw------- 1 root sun 48 Nov 10 18:11 1
[root@centos6 sun]# cat 1
ᆝQ®
3、sudoers配置⽂件中的其他配置⽅式
user host=(runas) command
其中user除了使⽤⽤户名外,还可以使⽤#uid代替user还可以使⽤⽤户组名
为了和⽤户名作区分,需要使⽤%groupname,同样使⽤%#gid代替也可以。
使⽤wang⽤户的uid进⾏授权操作,使⽤tom组id进⾏授权操作
#编辑授权配置⽂件
[root@centos6 sun]# cat /etc/passwd | grep sun
sun:x:500:500:sunxiaobo:/home/sun:/bin/bash
------------------------------------------------
[root@centos6 sun]# visudo -f /etc/sudoers.d/test
[root@centos6 sun]# cat /etc/sudoers.d/test
%#1000 ALL=(ALL) ALL
4、使⽤sudo时取消输⼊密码过程,在command前加上NOPASSWD
[root@centos6 sun]# visudo -f /etc/sudoers.d/test
[root@centos6 sun]# cat /etc/sudoers.d/test
sun ALL=(ALL) NOPASSWD:AL
[root@centos6 sun]# su -l sun
[sun@centos6 ~]$ cat /etc/shadow | grep root
cat: /etc/shadow: Permission denied #权限拒绝
[sun@centos6 ~]$ sudo cat /etc/shadow | grep root
root:$6$.L/ggVlq$D2qqIHGALvmeBjauATdeiF/Cc1A3Au.q.vtK...
[sun@centos6 ~]$ exit
5、配置⽂件中定义别名
配置⽂件中的4个部分都可以使⽤别名替换,别名只能使⽤⼤写字⺟和数字构成,以字⺟开头
每种⽂件都有特定的定义⽅法
cat /etc/sudoers.d/test
User_Alias SYSUSER=sun
HostAlias SYSHOST=192.168.26.6
Runas_Alias SYSRUNAS=root
Cmnd_Alias SYSCMD=/bin/cat /etc/shadow
SYSUSER SYSHOST=(SYSRUNAS) SYSCMD
su -l sun
cat /etc/shadow #权限拒绝
sudo cat /etc/shadow | grep root #可以查看
授权时禁⽌直⾏特定的命令,需要再命令前加上!
visudo -f /etc/sudoers.d/test
cat /etc/sudoers.d/test
sun ALL=(root) /bin/cat /etc/sudoers.d/test
su -l sun
cat /etc/shadow #权限拒绝
cat /etc/gshadow #权限拒绝
sudo cat /etc/shadow | grep sun
sudo cat /etc/gshadow | grep sun
exit
6、默认⽤户,使⽤sudo是可以使⽤-u 选项制定runas⽤户,不加-u是使⽤默认⽤户
设置tom为默认⽤户
cat /etc/sudoers.d/test
Defaults:sun runas_default=tom
sun ALL=(tom,root) ALL
su -l sun
cat /etc/shadow | grep root #权限拒绝
sudo cat /etc/shadow | grep root #权限拒绝
sudo -u root cat /etc/shadow | grep root
exit
将tom换成root
visudo -f /etc/sudoers.d/test
cat /etc/sudoers.d/test
Defaults:sun runas_default=root
sun ALL=(tom,root) ALL
su -l sun
cat /etc/shadow | grep root #权限拒绝
sudo -u tom cat /etc/shadow | grep root #权限拒绝
sudo cat /etc/shadow | grep root
exit
7、在配置⽂件中使⽤通配符,使⽤时需要注意,有可能有漏洞
在命令后⾯加上*号,会出现如下漏洞,未授权查看/etc/shadow,但是却可以查看shadow⽂件
cat /etc/sudoers.d/test
sun ALL=(root) /bin/head -1 /var/log/message*
su -l sun
head -1 /var/log/messages
权限拒绝;
sudo head -1 /var/log/messages
sudo head -1 /var/log/messages /etc/shadow
8、使⽤sudo -l 或者 -ll 查看当前⽤户具有的sudo可执⾏情况
visudo -f /etc/sudoers.d/test
cat /etc/sudoers.d/test
sun ALL=(root) /bin/head -1 /var/log/messages
su -l sun
sudo head -1 /var/log/messages
sudo -l
sudo -ll
exit
9、不执⾏任何命令,将⽤户的免密码时间更新⼀下:sodu -v
cd /var/run/sudo/ts/
date
su -l sun
sudo -v
exit
date
10、sudo -k
sudo -k 可以重置密码时间为1970年01⽉01⽇
由于当前时间肯定⼤于这个时间,因此下次执⾏sudo时,需要输⼊密码
sudo -K 可以删除时间戳⽂件,因此下次执⾏sudo时需要输⼊密码
ll
su -l sun
sudo -K
exit
su -l sun
sudo head -1 /var/log/messages
exit
ll
11、sudo -i -u user有切换⽤户功能,root有此功能, 授权sun⽤户切换到root⽤户
sudo -i -u sun
sudo -i -u root
输入密码;
exit
visodu -f /etc/sudoers.d/test
cat /etc/sudoers.d/test
tom ALL=(root) ALL
su -l sun
sudo -i -u root
输入密码;
exit
exit
12、给⽤户授权编辑sudoers⽂件的权限 使⽤sudoedit 即可
visodu -f /etc/sudoers.d/test
cat /etc/sudoers.d/test
sun ALL=(root) /bin/cat /etc/shadow
su -l sun
sudoedit /etc/sudoers
权限拒绝;
exit
visudo -f /etc/sudoers.d/test
cat /etc/sudoers.d/test
tom ALL=(root) /bin/cat /etc/shadow, sudoedit
su -l sun
sudoedit /etc/sudoers
exit