首页 > 其他 > 详细

su和sudo

时间:2015-04-24 12:46:32      阅读:285      评论:0      收藏:0      [点我收藏+]

su

切换用户身份命令,主要有两种用法,区别在于是否为login-shell形式登录。

  • 使用login-shell形式登录,环境变量全部变为用户user的设置。

    su -l user
    su - user 
    
  • 使用noLogin-shell形式登录, 部分环境变量还是为之前用户的。

    su user
    

    不登录user,只是以其身份执行命令。

    su -l user -c “command”

切换用户时,需要输入待切换用户的口令。

sudo

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口令的泄露,也方便了用户的管理。

su和sudo

原文:http://my.oschina.net/lln133208/blog/405741

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!