visudo精确用户赋权(sudo) | 旺旺知识库
现在的位置: 首页 > Linux > Linux基础 > 正文
visudo精确用户赋权(sudo)
2013年01月02日 Linux基础 ⁄ 共 2708字 visudo精确用户赋权(sudo)已关闭评论 ⁄ 被围观 10,640 views+

之前也写有一篇关于 sudo配置的文章,参考sudo授权,后来又博友留言提醒了我,直接编辑sudoers文件对新接触linux的人来说还是有风险的,比较直接使用vi编辑该文件无法实现语法检查,而且还需要修改默认文件的权限,非常麻烦,下面再转载一篇51CTO博友的文章,讲述了使用visudo配饰sudo权限,该命令的好处在于可以实现语言的检查,不过最终的目的还是一样的,都是实现修改sudoers文件。

sudo是Unix/Linux平台上的一个非常有用的工具,允许为非根用户赋予一些合理的权利,让他们执行一些只有根用户或特许用户才能完成的任务,从而减少根用户的登陆次数和管理时间同时也提高了系统安全性。

  • sudo的目的:为非根用户授予根用户的权限;
  • 配置文件:/etc/sudoers
  • visudo命令编辑修改/etc/sudoers配置文件

1、一般用户赋权设置:

[root@localhost ~]# visudo
……前面省略
## Syntax:
##
##      user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
test   ALL=(root)    /usr/sbin/useradd         ##新增加用户行
……后面省略

说明:
第一个字段:root为能使用sudo命令的用户;
第二个字段:第一个ALL为允许使用sudo的主机,第二个括号里的ALL为使用sudo后以什么身份(目的用户身份)来执行命令;
第三个字:ALL为以sudo命令允许执行的命令;
上列解释: test   ALL=(root) /usr/sbin/useradd
表示允许test用户从任何主机登录,以root的身份执行/usr/sbin/useradd命令。
用户执行命令效果:

[root@server ~]# su - barlow
[redhat@server ~]$ sudo /usr/sbin/useradd test
##命令最好输入完整的路径
口令:
##这里输入用户barlow自己的密码
[redhat@server ~]$ cat /etc/passwd |tail -5
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
gdm:x:42:42::/var/gdm:/sbin/nologin
sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin
redhat:x:500:500::/home/redhat:/bin/bash
test:x:501:501::/home/test:/bin/bash    ##新增加的用户

2、sudo配置深入:

1)多个用户的设置(非同一群组用户):
对于不同需求的用户:可以按照上面的方法依次增加多行,每行对应一个用户。
对于相同需求的多个用户
User_Alias UUU=user1,user2…… 定义用户别名;

[root@localhost ~]# visudo
……前面省略
## User Aliases
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
## rather than USERALIAS
User_Alias ADMINS = jsmith, mikem      ##这个就是一个实例行,按照这个写自己的
User_Alisa sudouser=user1,user2,user3,user4 ##第一个别名suduouser
……后面省略
## Syntax:
##
##      user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL77 sudouser   ALL=(root)    /usr/sbin/useradd  ##命令行书写格式,用户列用别名
……后面省略

对于多个命令的设置:
Cmnd_Alias CCC=command1,command2……        定义命令别名;

[root@localhost ~]# visudo
……前面省略
## Command Aliases
## These are groups of related commands...
## Networking
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dh        client, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial,         /sbin/iwconfig, /sbin/mii-tool                          ##多个命令定义一个命令别名;
……后面省略
## Syntax:
##
##      user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL77 sudouser   ALL=(root)    NETWORKING  ##命令行书写格式,命令列用别名
……后面省略

3、对于多主机的设置和多登陆角色的设置:

1)修改 Host_Alias HHH=host1,host2……   定义主机别名;
修改后对应的命令行主机列位置也是用别名

Runas_Alias   RRR=role1,role2……  ##定义runas别名,指定的是“目的用户”,即sudo 允许转换至的用户;

建立相关别明后,相关命令行相应的列也是用我们定义的别名。
2)多个用户的设置(同一群组用户):

[root@localhost ~]# visudo
……前面省略
## Allows people in group wheel to run all commands
# %wheel        ALL=(ALL)       ALL        ##用户列+群组名
……后面省略

最后,希望大家能够合理为个用户账号授权。

抱歉!评论已关闭.

×