Linux sudo命令与其配置文件/etc/sudoers

转载 2013年12月03日 16:58:07
对linux有一定了解的人多少也会知道点关于sudo命令。sudo命令核心思想是权限的赋予 ,即某个命令的所属用户不是你自己,而你却有权限执行它。但是我们需要注意的是,虽然你有权限执行这个命令,但是在执行的时候却仍是以这个命令本身所属用户来完成的[注释1]。(su命令类似sudo命令,但是两者的差别在于前者su是一个粗粒度权限赋予,
对su最好的理解我觉得是change user running command permanent。即永久的切换到了su过去的用户,然后以这个su到的新用户干它能干的一切事情,而sudo则是指在执行某个命令的时候临时切换到这个命令的所属用户执行[注释1],而且sudo可以做到以单个命令为单位将权限赋予给其他用户,相比su显得更加灵活。)

大概了解了sudo的功能,那么你知道怎么配置sudo吗?下面来简要说明一下:
配置sudo的配置文件在/etc/sudoers里面,一般通过visudo命令来安全打开编辑。查看/etc/sudoers的用法可以使用命令: man 5 sudoers。在/etc/sudoers文件里面主要包括这两部分:
1. 别名设置
别名主要包括这几种:User_Alias,Host_Alias,Runas_Alias,Cmnd_Alias,分别是用户别名,主机别名,运行用户别名,命令别名。设置这几个别名的命令主要是为了配置方便,这个很类似linux用户群组或是数据库中角色的作用,有了别名便可以批量的赋予权限。
设置方法 Alias_Type alias_name = name1, name2, name3, 例如User_Alias User1 = user1, user2, user3。其他类型的alias设置方法类似。
2. 真正的sudo entry
这个就是真正配置哪些用户可以使用哪些命令了(你甚至可以不使用别名设置那部分)。
格式为:用户名(用户别名) 主机名(主机别名)=[(运行用户或是Runas_Alias)可选] [tag可选]  可以执行的命令(或Cmmd_Alias)  这样描述语法很生硬,不易理解,举例子
user1  host1 = /bin/kill                                                                              # user1 可以在host1上使用命令/bin/kill
user1  host1 = NOPASSWD: /bin/kill                                                     # user1 可以在host1上使用命令/bin/kill 同时可以不必输入密码(这里就是使用了NOPASSWD
                                                                                                                      # 这个tag,默认是PASSWD)
user1  host1 = NOPASSWD: /bin/kill , PASSWORD: /bin/ls              # user1 可以在host1上使用命令/bin/kill无需输入密码,但是使用/bin/ls则需要输入密码
user1  host1 = (opterator) /bin/kill                                                          # user1 可以在host1上使用命令/bin/kill但是必须是以operator用户运行这个命令,等价于
                                                                                                                      # su -u opertor /bin/kill
user1  host1 = (:group_name) /bin/kill                                                 # user1 可以在host1上使用命令/bin/kill,且必须以group_name这个用户群组里面的用户来运行。

%group_name host1 = /bin/kill                                                              # 所有group_name里面的用户都可以在host1上执行/bin/kill(linux中一般代表整个用户群组用

                                                                                                                     # %group_name)


再举个实际例子,我之前对sudo su这个命令不理解,为什么我可以直接就su到root用户了呢,连密码都不需要?查看了一下sudoers文件才知道原来里面有这么一行:
xxx     ALL=NOPASSWD: /bin/su


注释1:
在linux中每个进程都是有与之相关的UID,GID,分别为有效UID,真实UID,有效GID,真实GID。有效UID,GID是用来判断权限,而真实UID,GID是用来记账(哪个进程属于哪个用户,或记录日志等等)。当配置了sudo entry后,有效UID里面就包含了这个被配置的用户UID,因而权限验证的时候就可以通过。


参考文章:
1. Linux技术管理手册

2. Unix高级环境编程


转自:http://blog.csdn.net/zbszhangbosen/article/details/7526692

Linux sudo命令与其配置文件/etc/sudoers

对linux有一定了解的人多少也会知道点关于sudo命令。sudo命令核心思想是权限的赋予 ,即某个命令的所属用户不是你自己,而你却有权限执行它。但是我们需要注意的是,虽然你有权限执行这个命令,但是在...

Linux下的sudo及其配置文件/etc/sudoers的详细配置说明

Linux下的sudo及其配置文件/etc/sudoers的详细配置说明 时间:2011-01-03 16:28:55  来源:  http://www.osedu.net/articl...

Linux下的sudo及其配置文件/etc/sudoers的详细配置说明

Linux下的sudo及其配置文件/etc/sudoers的详细配置说明 1.sudo介绍 sudo是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些...

sudo的配置文件/etc/sudoers

/etc/sudoers配置文件中别名的知识别名类型(Alias_Type)包括如下四种: User_Alias定义用户别名 Host_Alias定义主机别名 Runas_Alias定义角色别名 Cm...
  • codeTZ
  • codeTZ
  • 2016年09月22日 21:56
  • 322

sudo及其配置文件sudoers

sudo及其配置文件sudoers  sudo是linux下常用的允许普通用户使用超级用户权限的工具。 它的主要配置文件是sudoers,linux下通常在/etc目录下,如果是s...

/etc/sudoers配置文件

通常我们并不以root身份登录,但是当我们执行某些命令 (command)时需要用到root权限,我们通常都是用"sudo command"来执行command。由于使用Ubuntu,所以经常都都用s...

/etc/sudoers配置文件

通常我们并不以root身份登录,但是当我们执行某些命令 (command)时需要用到root权限,我们通常都是用"sudo command"来执行command。由于使用Ubuntu,所以经常都都用s...
  • emma_he
  • emma_he
  • 2011年06月23日 09:13
  • 795

linux 切换用户身份、su、sudo、/etc/sudoers

转自:http://desert3.iteye.com/blog/1663995 Linux系统中,有时候普通用户有些事情是不能做的,除非是root用户才能做到。这时就需要用su命令临时切换到roo...

linux系统使用sudo命令报xxx is not in the sudoers file.This incident will be reported.的解决方法

在使用sudo命令前时,用户确保在sudoers文件中已添加xxx ALL=(ALL) ALL (这里的xxx是你的用户名),否则 会报xxx is not in the sudoers file....

Linux中/etc/profile配置文件参考

  • 2017年07月21日 14:52
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux sudo命令与其配置文件/etc/sudoers
举报原因:
原因补充:

(最多只允许输入30个字)