【Linux安全系列教程】sudo授权机制
一、关于sudo授权
- 作用
- 为普通用户授权,允许普通用户执行特权命令
- 配置文件
/etc/sudoers
- 建议
visudo
命令进行修改
二、针对单个用户授权
使用
visudo
命令
1.配置文件语法
user MACHINE=COMMANDS
2.针对单个用户授权
需要系统中存在这个用户
martin ALL=/usr/sbin/fdisk,/usr/bin/chmod
#用户 主机名=授权的命令
用户使用
$
代表普通用户,#
代表管理员用户
$ sudo chmod
$ sudo fdisk 硬盘名 #普通用户在使用授权命令的时候,要使用sudo授权
普通用户在进行sudo授权的时候,需要密码认证
[martin@localhost ~]$ sudo fdisk /dev/sda
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for martin:
查看日志
[root@localhost ~]# tail /var/log/secure
Nov 10 15:25:24 localhost sudo: martin : TTY=pts/0 ; PWD=/home/martin ; USER=root ; COMMAND=/sbin/fdisk /dev/sda
Nov 10 15:28:00 localhost sudo: martin : command not allowed ; TTY=pts/0 ; PWD=/home/martin ; USER=root ; COMMAND=/bin/tail /var/log/secure
Nov 10 15:29:20 localhost sudo: martin : command not allowed ; TTY=pts/1 ; PWD=/home/martin ; USER=root ; COMMAND=/bin/rm -rf /tmp/aa /tmp/vmware-root_6217-1681724356
2.取消密码认证
普通用户在
sudo
授权的时候,需要输入密码认证
robin ALL=NOPASSWD:/usr/sbin/fdisk
3.禁用敏感命令
允许用户使用所有命令,除了
rm
命令
robin ALL=NOPASSWD:ALL,!/usr/bin/rm
三、针对用户组授权
1.格式
%用户组 主机名=命令
2.允许技术组的用户使用所有命令,除了rm命令,并且关闭密码认证
%jishu ALL=NOPASSWD:ALL,!/usr/bin/rm
3.Centos7默认的安全机制
建议注释掉
wheel
组,这个组是Centos7
默认自带的,并且这个组默认所有命令都有权限
# %wheel ALL=(ALL) ALL
四、基于命令别名授权
1.格式
%用户名/组名 主机名=命令别名
2.默认的命令别名
系统默认在配置文件中,准备了一些样例
这些默认都是注释掉的
当我们想调用哪个命令别名,先删除注释
## Networking
# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
## Installation and management of software
# Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
## Services
# Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig, /usr/bin/systemctl start, /usr/bin/systemctl stop, /usr/bin/systemctl reload, /usr/bin/systemctl restart, /usr/bin/systemctl status, /usr/bin/systemctl enable, /usr/bin/systemctl disable
3.命令别名的使用
例:我想让
wsjj
用户对NETWORKING
命令别名里的命令拥有权限
先删除注释
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
再写具体的授权操作
wsjj ALL=NOPASSWD:NETWORKING
或者技术组也拥有同样的权限
%jishu ALL=NOPASSWD:NETWORKING
再或者,授权多条命令别名
在授权之前,别忘了删除相应的注释
%jishu ALL=NOPASSWD:NETWORKING,SOFTWARE,SERVICES
4.也可以自己定义一个命令别名
Cmnd_Alias WANGLUO = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables,/usr/bin/netstat
wsjj ALL=WANGLUO
五、sudo授权的使用
1.单条命令
$ sudo 命令 操作
2.临时获取root
用户权限(不建议使用)
必须输入用户密码,无密码用户无法使用
$ sudo -i