sudo介绍:
sudo是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,减少了root用户的登陆和管理时间,提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的。
示例讲解:
首先查看sudo是否安装:
#检查系统中是否存在sudo [root@lovelace ~]# rpm -qa | grep sudo sudo-1.7.2p1-13.el5 #检查sudo的执行命令以及相关文件 [root@lovelace ~]# rpm -ql sudo /etc/pam.d/sudo /etc/pam.d/sudo-i /etc/sudoers /usr/bin/sudo /usr/bin/sudoedit /usr/libexec/sesh /usr/libexec/sudo_noexec.so /usr/sbin/visudo
1、给予用户lovelace,nick创建用户、删除用户和更改用户属性的权限
2、但是上面赋予的权限对root用户无效
在完成上面的习题之前我们先来简单测试下sudo的用法:
#使用visudo编辑/etc/sudoers文件,添加下面的一行 [root@lovelace ~]# tail -1 /etc/sudoers lovelace ALL=(root) /usr/sbin/useradd #切换用户进行测试 [root@lovelace ~]# su -l lovelace #创建新用户 [lovelace@lovelace ~]$ sudo/usr/sbin/useraddtest We trust you have received the usual lecture from the localSystem Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. #这里提示要输入当前用户的密码 [sudo] password forlovelace: Sorry, try again. [sudo] password forlovelace: Sorry, try again. [sudo] password forlovelace: useradd:警告:此主目录已经存在。 不从 skel 目录里向其中复制任何文件。 #在执行第一次验证的5分钟之内,不会在要求你输入密码验证 [lovelace@lovelace ~]$ sudo/usr/sbin/useraddcto #查看结果 [lovelace@lovelace ~]$ tail-2 /etc/passwd test:x:1013:1013::/home/test:/bin/bash #如果我们使用未被授权的命令,将会提示下面的信息 [lovelace@lovelace ~]$ sudo/usr/sbin/userdelcto [sudo] password forlovelace: Sorry, user lovelace is not allowed to execute '/usr/sbin/userdel cto'as root on lovelace.localdomain. cto:x:1014:1014::/home/cto:/bin/bash
接下来我们来实现我们刚刚提出的两个问题
1、给予用户lovelace,nick创建用户、删除用户和更改用户属性的权限
2、但是上面赋予的权限对root用户无效
#使用visudo对/etc/sudoers文件进行编辑 效果如下 [root@lovelace ~]# tail -4 /etc/sudoers User_Alias USERADMIN=lovelace,nick Cmnd_Alias COMMAND=/usr/sbin/useradd,/usr/sbin/userdel,/usr/sbin/usermod USERADMIN ALL=(root) COMMAND #lovelace ALL=(root) /usr/sbin/useradd #切换用户验证结果 [root@lovelace ~]# su -l lovelace [lovelace@lovelace ~]$ sudo/usr/sbin/userdelcto [sudo] password forlovelace: Sorry, try again. [sudo] password forlovelace: [lovelace@lovelace ~]$ cat/etc/passwd| grepcto [lovelace@lovelace ~]$ sudo/usr/sbin//usermod-s nologin test [lovelace@lovelace ~]$ cat/etc/passwd| greptest lovetest:x:1012:1012::/home/lovetest:/bin/bash test:x:1013:1013::/home/test:nologin #Note:这个是可以对管理员密码进行更改的 [lovelace@lovelace ~]$ sudo/usr/sbin/usermod-p 51cto root
对sudoers文件再次进行编辑
#使用visudo对/etc/sudoers文件进行编辑 [root@lovelace magedu]# tail -5 /etc/sudoers User_Alias USERADMIN=lovelace,nick Cmnd_Alias COMMAND=/usr/sbin/useradd,/usr/sbin/userdel,/usr/sbin/usermod[-][A-Za-z]*,!/usr/sbin/usermod[-][A-Za-z]* root USERADMIN ALL=(root) COMMAND #lovelace ALL=(root) /usr/sbin/useradd #切换用户再次测试 [root@lovelace ~]# su -l lovelace #测试看下是否能够对root账户属性进行编辑 [lovelace@lovelace ~]$ sudo/usr/sbin/usermod-p 51cto root Sorry, user lovelace is not allowed to execute '/usr/sbin/usermod -p 51cto root'as root on lovelace.localdomain. #对普通用户操作 [lovelace@lovelace ~]$ sudo/usr/sbin/usermod-p 51cto test [sudo] password forlovelace:
问题解决.....
转载于:https://blog.51cto.com/lovelace/1215182