su 的反面:在没有 root 权限的情况下运行命令

Joh*_*nal 7 permissions password shell root users

我正在编写一个 shell 脚本,其中大多数命令不需要 root 权限。该脚本应由管理员运行。但我希望能够将不需要 root 权限的脚本部分“su”到普通用户帐户。这将最大限度地减少使用 root 权限完成的操作数量并提高安全性。

有 linux 命令可以做到这一点吗?

我知道可以 su 到任何用户帐户,但我不想依赖于机器上存在特定用户名的假设。

想着在脚本的时候创建一个临时账号,在脚本结束的时候删除。但是如果我不在这个账户上设置密码,那么攻击者在账户的短暂生命周期内是不是就不能使用它呢?我无法将用户 shell 设置为 /sbin/nologin,因为显然这会阻止“起诉”帐户的 shell 脚本中执行命令

谢谢你的帮助。

Cra*_*son 12

我个人会反转您的策略并以非特权用户身份运行脚本,sudo 用于运行需要 root 权限的命令。是否有任何特定原因需要以 root 身份运行脚本?

但是,要回答您的问题,您可以使用 -c 标志以用户身份运行特定命令:

su someuser -c "touch /tmp/file"
Run Code Online (Sandbox Code Playgroud)

参考:http : //linux.die.net/man/1/su

  • 这是正道。 (2认同)