从零开始的Linux运维屌丝之路,资源免费分享平台   运维人员首选:简单、易用、高效、安全、稳定、社区活跃的开源软件

visudo Linux用户权限管理

发布:蔺要红06-28分类: 运维


visudo 或者 /etc/sudoers 来管理普通用户的权限

sudo的工作过程如下:
1,当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限
2,确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认
3,若密码输入成功,则开始执行sudo后续的命令
4,若欲切换的身份与执行者的身份相同,也不需要输入密码


一、单个用户授权:

在/etc/sudoers里添加 或者直接使用visudo命令来添加:

   用户   用户角色(可以切换的用户)      代表不用输入密码可以执行的sudo命令
linyaohong        ALL=(ALL)            NOPASSWD:/usr/bin/php, /usr/bin/kill, /usr/bin/nohup, /usr/bin/killall


二、批量授权(按照不同部门或者不同角色)

 
用户或组 可以切换的用户角色 可以执行的命令
root (ALL) ALL (NOPASSWD:  ALL)
User_Alias ADMINS = jsmith, mikem, %sa  Runas_Alias OP = root, oldboy Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig 
ADMINS ALL=(OP) NOPASSWD:  NETWORKING

说明:用户或者组 和 可以切换的用户角色之间 还可以定义主机别名(一般不用)
 
用户或组 主机 可以切换的用户角色 可以执行的命令
root ALL= (ALL) ALL (NOPASSWD:  ALL)
User_Alias ADMINS = jsmith, mikem, %sa  Host_Alias     FILESERVERS = fs1, fs2 Runas_Alias OP = root, oldboy Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig 
ADMINS 没见过设置的 ALL=(OP) NOPASSWD:  NETWORKING


在/etc/sudoers里添加 或者直接使用visudo命令来添加:
 
1、定义主机别名(一般不用ALL即可)  (忽略)
Host_Alias     FILESERVERS = fs1, fs2
Host_Alias     MAILSERVERS = smtp, smtp2

2 定义用户命名,可以是用户,用户组
User_Alias ADMINS = jsmith, mikem, %sa 

3、角色别名(授权的身份以那些用户执行) 指:sudo准许切换到的用户身份
Runas_Alias OP = root, oldboy

4、定义命令别名(分的很详细,有网络,安装和管理软件、服务,存储,授权权限,进程管理,驱动)
#命令别名:定义一个别名,包含一堆命令,只需要使用别名,即可使用别名下所有的命令

#举例(来自/etc/sudoers):

## 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

.....更多系统举例可以参考/etc/sudoers文件里系统配置好的,默认下都是注释掉的

使用注意事项:
# 普通用户使用sudo -l 来查看自己能使用的命令
# 别名需要大写
# ALL 需要大写
# = 两边要有空格 
# !/usr/bin/passwd    !代表排除某个命令 
# /usr/bin/passwd [A-Za-z]* 或者 /usr/bin/passwd root    #控制输入、需要放到最后面*****
# 如:/usr/sbin/*,/sbin/*,!usr/sbin/visudo,!/sbin/fdisk   #准许所有,而不让执行的命令
# 尽量不用非 ! 不好管控
# 一行内容超长 使用 \ 换行
# 如果远程连接到其他机器执行sudo 命令 ,需要使用 -t 参数

三、简单的记录日志:

1、普通sudo命令记录日志,在visudo最后一行加入即可:
Defaults  logfile=/var/log/sudo.log  对日志要求比较高的可以使用ELK把日志收集到中心服务器。


2、还可以通过跳板机,堡垒机来记录用户的操作记录,并且可以自动分析,处理,展示(如开源软件:jumpserver)
 
温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,如有侵权我会在24小时之内删除!

欢迎使用手机扫描访问本站