技巧:Linux赋予普通用户特殊权限
在Linux系统中,管理员往往不止一人,若每位管理员都用root身份进行管理工作,根本无法弄清楚谁该做什么.最好的方式是:管理员创建一些普通用户,分配一部分系统管理工作给他们. 我们不可以使用su让他们直接变成root,这些用户都知道root的密码,这种方法很不安全,也不符合我们的分工需求.一般的做法是利用权限的设置,依工作性质分类,让特殊身份的用户成为同一个工作组,并设置工作组权限.例如:要wwwadm这位用户负责管理网站数据,一般Apache Web Server的进程httpd的所有者是www,您可以设置用户wwwadm与www为同一工作组,并设置Apache默认存放网页目录 /usr/local/httpd/htdocs的工作组权限为可读、可写、可执行,这样属于此工作组的每位用户就可以进行网页的管理了. 但这并不是最好的解决办法,例如管理员想授予一个普通用户关机的权限,这时使用上述的办法就不是很理想.这时您也许会想,我只让这个用户可以以 root身份执行shutdown命令就行了.完全没错,可惜在通常的Linux系统中无法实现这一功能,不过已经有了工具可以实现这样的功能—— sudo. sudo通过维护一个特权到用户名映射的数据库将特权分配给不同的用户,这些特权可由数据库中所列的一些不同的命令来识别.为了获得某一特权项,有资格的用户只需简单地在命令行输入sudo与命令名之后,按照提示再次输入口令(用户自己的口令,不是root用户口令).例如,sudo允许普通用户格式化磁盘,但是却没有赋予其他的root用户特权. 1、sudo工具由文件/etc/sudoers进行配置,该文件包含所有可以访问sudo工具的用户列表并定义了他们的特权.一个典型的/etc/sudoers条目如下: 代码: liming ALL=(ALL) ALL 这个条目用户liming作为超级用户访问所有应用程序,如用户liming需要作为超级用户运行命令,他只需简单地在命令前加上前缀sudo.因此,要以root用户的身份执行命令format,liming可以输入如下命令: 代码: # sudo /usr/sbin/useradd sam 注意:命令要写绝对路径,/usr/sbin默认不在普通用户的搜索路径中,或者加入此路径:PATH=$PATH:/usr/sbin;export PATH.另外,不同系统命令的路径不尽相同,可以使用命令“whereis 命令名”来查找其路径. 这时会显示下面的输出结果: 代码: 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: 如果liming正确地输入了口令,命令useradd将会以root用户身份执行. 注意:配置文件/etc/sudoers使用命令 Visudo来编辑. 只要把相应的用户名、主机名和许可的命令列表以标准的格式加入到文件/etc/sudoers,并保存就可以生效,再看一个例子. 代码: gem sun=/usr/sbin/reboot,/usr/sbin/shutdown 注意:命令一定要使用绝对路径,以避免其他目录的同名命令被执行,从而造成安全隐患. 然后保存退出,gem用户想执行reboot命令时,只要在提示符下运行下列命令: 代码: $ sudo /usr/sbin/reboot 输入正确的密码,就可以重启服务器了. 如果您想对一组用户进行定义,可以在组名前加上%,对其进行设置,如: 代码: %cuug ALL=(ALL) ALL 3、另外,还可以利用别名来简化配置文件.别名类似组的概念,有用户别名、主机别名和命令别名.多个用户可以用一个别名来定义,然后在规定他们可以执行什么命令的时候使用别名就可以了,这个配置对所有用户都生效.主机别名和命令别名也是如此.注 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |