sudo与sudoers

来源:互联网 发布:淘宝部门及职能 编辑:程序博客网 时间:2024/06/04 23:23

先前介绍过通过设置SUID提升用户权限,sudo就是这样一个例子。
sudo的属性

sudo是linux下允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的root命令。sudo不是对shell的一个代替,它是面向每个命令的。它的特性主要有这样几点:

  • sudo能够限制用户只在某台主机上运行某些命令。
  • sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。
  • sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票(这个值可以在编译的时候改变)。
  • sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers。

sudo提供了一个编辑sudoers的命令visudo来对该文件进行修改。强烈推荐使用该命令修改 sudoers,因为它会帮你校验文件配置是否正确,如果不正确,在保存退出时就会提示你哪段配置出错的。

最简单的配置,让普通用户support具有root的所有权限:
support ALL=(ALL) ALL

/etc/sudoers配置权限的通用格式如下:
user host=(run_as) command
user host=(run_as) NOPASSWD:command

user:用户或组,用逗号分隔,组对象的名称用%开头。
host:主机名,用逗号分隔。
run_as:作为哪个用户运行,常见选项是root和ALL。
command:想让用户或组运行的一个或几个根级别命令,用逗号分隔。

这四个均可用Alias,Alias主要分成4种:
Host_Alias
Cmnd_Alias
User_Alias
Runas_Alias

1) 配置Host_Alias:就是主机的列表.
Host_Alias HOST_FLAG = hostname1, hostname2, hostname3
2) 配置Cmnd_Alias:就是允许执行的命令的列表,命令前加上!表示不能执行此命令.
命令一定要使用绝对路径,避免其他目录的同名命令被执行,造成安全隐患,因此使用的时候也是使用绝对路径!.
Cmnd_Alias COMMAND_FLAG = command1, command2, command3 ,!command4
2) 配置User_Alias:就是具有sudo权限的用户的列表.
User_Alias USER_FLAG = user1, user2, user3
3) 配置Runas_Alias:就是用户以什么身份执行的列表.

所以下面就可以这样配置:
USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG
USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG

参考文献
Linux权限提升
http://blog.csdn.net/liuyuan185442111/article/details/43026885
sudo与sudoers
http://www.cnblogs.com/zhuowei/archive/2009/04/13/1435190.html

0 0