切换用户身份命令,主要有两种用法,区别在于是否为login-shell
形式登录。
使用login-shell
形式登录,环境变量全部变为用户user
的设置。
su -l user
su - user
使用noLogin-shell
形式登录, 部分环境变量还是为之前用户的。
su user
不登录user
,只是以其身份执行命令。
su -l user -c “command”
切换用户时,需要输入待切换用户的口令。
sudo -u anothor_user command
使用用户自己的口令执行以另外一个用户身份执行命令需要使用sudo
,如果省略-u
参数选项则默认使用root
用户身份运行命令。相关的配置文件为/etc/sudoers
。以下面例子来说明如何配置。
user ALL = (ALL) ALL
user
:可以使用sudo
的用户。
第一个ALL
:登录的主机,这里代表任何主机。
第二个ALL
:可以切换的用户身份,这里代表任何用户,包括root
。
第三个ALL
:可以执行的命令,这里要使用命令的绝对路径。
eg1 如果让用户user
可以使用root
来运行所有命令。
user ALL = (root) ALL
这样设置赋予了用户user
很大的权限,所以就必须考虑用户user
的用心和使用习惯了。
eg2 如果让用户user
可以使用passwd
来更改除了root
以外所有用户的密码。
user ALL = (root) !/usr/bin/passwd,!/usr/bin/passwd root,/usr/bin/passwd [a-zA-Z]*
这里使用通配符,表示以字母开头的用户名。
!
代表不能执行的命令。
使用sudo
需要输入用户自己的口令,这样有效地保护了root
口令的安全。也可以将sudo
设置成无密码执行,还是在配置文件/etc/sudoers
中修改。
user ALL = (ALL) NOPASSWD: ALL
注意关键词NOPASSWD
就是免除密码输入的意思。
可以设置用户组使用sudo
,这样属于该用户组的用户都可以使用sudo
。
%new_group ALL = (root) ALL
这里%
代表group1
为一个用户组。
usermod -a -G new_group user2
用户user2
加入了用户组new_group
,因此也可以使用sudo
,以root
身份运行命令。
如果需要设置的用户较为多,有时候登录主机和执行命令也比较多时,可以使用别名来处理。
User_Alias ADMPW = user1,user2,user3
Host_Alias ADMPWHOST = host1,host2
Cmnd_Alias ADMPWCOM = !/usr/bin/passwd,!/usr/bin/passwd root,/usr/bin/passwd [A-Za-z]*
ADMPW ADMPWHOST = (root) ADMPWCOM
这里相当于分别将用户、主机和命令分组,而且使用别名代表该组合。
在·普通用户切换到root
用户必须要知道root
口令,这里设置一个登录root
用户不需要输入root
口令的sudo
。
User_Alias ADMINS = user1,user2,user3
ADMINS ALL = (root) /bin/su -
user1
,user2
,user3
这三个用户只需要输入自己各自的口令就可以切换到root
身份,防止了root
口令的泄露,也方便了用户的管理。
原文:http://my.oschina.net/lln133208/blog/405741