Answers:
推论仅针对su
或sudo
在需要时进行。
大多数日常任务不需要root shell。因此,优良作法是使用无特权的Shell作为默认行为,然后仅在需要执行特殊任务时提升为root。
这样,您可以减少所使用的任何应用程序中的危险错误(错误的脚本,错误的通配符等)和漏洞的范围。特别是那些连接到Internet的服务器-看到一句老话“ Do n't IRC as root”。
sudo
通常建议您这样做,因为它可以让您细化并审核此类特权的使用。
通过遵守这些做法,您还可以禁用远程root登录。这增加了任何潜在攻击者的进入门槛,因为他们将需要损害既是“ wheel”组成员的常规用户帐户,又要在理想情况下仅通过SSH公钥授权,然后再破坏root帐户本身。
sudo
是高级的,但su
还允许您-m
在根终端中使用该标志来使环境变量保持相同。没有什么可以驱使我更多傻瓜然后su
扎根一点,只是~
在目录名称中做一些事情而使其无法工作。
主要原因是要创建审核跟踪。如果您需要先以普通用户身份登录系统,然后再执行su,则可以跟踪谁负责给定的操作。
sudo还会自动将每个命令记录到syslog中,您可以定义每个用户可以使用的命令。
sudo vim foo.txt
然后从vim中放到shell中将为您提供根shell,而无需常规的sudo日志记录。
sudo -i
为了进行互动式会议……
如果要创建审核跟踪,并且不想成为此处提到的“ sudo su-”或“ sudo vim foo.txt”问题的受害者,则可以使用“ sudosh”。通过sudo分发根访问权限,但使唯一允许的命令运行“ sudosh”。
sudosh是一个日志记录外壳,您可以稍后重播整个终端会话,以准确显示用户在终端上看到的内容。
您应该深入练习安全性。
禁止远程根访问(或至少通过密码进行根访问)。(如果您允许通过密钥进行根访问,请仔细控制这些密钥,或者最好使用像kerberos这样的方法来允许集中撤销密钥)。
我会禁用su并使用sudo。这样,用户使用密钥(最好是加密的)来访问系统,然后他们仅将密码用于特权升级。您可以使用sudo限制人们访问哪些程序,但是大多数情况下,您只限于对知道root密码的用户进行访问。
在理想的情况下,即使您允许人们访问您的计算机(但没有将它们放在/ etc / sudoers文件中),您也应该能够在Internet上发布您的root密码,这没关系。当然,您不应该发布root密码,但是其想法是使用同心的保护层来保护系统。