Linux sudo命令——sudoers文件的配置

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

对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

注:

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

时间: 2024-08-10 07:34:49

Linux sudo命令——sudoers文件的配置的相关文章

Linux sudo命令详解

Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行. 使用权限:在 /etc/sudoers 中有出现的使用者. 简单的说,sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root 执行的操作,而不需要知道 root 的密码.严谨些说,sudo 允许一个已授权用户以超级用户或者其它用户的角色运行一个命令.当然,能做什么不能做什么都是通过安全策略来指定的.sudo 支持插件架构的安全策略,并能把输入输出写入日

Linux 常用命令之文件和目录

1. cd 命令格式:cd  [dirName](cd和目录之间使用空格隔开) 作用:切换当前目录至dirName. 实例: cd /home 切换当前目录到/home (查看当前目录命令为pwd) cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd ~ 进入个人的主目录 2. ls 命令格式:ls [选项] [目录名] (目录名为空时表示当前目录) 作用: 查看目录中的文件 常用选项: -a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件. -l 除了文件名之外,

Linux常用命令之文件和目录操作命令

以下是linux操作系统常用的文件和目录操作命令: cd /home 进入 '/ home' 目录' cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd 进入个人的主目录 cd ~user1 进入个人的主目录 cd - 返回上次所在的目录 pwd 显示工作路径 ls 查看目录中的文件 ls -F 查看目录中的文件 ls -l 显示文件和目录的详细资料 ls -a 显示隐藏文件 ls *[0-9]* 显示包含数字的文件名和目录名 tree 显示文件和目录由根目录开始的树形结构(1)

Linux chmod命令修改文件与文件夹权限的命令附实例

Linux chmod命令修改文件与文件夹权限的命令附实例 作者:佚名 字体:[增加 减小] 来源:互联网 时间:05-01 20:46:07我要评论 在linux中要修改一个文件夹或文件的权限我们需要用到linux chmod命令来做,下面我写了几个简单的实例大家可参考一下 语法:chmod [who] [+ | - | =] [mode] 文件名 命令中各选项的含义为 u 表示“用户(user)”,即文件或目录的所有者.g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户.

[转]linux sudo 命令

转自:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/11/11/2245341.html “Sudo”是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他 特许用户才能完成的任务,比如:运行一些像mount,halt,su之类的命令,或者编辑一些系统配置文件,像/etc/mtab,/etc /samba/smb.conf等.这样以来,就不仅减少了root

【转】linux sudo 命令+个人事例

“Sudo”是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他 特许用户才能完成的任务,比如:运行一些像mount,halt,su之类的命令,或者编辑一些系统配置文件,像/etc/mtab,/etc /samba/smb.conf等.这样以来,就不仅减少了root用户的登陆次数和管理时间,也提高了系统安全性. 一. sudo的特点 sudo扮演的角色注定了它要在安全方面格外谨慎,否则就会导致非法用户攫取root权限

linux sudo 命令

简单的说,sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root 执行的操作,而不需要知道 root 的密码.严谨些说,sudo 允许一个已授权用户以超级用户或者其它用户的角色运行一个命令.当然,能做什么不能做什么都是通过安全策略来指定的.sudo 支持插件架构的安全策略,并能把输入输出写入日志.第三方可以开发并发布自己的安全策略和输入输出日志插件,并让它们无缝的和 sudo 一起工作.默认的安全策略记录在 /etc/sudoers 文件中.而安全策略可能需要用户通过密码

Linux sudo 命令的应用

.note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeiti, "Microsoft YaHei", "WenQuanYi Micro Hei", SimSun, Song, sans-serif } sodo 的字面意思理解应该是switch user excute a command as another user,用另外

linux基础命令-管理文件和目录

今天学习了对Linux命令的理解和Linux系统中对文件和目录进行管理的基础命令. 在Linux系统中需要通过命令来实现某一项功能,Linux命令的执行需要依赖于Shell命令解释器.Shell是在Linux系统中运行的一种特殊程序,Shell解释器位于用户和内核之间,Shell接收到用户的命令并进行解释,然后将需要执行的的操作传递给内核来执行.根据Linux命令和Shell程序的关系,分为内部命令和外部命令. Linux命令对大小写敏感,格式:命令字 [选项] [参数] 以下辅助操作可以提高输