7.10 visudo:编辑 sudoers文件

    visudo命令是专门用来编辑/etc/sudoers这个文件的,同时提供语法检查等功能。/etc/sudoers文件是sudo命令的配置文件。
 
-c    手动执行语法检查
 
执行visudo 对普通用户lewen和kevin授权的例子。
 
[root@cs6 ~]# visudo 
lewen ALL=(ALL) ALL #<==此行是98行,将lewen提权为root身份。
kevin ALL=(ALL) /usr/sbin/useradd,/usr/sbin/userdel
#<==授权kevin 可以以root身份添加和删除用户权限。
#<==分别对lewen和kevin两个用户做不同的授权 user MACHINE= COMMANDS
lewen ALL=(ALL) /usr/sbin/useradd、/usr/sbin/userdel
  提示:如果kevin用户被授予上述权限,那么它可在所有的机器上以所有的角色运行useradd、userdel命令,而oldboy用户别会拥有和root相同的权限,并且可以切换到root账户。
如果是针对用户组,则对应的授权命令如下: 
 %用户组 机器=(授权使用哪个角色的权限) /usr/sbin/useradd  
 
    通过sudo进行系统授权管理的目的:即能让运维人员干活,又不会威胁系统安全,还可以审计用户使用sudo的提权操作命令,默认的用户是无法获得root权限的。
    为了管理方便,工作中可以对lewen授权ALL权限,即可以管理整个系统,平时可以使用lewen用户处理工作,而不使用root用户。
 
例如:工作中有批量管理用户的需求,若使用快速操作命令增加sudo授权,则需要单独执行语法检查,快速操作命令如下:
\cp /etc/sudoers /etc/sudoers.ori
echo "lewen ALL=(ALL) NOPASSWD:ALL" >>/etc/sudoers
tail -l /etc/sudoers
    进行上述操作时直接追加内容到sudoers文件,没有进行语法检查,因此需要单独执行语法检查命令。
 
[root@cs6 ~]# visudo -c
/etc/sudoers: parsed OK

7.11 sudo:以另一个用户身份执行命令

    通过sudo命令,可以让普通用户在执行指定的命令或程序上,拥有超级用户的权限,进行分类,并且有针对性地(精细)将不同的命令授予指定的普通用户,同时普通用户不需要知道root 密码就可以得到授权,这个授权可以用visudo配置管理。
 
-l    列出当前用户可以执行的命令。只有在sudoers文件里的用户才能使用该选项
-h    列出使用方法,并退出
-H    将环境变量中的HOME(家目录)指定为要变更身份的使用者家目录(如果不加-u 参数就是系统管理者root)
-V    显示版本信息,并退出
-v    sudo在第一次执行时,或者在N分钟内没有执行(N预设为五),则会询问密码,这个参数用于重新做一次确认
-u    以指定用户的身份执行命令。后面是除root以外的用户,可以是用户名,也可以是uid
-k    清除时间截上的时间,下次再使用sudo时要再输入密码
-K    与k类似,同时还要删除时间戳文件
-b    在后台执行指定的命令
-p    可以更改询问密码时的提示语
-e    不执行命令,而是修改文件,相当于命令sudo edit
 
 
查看用户被visudo授权后拥有的权限。
已经对lewen用户进行过授权,此时再以lewen用户的身份登录系统时,就可以通过执行类似于sudo ls -l /root(sudo后面加正常命令)的命令来以root用户的权限管理系统了,命令如下: 
[root@cs6 ~]# su lewen
[lewen@cs6 root]$ ls
ls: cannot open directory .: Permission denied
[lewen@cs6 root]$ sudo ls
centos6_10.iso dev_sdb1.img fav.jpg lewen.log lewen.nc nohup.out test.data test.test_u test.txt tongji.log web.sh
[lewen@cs6 root]$
通过sudo授权管理之后,所有用户执行授权的特殊权限格式为“sudo命令”。
如果需要切换到root执行相关操作,则可以通过“sudo su -”命令,注意,此命令提示的密码为当前用户的密码,而不是root的密码。
执行“sudo -l”命令可以查看当前用户被授予的sudo权限集合。

