14.14.2 sudo命令范例
您可以在百度里搜索“Linux/Unix技术丛书·跟老男孩学Linux运维:核心基础篇(上)(第2版) 艾草文学(www.321553.xyz)”查找最新章节!
14.14.2 sudo命令范例
范例14-24:查看用户被visudo授权后拥有的权限。
在14.14.1节,我们已经对oldboy用户进行了授权,此时再以oldboy用户的身份登录系统,就可以通过执行类似于sudo ls-l/root(sudo后面加上正常命令)的命令来以root用户的权限管理系统了,命令如下:
[oldboy@oldboy ~]$ ls /root
ls: cannot open directory /root: Permission denied
#<==可以看到,oldboy用户是无法直接访问/root家目录的
[oldboy@oldboy ~]$ sudo ls /root #<==如果授权配置中含有NOPASSWD,则执行时将不提示密码,否则会要求输入当前用户的密码。
anaconda-ks.cfg install.log install.log.syslog
#<==通过sudo命令,使得oldboy用户具备访问/root目录的权限。
对于上述代码段的说明,具体如下:
• 通过sudo授权管理后,所有用户执行授权的特殊权限格式为“sudo命令”。
• 如果需要切换到root执行相关操作,则可以通过“sudo su-”命令,注意,此命令提示的密码为当前用户的密码,而不是root的密码。
• 执行“sudo-l”命令可以查看当前用户被授予的sudo权限集合。
以下是查看oldgirl用户授权的结果情况:
[oldgirl@oldboy ~]$ sudo -l #<==注意,这里是oldgirl用户,授权较低。
[sudo] password for oldgirl: #<==提示输入密码,注意是oldgirl用户的密码,而非root密码。
Matching Defaults entries for oldgirl on this host:
User oldgirl may run the following commands on this host:
(ALL)/usr/sbin/useradd, (ALL)/usr/sbin/userdel #<==查看到的oldgirl用户被授权的权限。
• 对于Linux系统bash的内置命令,一般无法进行sudo授权,例如,cd命令。
sudo授权与su切换的原理示意图如图14-1所示。
图14-1 su与sudo用户角色切换原理图
生产环境中通常会禁止root远程登录,不过,系统会为每个运维人员建立一个普通账号,然后根据运维人员的需求,通过sudo控制登录系统的权限,事实证明这是一个不错的权限管理方式。当然,笔者在生产环境中还使用了ldap统一认证登录及授权管理的方式。即只要有一个账号和密码,即可在全公司多个机房系统内通行无阻(系统登录、SVN、VPN等),有关这部分内容的讲解,在老男孩教育的高级课程中会有涉及。在此,大家了解下即可。
普通用户的环境变量问题:在早期的CentOS5系统中,普通用户在执行系统管理相关的命令时会遭遇到环境变量问题,导致找不到执行的命令(CentOS6以后的系统已经不存在这个问题了)。
sudo授权对于bash的内置命令处理是个难题,因为内置命令没有实体文件和路径,不过一般都有解决方法,例如可以使用sudo ls替代sudo cd,有的网友使用sudo bash后再使用内置命令,这样做是很危险的,不推荐使用这种方法。 Linux/Unix技术丛书·跟老男孩学Linux运维:核心基础篇(上)(第2版)