权限安全:sudo
  TEZNKK3IfmPf 2023年11月13日 27 0
sudo的应用场景

有100台主机,自己管理不过来,其中一个运维做用户管理,另一个运维做网络管理,如果谁出了错误我们都可以定位到是谁做了,这样可以追究责任。我们不可能把root账户给这两个人,那么我们就需要一种机制,让两个用户在发挥其特定的职能的时候暂时变身为root,拥有root的权限,但是处理完事情之后就打回原型,这有点像suid的感觉。

也就是说不需要正式切换到root的身份,在执行特定的命令的时候,只需要暂时用root权限去执行某个程序。这样也是有漏洞的,但也有人可以冒充tom用户,比如说当tom去厕所了,他邻桌的同学不怀好心,用tom的电脑在服务器上创了一个用户,所以sudo还有这样一种机制就是,当你执行root给你规定的命令的时候还要再次提交一次密码,确定tom是tom本人不是别人冒充的,密码会缓存5分钟,也就是说当你使用sudo使用命令时要输入密码,这 个密码在五分钟之内不用重复输入,使用sudo –k可以清除这个缓存,清除缓存之后再使用sudo时不管有没有到5分钟都要重新输入密码。

如果让三个用户都能使用useradd命令,一个个的设置不方便,sudo配置文件还支持别名。所谓的别名就是比如我们把用户管理的命令定义到一个组里面,等到引用这些命令的时候,我们可以直接写上别名,不用那么麻烦的把管理类的命令都写上。

sudo基础

sudo的正确定义是:某一个用户能够以另外一个用户的身份通过哪些主机执行什么命令、

sudo的配置文件是/etc/sudoers 

专用的配置文件的 命令:visudo(可检查语法错误)

语法:谁,在哪些主机上,以什么人的身份,运行什么命令

语法
语法:who which_hosts=(runas) command
who:谁
which_hosts:在哪些主机上
runas:以谁的身份
command执行什么命令

用户别名:User_Alias USERDOMIN = 用户名|%组名|主机名:

主机别名:Host_Alias HOSTS = 主机名|IP|目标用户别名:

目标用户别名:Runas_Alias USER=用户名|%组名|

命令别名:Cmnd_Alias COMD = 命令绝对路径|其它别名

练习

举个例子,让hadoop用户能够使用root才能使用的useradd和usermod这两个命令.

[root@zhanghe ~]$ visudo
hadoop ALL=(root) /usr/sbin/useradd,/usr/sbin/usermod   #在最后一行添加

[root@zhanghe ~]useradd hadoop;echo "cba-123" | passwd --stdin hadoop

[root@zhanghe ~]# su - hadoop

[hadoop@zhanghe ~]$ sudo useradd user1   #执行成功,第一次使用会让你输入密码

[hadoop@zhanghe ~]$sudo  –k

[hadoop@ zhanghe ~]$ sudo  –l   #列出自己可以通过sudo执行哪些命令。

 

让用户不用输入密码在配置文件命令的前面加上NOPASSWD:即可,如下:

hadoop ALL=(root) NOPASSWD: /usr/sbin/useradd,/usr/sbin/usermod

 

再举个例子,让zhanghe用户拥有root的全部权限

zhanghe     ALL=(ALL)       ALL  

 

运维部门

级别 权限
初级运维: 查看系统信息,查看网络状态: /usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig,/bin/netstat,/sbin/route
高级运维 查看系统信息,查看和修改网格配置,进程管理,软件包管理,存储管理 /usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig, /bin/netstat,/sbin/route,/sbin/iptables,/etc/init.d/network,/bin/nice,/bin/kill, /usr/bin/kill,/usr/bin/killall,/bin/rpm,/usr/bin/up2date,/usr/bin/yum, /sbin/fdisk,/sbin/sfdisk,/sbin/parted,/sbin/partprobe,/bin/mount,/bin/umount
运维经理 超级用户所有权限 ALL

 

开发部门:

级别 权限
初级开发 root的查看权限,对应服务查看日志的权限 /usr/bin/tail/app/log,/bin/grep/app/log,/bin/cat,/bin/ls
高级开发 root的查看权限,对应服务查看日志的权限,重启对应服务的权限 /sbin/service,/sbin/chkconfig,tail /app/log,grep /app/log,/bin/cat,/bin/ls, /bin/sh ~/scripts/deploy.sh
开发经理 项目所在服务器的ALL权限,不能修改root密码 ALL,!/usr/bin/passwd root,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root

架构组:

级别 权限
架构工程师 普通用户的权限 不加入sudo列表

 

DBA组:

级别 权限
初级DBA 普通用户的权限 不加入sudo列
高级DBA 项目所在数据库服务器的ALL权限 ALL, /usr/bin/passwd [A-Za-z]* !/usr/bin/passwd root, !/usr/sbin/visudo,

 

网络组:

级别 权限
初级网络 普通用户权限 不加入sudo
高级网络 项目所在数据库服务器的ALL权限 /sbin/route,/sbin/ifconfig,/bin/ping,/sbin/dhclient,/usr/bin/net, /sbin/iptables,/usr/bin/rfcomm,/usr/bin/wvdial,/sbin/iwconfig, /sbin/mii-tool,/bin/cat,/var/log/*
 
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: 内存相关 下一篇: find
  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   41   0   0 权限java
  TEZNKK3IfmPf   2023年11月14日   149   0   0 登陆root
  TEZNKK3IfmPf   2023年11月14日   28   0   0 CentOS7root
  TEZNKK3IfmPf   2023年11月14日   42   0   0 权限mysql
  TEZNKK3IfmPf   2024年05月31日   26   0   0 sedroot
  TEZNKK3IfmPf   2024年05月17日   54   0   0 权限dremio
  TEZNKK3IfmPf   2023年11月14日   19   0   0 ubuntusudo
TEZNKK3IfmPf