[kevin@cs6 root]$ sudo ls
[sudo] password for kevin:
Sorry, user kevin is not allowed to execute '/bin/ls' as root on cs6.
[kevin@cs6 root]$ sudo -l
[sudo] password for kevin:
Matching Defaults entries for kevin on this host:
!visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS",
env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT
LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS
_XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User kevin may run the following commands on this host:
(ALL) /usr/sbin/useradd, (ALL) /usr/sbin/userdel
对于Linux系统bash的内置命令,一般无法进行sudo授权,例如:cd命令。
sudo 授权与su切换的原理示意图如图7-1所示。
 
 
    在生产环境中,通常会禁止root远程登录,不过,系统会为每个运维人员建立一个普通账号,然后根据运维人员的需求,通过sudo控制登录系统的权限,事实证明这是一个不错的权限管理方式。当然,在笔者的生产环境中还使用了ldap统一认证登录及授权管理的方式。即只要有一个账号和密码,即可在全公司多个机房系统内通行无阻(系统登录、SVN、VPN等),有关这部分内容的讲解,在老男孩教学的高级课程中会有涉及。在此大家了解下即可。
    普通用户的环境变量问题:在早期的CentOS5系统中,普通用户执行系统管理的相关命令时会遭遇到环境变量问题,导致找不到执行的命令(CentOS6以后的系统已经不存在这个问题了)。
 sudo授权对于bash内置命令的处理是一个难题,因为内置命令没有实体文件和路径,不过一般也有解决方法,例如可以使用sudo ls替代sudo cd,有的网友会在使用sudo bash后再使用内置命令,这是很危险的,不推荐。
 
 
[root@cs6 ~]# ll /var/db/sudo/
total 8
drwx------. 2 root kevin 4096 May 12 11:30 kevin
drwx------. 2 root sa 4096 May 12 11:05 lewen
    待用户执行sudo并且输入密码之后,用户会获得一张默认存活期为5分钟的“人场券”(默认值可以在编译的时候改变)。但超时以后,用户就必须重新输入密码了。
    可以使用sudo的-k或-K参数清空sudo用户的时间戳,这样还会提示输入密码,但是如果配置授权对应用户时加了NOPASSWD选项,那么执行sudo命令时则永久不会提示输入密码了。
 
sudo的配置文件/etc/sudoers
通过以下命令可以看到sudo的配置文件/etc/sudoers里的内容。
[root@cs6 ~]# ll /etc/sudoers
-r--r-----. 1 root root 3841 May 12 11:07 /etc/sudoers
    建议用visudo编辑该文件,因为该命令有语法检查,否则一旦出错了,普通用户就无法使用sudo了。直接在命令行执行visudo 即可自动打开/etc/sudoers文件。如果通过vi来编辑/etc/sudoers,则保存时要用“wq!”来强制保存,否则会提示只读不能保存的错误,而且最后还要用visudo -c进行语法检查,这样实在太麻烦!
 
 

