linux_sudo命令

sudo

为了收拾su命令的烂摊子

  1. 普通用户要切换root,必须要知道root密码,那么相当于人人都有了核按钮,那是绝对不允许的
  2. 用su切换到root,无法对是谁要求root权限的身份进行控制,拿到root权限就可以获得超级用户的所有权限,为所欲为,更改root密码,让真正的root管理员没法管理

  把某些超级权限分类有针对性授权给指定普通用户,指定的普通用户不需要知道root密码就可以得到root授权的操作,集权式管理

visudo  编辑/etc/sudoers文件,有语法检查

/etc/sudoers

  root    ALL=(ALL)       ALL           用户名、允许ip机器名单、允许切换用户名单、命令绝对位置

需求:

  给 beimen 一个useradd的命令权限

which useradd    # 输出useradd命令绝对路径
visudo # 进入编辑配置文件,会检查语法 # 按格式写入 beimen ALL=(ALL) /usr/sbin/useradd # 用户组 机器=(授权使用哪个角色的权限) # 当有多条命令用逗号隔开,还可以 NOPASSORD:ALL,不要密码登录

  linux_sudo命令

  

su - beimen    # 切换到beimen角色
sudo -l # /查看拥有的 sudo权限,需要输入当前用户密码,有效期为5分钟,/vaf/db/sudo
sudo useradd chuixue        # 添加用户吹雪

通过sudo授权管理系统: 让用户权限最小化原则,还可以审计用户使用sudo的提权操作命令

sudo命令相关参数:

-l     查看当前用户授权命令

-c 语法检查,每次visudo之后,通过 visudo -c 进行语法检查

-u    指定某个身份用户执行

-v    检验时间戳

-k    删除时间戳

主机别名:

  Host_Alias

  生产环境使用ALL,其实是逻辑上的主机组,多台服务器共享一个 /etc/suders时候会用到这个主机别名,授权在那个主机上生效,一个配置文件在多个主机上使用,现在都是单机

用户别名:

  User_Alias

  当用户组和用户比较大时候,组前面需要添加%,当对用户别名授权权限时候,相当于给这一类用户和组授权

用户身份别名:

  Runas_Alias

  sudo执行可以切换的身份,一般为root

命令别名:

  Cmnd_Alias

  将命令分类,通过别名可以授权多个指定的命令

什么情况下使用别名?

  工作中一般有多个系统用户,需要分类、分层次管理用户的时候

  把用户和组进行分类,各自对应不同的别名,把命令依据需要对应的权限范围分类,然后将这两个类进行连线

  分为身份权限和命令权限,按岗位需求进行授权

什么是sudo日志审计?

并不记录普通用户的普通操作,而是记录那些sudo命令的用户操作

生产环境日志审计解决方案?

  1. sudo配合rsyslog服务,进行日志审计
  2. bash解释器程序里嵌入一个监视器
  3. 齐治堡垒机,商业软件
  4. 开源跳板机,jumpserver和CrazyEye

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 + 命令 方式执行授权命令

上一篇:线程并发工具类之CountDownLatch的使用及原理分析


下一篇:Java核心知识点学习----线程同步工具类,CyclicBarrier学习