sudo介绍:

sudo是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,减少了root用户的登陆和管理时间,提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的。

 

 

sudo命令

 

示例讲解:

首先查看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:

 

问题解决.....