我使用不属于群组成员的普通用户账户登录须藤和行政。当我运行以下示例命令时......
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
这显然已经超出了不安全感的范围——这简直是赤裸裸的。我本不应该这么说,但不要这么做。