您的位置:首页 > 运维架构 > Linux

Linux环境下提升普通用户权限(sudo)

2011-06-23 11:27 561 查看
一. Linux环境下提升普通用户权限(sudo)

用sudo让普通用户获得超级用户的一部分权利,能够做超级用户才能做的事情,还能够对普通用户身份做一些限制,指定某一个或某几个人来做,并且普通用户不需要知道超级用户的密码,就能够完成超级用户才能完成的任务。

环境:管理员root和普通用户redhat

1. 授权之前测试:

# /etc/init.d/httpd restart root执行

Stopping httpd: [ OK ]

Starting httpd: [ OK ]

$ /etc/init.d/httpd restart redhat执行

rm: cannot remove `/var/run/httpd.pid': Permission denied [FAILED]

Starting httpd:

touch: cannot touch `/var/lock/subsys/httpd': Permission denied

可以看出redhat用户执行httpd脚本重启的时候,被拒绝。

2. 超级用户为普通用户授权,让redhat可以做这件事情。

让redhat这个用户使用sudo调用这个脚本并且执行。

$ sudo /etc/init.d/httpd resart 为授权之前用sudo

We trust you have received the usual lecture from the local System

Administrator. It usually boils down to these two things:

#1) Respect the privacy of others.

#2) Think before you type.

Password:

redhat is not in the sudoers file. This incident will be reported.

可以看出,由于redhat用户还没有被超级用户授权,所以会出现这样的错误,就算输如root用户密码也是不行的,因为在sudoers文件里没有给予权利。

3. root用户修改 /etc/目录下的sudoers文件。

root用户可以手工修改/etc目录下的sudoers,这个文件权限的默认值是4 4 0,其他用户无权访问。

(两
种方法修改,第一种:chmod 660 /etc/shdoers 改成可以写的权限,然后用vi
编辑即可,改完之后在把权限改回去。第二种:用visudo,
visudo会把这个文件保存到一个临时文件里面去,它不是真正的配置文件,改完后这个内容会保存在内存里,退出visudo后才会写进真正的
sudoers文件。)

# ls -l /etc/sudoers

-r--r----- 1 root root 580 Oct 4 2004 /etc/sudoers

# visudo

在 root ALL=(ALL) ALL 下面添加一行:redhat ALL=(ALL) /etc/init.d/httpd 表示:redhat用户可以在任何主机上变成任何人去行/etc/init.d 目录下的httpd 脚本。

例如:

root ALL=(ALL) ALL

redhat ALL=(ALL) /etc/init.d/httpd

# more /etc/sudoers 确认一下有没有错误

4. 测试:redhat 执行/etc/init.d/httpd 脚本,让它重启,

$ sudo /etc/init.d/httpd restart

Password: 此处输入的是redhat自己的密码

Stopping httpd: [ OK ]

Starting httpd: [ OK ]

可以看出经过root授权后,Redhat成功执行了该脚本。

按照这个规律,可以定义很多常见的一些命令给普通用户执行。

(2). 让redhat用户不用输入密码就能直接执行service。

# visudo

redhat ALL=(ALL) NOPASSWD:/sbin/service 表示用户不需要输密码

# more /etc/sudoers

测试:

$ sudo /sbin/service iptables restart 重启防火墙,不需要输入密码。

(3). 让redhat用户在执行命令是必须输入密码。

# visudo

redhat ALL=(ALL) PASSWD:/sbin/service 表示用户需要输如自己的密码

测试:

$ sudo /sbin/service httpd restart

在输入密码5分钟之内,可以任意使用sudo,不用输密码,5分钟之后,在执行就需要输入密码。

用到的命令:

$ sudo -l 查看本人在这台主机上拥有那些权利

# man sudo 更多用法查看帮助

详解sudoers文件:

root ALL=(ALL) ALL 默认为root用户定义好的

可分成4个字段来理解:

第一个字段指定的是用户,可以是用户名,也可以是别名。


二个字段指定的是用户所在的主机,可以是ip,也可以是主机名,限制的一般都是本机,也就是限制使用这个文件的主机,如果指定
为:192.168.1.88= 表示这个文件只有在这台主机上生效,如果拷贝到别的机子上是不起作用的,一般都指定为:ALL
表示所有的主机,不管文件拷到那里都可以用。

第三个字段括号里指定的也是用户,比如说 (tom,redhat) 可以是一个或多个,ALL 表示所有用户。

第四个字段指定的是执行的命令。

例如:

root ALL=(ALL) ALL 表示:root用户可以在这台主机上以所有人的身份去执行所有命令。

redhat ALL=(lake) /bin/ls 表示:redhat用户可以在这台主机上变成lake身份去执行ls。

[redhat@localhost ~]$ sudo -u lake ls ~lake redhat以lake的身份查看lake的目录内容

from:http://bbs.tech.ccidnet.com/read.php?tid=596898
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: