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

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

一. 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的目录内容

 

 

 

转自:http://blog.csdn.net/wwj_748/article/details/8708580


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值