7.10-11 visudo、sudo的更多相关文章

  1. Shell命令-用户用户组管理之visudo、sudo

    文件及内容处理 - visudo.sudo 1. visudo:编辑/etc/sudoers文件的专属命令 visudo命令的功能说明 visudo命令专门用来编辑/etc/sudoers这个文件的. ...

  2. OS X EI Capitan 10.11.4中sudo无法起作用的解决方法

    mac升级到OSX EI Capitan 10.11.4后sudo命令无法起作用,执行任何操作总是显示Operation denied.这是因为在10.11.4中引入了Rootless机制,即就算是R ...

  3. 10.11 cocoapods安装

    手动安装gem 手动下载 rubygem https://rubygems.org/pages/download#formats 10.11 cocoapods安装 sudo gem install ...

  4. CocoaPods安装、卸载、使用说明(Mac ox 10.11+)

    一.全新安装前,先检查是否有安装残留 由于Mac 10.11更改了安全机制,所以cocoapods得安装和卸载命令也有所改变, 1.如果之前装过cocopods,最好先卸载掉,卸载命令: $ sudo ...

  5. OSX 10.11 cocoapods安装命令: sudo gem install -n /usr/local/bin cocoapods

    10.11 cocoapods安装命令: sudo gem install -n /usr/local/bin cocoapods

  6. Linux 下以其他用户身份运行程序—— su、sudo、runuser

      本文综合分析了Linux系统下,如何使用runuser命令.su命令和sudo命令以其他用户身份来运行程序,以及这三个命令的运行效率比较. 一.su 命令临时切换用户身份 SU:( Switch ...

  7. ansible hosts文件编写,简单使用测试(普通用户、sudo用户、root用户登录权限测试)

    一.配置文件修改: 1.备份原配置文件: cp /etc/ansible/hosts /etc/ansible/hosts.bak 2.修改hosts配置文件: cat <<EOF> ...

  8. chmod a+w . 权限控制 su、sudo 修改文件所有者和文件所在组

    对当前目录对所有用户开放读写权限 chmod a+r . $ sudo chmod -R a+w /usr/lib/python2.7 所有用户添加文件的写权限 [linux]su.sudo.sudo ...

  9. chmod a+w . 权限控制 su、sudo 修改文件所有者和文件所在组 添加用户到sudoer列表中 当前用户信息

    对当前目录对所有用户开放读写权限 chmod a+r . $ sudo chmod -R a+w /usr/lib/python2.7 所有用户添加文件的写权限 [linux]su.sudo.sudo ...

随机推荐

  1. 字体图标库 iconfont、iconmoon 的维护管理与使用探索

    字体图标库的使用 这是之前留下的博客,由于一堆博客没写完,本周周末做了个补充,可能内容上会有点不太斜街,请见谅... 本文大部分内容是自己结合过往经验探索总结的字体图标维护方式 iconfont-阿里 ...

  2. 解决Linux无法读写U盘中的NTFS问题

    1 问题描述 由于笔者因为某些需要把Windows装在了U盘上面(在这里建议一下如果有需要请使用固态U盘),在Linux下挂载时,能读取但并不能写. 2 尝试的解决方案 2.1 remount 一开始 ...

  3. Day02_14_可变长参数

    Java 可变参数 一个方法中只能有一个可变参数 它必须是该方法的最后一个形参(必须放在参数列表最后一个的位置) 传递给可变参数的数据类型必须一致 实例 public class 可变长参数 { pu ...

  4. Day01_08_变量(Variable)

    变量 什么是变量? *变量本质上来说是内存上的一块空间,这块空间有数据类型,有名字,有字面值(数据).变量是内存中存储数据最基本的单元 * 变量要求变量中存储的具体数据必须和变量的数据类型一致,必须先 ...

  5. Python表达式进阶——列表表达式

    x = 0 y = x*2 if x >= 0 else x print(y) # [表达式for变量in列表] l1 = [] l2 = [i for i in range(100) if i ...

  6. C - The Suspects POJ - 1611(并查集)

    Severe acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, was recognized ...

  7. 批处理打造MySQLCleaner

    #批处理打造MySQLCleaner ###1. 简介 在我们卸载MySQL数据库的时候,往往除了需要卸载软件,还需要删除各种注册表信息,隐藏文件,卸载服务,否则当我们再次安装MySQL时就会出现一些 ...

  8. Social engineering tookit 钓鱼网站

    目录 Set 钓鱼攻击 网站克隆 Set Set(Social engineering tookit)是一款社会工程学工具,该工具用的最多的就是用来制作钓鱼网站. Kali中自带了该工具. 钓鱼攻击 ...

  9. 关于PHP动态的接收传递的GET,POST和COOKIE变量

    0x01 我们知道 PHP 接收的变量最常用的是 GET,POST,COOKIE 这三个变量.GET变量是附在 url 后传输的,而 POST 变量是放在 http 包中传输的,COOKIE 则是浏览 ...

  10. 哈希爆破神器Hashcat的用法

    目录 HashCat HshCat的使用 使用Hashcat生成字典 使用Hashcat破解NTLMv2 HashCat HashCat系列软件在硬件上支持使用CPU.NVIDIA GPU.ATI G ...