是否正在寻找更好的解决方案来在使用普通用户帐户时执行单个 sudo 命令?

是否正在寻找更好的解决方案来在使用普通用户帐户时执行单个 sudo 命令?

我使用不属于群组成员的普通用户账户登录须藤行政。当我运行以下示例命令时......

su -c 'sudo some_command_that_needs_sudo' sudo-user

..需要输入密码两次. 首次登录时sudo 用户第二次是因为我们请求 root 权限须藤

你知道如何防止再次输入密码吗?

请记住..

  • ..不想更改任何用户权限
  • ..只想输入一次密码
  • ..寻找一个简单的单一命令

答案1

您的配置有点不正常。通常,您会将您的用户名添加到 sudoers,并在需要时限制可以以这种方式执行的应用程序。在不了解更多细节的情况下,我看不出引入第三个帐户有什么好处。它只会引入更多间接性,这就是您现在遇到的情况。

您输入的第一个密码是成为 sudo 用户。您无法避免这一点 - 您正在切换用户。以下是一些您不应该使用的疯狂解决方法。

  • 您可以为用户设置一个空密码,以简化登录,但这将是疯狂的安全风险。请勿这样做。
  • 您可以使用硬编码密码自动登录expect。这并不比之前的建议更安全。不要这样做。
  • 您可以使用 ssh。您可以以 sudo 用户身份创建一个 ssh 密钥,将其复制到您用户的 .ssh 目录,为您的用户授予权限,将其附加到 sudouser 的 .ssh/authorized_keys,然后使用:ssh -i .ssh/sudouser_id_rsa sudouser@localhost <command>。它可能有效,但很疯狂。

通过使用编辑 sudoers 文件visudo并将 sudouser 设置为 NOPASSWD,可以轻松删除第二个密码。这是一个更常见的操作。您甚至可以限制不需要密码的命令,如果您只打算以这种方式运行几个命令,这显然是推荐的。但请注意,除非非常认真地对待这个 sudo 用户,否则制定 NOPASSWD 策略并不是一个好主意。一般来说,无论如何这都不是一个好主意。

无需密码提示即可运行所有命令的配置如下:

sudouser ALL= NOPASSWD: ALL

底线 - 我不明白你为什么要使用这三个帐户配置。将其放在一边,就满足您的要求而言,允许 sudo 用户运行某些命令而无需输入密码是最明智的方法。

但你必须要小心——这会导致设置不太安全。

顺便说一句,从技术上讲,可以在您的指南范围内实现零身份验证解决方案,通过对 sudo 用户同时使用基于 ssh 密钥的身份验证和 NOPASSWD,因此您的命令将如下所示:

ssh -i .ssh/sudouser_id_rsa sudouser@localhost sudo whatever_i_like

这显然已经超出了不安全感的范围——这简直是赤裸裸的。我本不应该这么说,但不要这么做。

相关内容