sudo介绍:
sudo是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,减少了root用户的登陆和管理时间,提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的。
示例讲解:
首先查看sudo是否安装:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#检查系统中是否存在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的用法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#使用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用户无效
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#使用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文件再次进行编辑
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#使用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:
|
问题解决.....
本文转自lovelace521 51CTO博客,原文链接:http://blog.51cto.com/lovelace/1215182,如需转载请自行联系原作者