问题:某些场景下,需要修改一些root权限的配置文件,然后执行一些root权限的命令,不想老是使用root账号;
解决方案:
第一步:将配置文件归到一个特殊的组,如confgp,对组成员开放写权限,同时在userA的附加组里面加上confgp;
这一步也可以使用setfacl工具来进行权限控制,参考:https://blog.csdn.net/qq_40809549/article/details/83339570
第二步:为userA配置sudo,使其可使用root权限执行某些命令。
第一步:关于用户组管理的相关命令
参考:https://www.cnblogs.com/jxhd1/p/6528574.html
所有的用户帐户及相关信息都存储在 /etc/passwd
文件中,/etc/shadow
和 /etc/group
文件存储了用户信息。
useradd [-g userA -G groupA,groupB...] userA
-g userA userA的主要用户组,默认创建
-G groupA,groupB... userA的附加用户组,多个用户组直接用英文逗号隔离
usermod -a -G groupC userA 将已有用户userA加到groupC
usermod -g groupD userA 将已有用户userA的主用户组修改为groupD
gpasswd -d userA groupD 将userA从groupD中删除,groupD不能是userA的主用户组
第二步:配置sudo
参考:https://www.linuxidc.com/Linux/2016-08/134451.htm
使用visudo来修改sudo配置文件:/etc/sudoers
配置基础规则:授权用户 主机=命令动作,如:userA ALL=/bin/chown
配置详解:授权用户 主机=[(切换到哪些用户或用户组)] [是否需要密码验证] 命令1,[(切换到哪些用户或用户组)] [是否需要密码验证] [命令2],[(切换到哪些用户或用户组)] [是否需要密码验证] [命令3]......
别名定义参考:
Host_Alias FILESERVERS = server1, server2
User_Alias ADMINS = userA,userB
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
ADMINS FILESERVERS=(root) NOPASSWD:SERVICES
sudo配置示例:
visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
ooxx ALL=(ALL) NOPASSWD:SERVICES
配置文件添加:/etc/sudoers.d/下新增文件ooxx
ooxx ALL=(root) NOPASSWD:/sbin/service nginx start,PASSWD:/sbin/service nginx stop
ooxx ALL=(root) NOPASSWD:/sbin/service nginx reload
如此,即可在ooxx用户下使用sudo service nginx reload等命令