现在,许多Linux用户都熟悉sudo。Ubuntu在普及sudo上做了不少工作,强迫而非鼓励用户转换到root帐号安装软件和执行其他管理任务。但是关于sudo,还有许多是用户和管理员应当知晓的。
关于Linux命令行请大家参考51CTO特别专题:Linux命令行闭关修炼札记
许多用户不甚知晓的是sudo可以用来以任何用户身份执行命令,而不单是root用户。在经验丰富的管理员手里,sudo可用来建立细粒度的权限,授予用户执行一些管理任务的权限却不用洞门大开。让我们来看看利用sudo控制系统访问权限且用户依然能保有效率的一些***实践吧。
记住,你必须使用visudo命令来编辑/etc/sudoers文件。
授予信任的用户以完全访问权限,让他们能以任何用户身份执行任何命令,这个办法看上去既诱人又简单。请将这种诱惑拒之门外,因为你想要将访问权限限制到可能的***限度。
1.限定帐号切换:只要有一丝可能,就不要配置sudo允许用户切换到其他帐号。作为替代,可尝试配置sudo允许用户以他们需要用来操作的用户身份执行特定命令。例如,用户需要安装软件了,可允许他们以root用户身份运行RPM或APT,但不用转换为root用户。
2.不要使用ALL:最常见的错误就是授予ALL权限——这意味着可以访问所有命令、访问所有用户,或者访问其它任何权限排列。虽然权限锁定耗时费力,但这样的麻烦值得一受。
3.分割sudoers:如果有许多系统要管理,又不想复制同样的/etc/sudoers文件到所有系统,那么可以将sudoers文件分割成几块,并用特定的sudo配置调用include文件。例如,如果想在管理Apache和MySQL时使用同一套指令,就可以分出一个独立的sudo.mysql文件,并使用include指令从主sudoers文件调用它。
4.善用组:如果可能,按组授权,而不是按单个用户授权。例如,有一个admin组具有管理软件包和更新的管理特权。在这种情况下,用不着每增加或删除一个用户就编辑sudoers文件——只需确保在admin组中对该用户合适地管理和增加/删除就行了。
5.超时设置:确保有合适的超时设置。太短的话,用户会很快感到灰心丧气。好办法是设置为5分钟左右。
6.遵从正确路径:通过在sudo中指定secure_path指令锁定二进制文件的路径——确保用户不能在secure_path之外执行命令。
7.将日志记录到其他文件:默认情况下,sudo可能将日志与其它系统消息一同记录在一个普通的messages日志文件中。对单用户系统如Ubuntu桌面而言,这是可接受的方案,但是对服务器也这么做可不妙。配置sudo以使其拥有自己的日志文件,这样sudo的使用和sudoers的变化更为透明。
哪些地方sudo不能用
是的,sudo是个强大的工具,但是要配置好它不容易,而且难于维护。如果有经验的管理员在系统不多的情况下使用,它是实现基于角色访问控制的完备方法。不过如果是更大型的企业,拥有数十名IT人员和几十乃至几百服务器的情形,sudo的权限很快就展露无遗。可以使用其它工具为sudo提供支持。一种方法是使用配置框架如Puppet来跨多系统管理sudo配置。对那些主要基于Linux和Unix的企业来说这会是特别有效的,尽管Puppet的学习曲线可能有点陡峭。
倘若企业已经在混合了Linux和Windows服务器的网络里部署了Microsoft Active Directory(活动目录),那么也可以使用Likewise Enterprise将Linux和Unix系统纳入Active Directory管理。这样不仅可将Linux和Unix登录和Active Directory可信网络挂钩,而且也能在网络中对所有服务器管理sudo配置。
可以找到其他工具来协助补充sudo,以提供更为健壮的特权用户管理。重要的一点是评估网络并确定是否sudo独力就能满足需要。对于小企业来说,sudo往往够好了——如果能按照***实践来做并充分了解sudo配置的话。如果未能正确管理sudo,几乎比简单地共享root信任权还要糟,因为它提供的是错误的安全感。懂得怎么使用sudo,并按照这些***实践来做,那么你就可以去悠哉游哉,大快朵颐了。
【编辑推荐】