sudobash
为了收拾su命令的烂摊子服务器
把某些超级权限分类有针对性受权给指定普通用户,指定的普通用户不须要知道root密码就能够获得root受权的操做,集权式管理ui
visudo 编辑/etc/sudoers文件,有语法检查spa
/etc/sudoers设计
root ALL=(ALL) ALL 用户名、容许ip机器名单、容许切换用户名单、命令绝对位置日志
需求:server
给 beimen 一个useradd的命令权限blog
which useradd # 输出useradd命令绝对路径 visudo # 进入编辑配置文件,会检查语法 # 按格式写入 beimen ALL=(ALL) /usr/sbin/useradd # 用户组 机器=(受权使用哪一个角色的权限) # 当有多条命令用逗号隔开,还能够 NOPASSORD:ALL,不要密码登陆
su - beimen # 切换到beimen角色 sudo -l # /查看拥有的 sudo权限,须要输入当前用户密码,有效期为5分钟,/vaf/db/sudo
sudo useradd chuixue # 添加用户吹雪
经过sudo受权管理系统: 让用户权限最小化原则,还能够审计用户使用sudo的提权操做命令ip
sudo命令相关参数:class
-l 查看当前用户受权命令
-c 语法检查,每次visudo以后,经过 visudo -c 进行语法检查
-u 指定某个身份用户执行
-v 检验时间戳
-k 删除时间戳
主机别名:
Host_Alias
生产环境使用ALL,实际上是逻辑上的主机组,多台服务器共享一个 /etc/suders时候会用到这个主机别名,受权在那个主机上生效,一个配置文件在多个主机上使用,如今都是单机
用户别名:
User_Alias
当用户组和用户比较大时候,组前面须要添加%,当对用户别名受权权限时候,至关于给这一类用户和组受权
用户身份别名:
Runas_Alias
sudo执行能够切换的身份,通常为root
命令别名:
Cmnd_Alias
将命令分类,经过别名能够受权多个指定的命令
什么状况下使用别名?
工做中通常有多个系统用户,须要分类、分层次管理用户的时候
把用户和组进行分类,各自对应不一样的别名,把命令依据须要对应的权限范围分类,而后将这两个类进行连线
分为身份权限和命令权限,按岗位需求进行受权
什么是sudo日志审计?
并不记录普通用户的普通操做,而是记录那些sudo命令的用户操做
生产环境日志审计解决方案?
sudo日志审计:
rpm -qa sudo rsyslog # 查询是否安装 echo -e "Defaults\tlogfile=/var/log/sudo.log" >> /etc/sudoers # 追加一行 su - beimen # 切换到beimen用户下 sudo useradd chuixue # 执行sudo命令,添加用户,须要输入密码 su - # 切换到root用户 cat /var/log/sudo.log # 查看 beimen使用sudo的记录,不管是成功执行仍是没有成功执行的名
# 将会看到beimen用户添加用户日志,时间,执行的命令等,假如三次密码输入错误也会加入日志,执行没有权限也会加入日志,只要是经过sudo执行的命令都会记录
别名总结:
1. sudo命令是给普通用户进行受权root才能执行的命令
2. 生产场景下,使用监控软件 或使用 sudo配合rsyslog进行sudo权限进行审计
echo -e "Defaults\tlogfile=/var/log/sudo.log" >> /etc/sudoers
cat /var/log/sudo.log # 查看sudo命令日志
3. 经过visudo编辑 /etc/sudoers文件并会有语法检查
4. 经过主机别名、用户别名、命令别名、用户身份别名,按照部门须要进行更加精确的权限命令设计,别名都要大写,组前要加%,多个命令或用户用 , 隔开
5. 普通用户经过 sudo + 命令 方式执行受权命令