接下来需要注意的是您的系统防止本地用户攻击的安全性。慢着,刚才是说本地用户吗?是的!
获得本地用户访问权限是系统入侵者在得到 root
账户之前首先要作的事情之一。在松懈的本地安全性下,他们接着就可以通过各种缺陷以及没有很好设置的本地服务,从普通用户访问权限“升级”到 root
权限。如果您确定您的本地安全性是牢固的,那入侵者就又有一道栅栏需要跨过了。
本地用户也能够对您的系统造成严重破坏,甚至(尤其)他们确实是他们自称的那个人。把账户提供给您不认识的人或者没有联系方式的人可不妙。
您应该确定为用户账户只提供了他们的最小需要。如果您给您的儿子(10岁)提供了一个账户,您可能只想让他使用字处理器和绘画程序,却不能够删除不属于他的数据。
允许其他人合法访问您的 GNU/Linux 计算机,请遵守以下建议:
您计算机上最被追求的的账户是 root
(超级用户)账户。它能控制整台计算机,并且可能控制网络上的其他计算机。请记住,仅在非常短暂的、特定的任务中使用 root
账户,平常使用普通用户。登录为 root
后,即使小错误也可能造成大问题。您成为 root
的时间越少越安全。
执行某些复杂的命令时,请先尝试使用某种非毁灭性方式运行一遍,尤其是在使用文件通配符的时候。例如,如果您想要执行 rm -f foo*.bak,请先执行 ls foo*.bak 以确定您正在删除您认为您在删除的文件。有时用 echo 替换毁灭性的命令也行。
只在作单个特定的任务时才转为 root
。如果您发现自己不知道应该怎么作,退回普通用户 shell
直到您确定应该用 root
来作什么。
root
用户的命令搜索路径非常重要。命令搜索路径(即环境变量 PATH
)指定 shell
搜索程序的目录。请尽量限制 root
用户的命令搜索路径,而且永远不要在您的 PATH
里包含 .
(表示“当前目录”)。另外,不要在您的搜索路径中包含可写入的目录,因为这可能允许攻击者在您的搜索路径中修改或加入新的二进制代码来让他们在您下次执行那些命令的时候成为 root
。
决不作为 root
使用 rlogin/rsh/rexec 工具套件(被称为“r-utilities (r-工具)”)。它们容易遭受许多种攻击,作为 root
运行显然是危险的。决不为 root
建立 .rhosts
文件。
/etc/securetty
文件包含一个 root
能够登录的终端列表。默认情况下,这只设为本地虚拟控制台(tty)。对该文件添加任何东西时请千万谨慎。您应该可以以普通用户身份从远程登录,然后再按照需要 su (希望您通过 ssh 或其他加密管道)。因此,没有必要允许从远程直接以 root
身份登录。
如果您实在是需要允许别人以 root
权限访问您的计算机,有许多工具可能会给您提供帮助。sudo 让用户能用他们自己的密码作为 root
来执行一组限定范围的命令。例如,这能够让您允许某个用户能够在您的 GNU/Linux 计算机上弹出及挂载可移动介质,却没有其他 root
权限。sudo 也能够在日志中记录成功以及不成功的 sudo 企图,让您能够追查谁执行了什么命令来作什么。因此,即使在有许多人拥有 root
权限的情况下,sudo 也工作良好。因为它帮助您保留更改的痕迹。
虽然 sudo 能被用来为特定的用户提供执行特定任务的特殊权限,它确实也有一些缺陷。它应该只被用于一组限定范围的任务,例如重启服务器,或是添加新用户。任何提供 shell
转义的程序在通过 sudo 执行的时候都会提供其用户 root
访问权限。这包括大多数编辑器。同时,像 /bin/cat 那样无害的程序也能用来改写文件,这会使得 root
被误用。请考虑将 sudo 作为簿记,并且不要期望它替代 root
用户而仍然安全。