在我的服务器上,我已授予 Web 服务器的主用户对 /usr/bin 和 /tmp 的访问权限。我这样做是为了让某些脚本能够调用 exim,而此用户无需拥有完整的 sudo 权限。
现在我想通过 ALL = (ALL) 语法为该特定用户添加完全 sudo 权限。
我的问题是,如果我将 user = /usr/bin, /tmp 语法转换为完整的 sudo,这些相同的脚本是否可以工作。我知道当您在命令行中输入 sudo 时,您需要输入密码。但上述脚本是通过 cron 运行的,现在运行时不需要密码。那么授予此用户完全管理员权限会改变这种情况吗?
我知道这也许是一个简单的问题,但我不想在如此简单的事情上犯下可以避免的错误。
为您提供更多详细信息。有问题的这个用户帐户与“拥有”所有面向公众的网页的用户相同。我只想拥有一个完整的 sudo 用户来执行管理任务,而无需以 root 身份登录。从安全角度来看,您是否会将完整的 sudo 权限授予拥有 Web 服务器所提供文件的用户?或者您只是创建另一个用户来执行管理任务?
感谢您的帮助!
答案1
我认为授予精确的 sudo 权限比允许对 /usr/bin 进行 r/w 访问更安全,当然 /tmp 对任何用户都应该是 r/w,通常也是如此。
要授予完全 sudo 权限,可以在 sudoers 文件中执行以下操作:
示例名称 ALL=/bin/bash
然后用户运行:
sudo bash
并且会拥有完整的 root shell。这显然非常不安全,在我看来,这只适用于实际是管理员并且知道 root 密码的人。
为了允许用户启动诸如 exim 之类的服务,可以执行以下操作:
example_name ALL=/etc/init.d/exim4 启动,/etc/init.d/exim4 停止,/etc/init.d/exim4 重新启动,/etc/init.d/exim4 重新加载
root 可以执行的任何操作都可以通过 sudo 进行配置和完成,因此,用户无需拥有管理员权限即可执行某些任务来访问 root 帐户。
另外,如果某些二进制文件允许您启动 shell(例如 vim),则向这些二进制文件授予 sudo 权限可能会产生意想不到的后果。在这种情况下,shell 会以相同的提升权限启动,并基本上为您提供 root 访问权限。当您授予运行 make 的 sudo 权限时也会发生类似的事情,然后用户可能会滥用 make 将文件放置在各种位置。
因此,请注意授予哪些 sudo 权限以及如何授予这些权限。如果二进制文件(例如 vim)具有受限模式,则最好使用该模式。最好始终谨慎行事,授予尽可能少的权限来完成任务,并根据具体情况进行扩展。