linux进阶-sudo命令的理解

学习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 即可

linux进阶-sudo命令的理解_第1张图片

概述

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

你可能感兴趣的:(linux进阶)