sudo
su: switch user, 切换用户;
完全切换: su -l username, su - username
非完全切换: su username
su - user -c 'COMMAND'
sudo:
以另外一个用户的身份执行指定的命令; 通常情况下, 此处的另外一个用户指的是root用户;
授权机制: sudo的授权配置文件, /etc/sudoers; 只有超级用户才可以修改它. 一般使用visudo来编辑此文件, 原因:
1.能防止两个用户同时修改它;
2.能进行有限的语法检查;
对于此配置文件, 共分为两类内容:
1.别名的定义: 定义内建变量;
2.用户规格: 其实就是授权项, 其中可以调用定义过的别名;
用户规格(授权项):
每行只能有一个授权项;
其格式为:
who where=(whom) what user client=(runas) commands
注意: 通过编辑/etc/sudoers文件完成的授权, 只能通过sudo命令来启动;
sudo命令:
sudo [option]... command
-u user: 以指定的用户身份运行命令;
-l[l] [command]: 列表显示当前用户能以sudo方式运行的所有命令;
-k: 清楚缓冲密码;
/etc/sudoers文件的编写格式:
who: 此次sudo配置的授权目标用户;
username: 当个用户的用户账号名称;
#uid: (必须加#号如: #1004)单个用户的UID;
%groupname: 指定组内的所有用户账户;
%#gid: 以"gid"为GID的组内的所有用户账户;
user_alias: 事先定义过的用户账户的别名;
where: 定义被授权访问的客户端主机;
ip/hostname: 单个主机;
Network Address: 网络地址;
host_alias: 事先定义过的主机的别名;
whom: 授权用户后续命令的运行者的真实身份; 通常是root;
what: 此次授权能够运行的命令;
command: 单个命令;
directory: 指定目录下所有的命令;
sudoedit: 特殊命令, 用于授权其他用户可以执行sudo命令, 并且可以编辑/etc/sudoers文件;
cmnd_alias: 事先定义过的命令的别名;
示例:
zhangsan ALL=(root) /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/passwd [a-zA-Z0-9]*, !/usr/bin/passwd root
定义别名的方法:
Alias_Type ALIASNAME = item1, item2, ...
Alias_Type:
User_Alias:
Host_Alias:
Runas_Alias:
Cmnd_Alias:
ALIASNAME: 别名的名称必须全部使用大写字母;
User_Alias USERADMINUSERS = tom, jerry, centos, suse, %myclas Cmnd_Alias USERADMINCOMMANDS = /usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/passwd [a-zA-Z0-9]*, !/usr/bin/passwd root, /usr/sbin/usermod USERADMINUSERS ALL=(root) USERADMINCOMMANDS
常用的标签:
PASSWD
NOPASSWD
Cmn_Alias USERADMINCOMANDS = NOPASSWD: /usr/sbin/useradd, PASSWD: /usr/sbin/userdel, /usr/bin/passwd [a-zA-Z0-9]*, !/usr/bin/passwd root, /usr/sbin/usermod
特别强调:
诸如passwd, su, sudo, sudoedit等之类的特殊的命令, 在使用sudo授权时务必要考虑全面, 否则可能为系统引入安全隐患; 需要格外注意!!!
转载于:https://blog.51cto.com/gt520/1970034