如何以非交互方式进行 su?

如何以非交互方式进行 su?

我想做这样的事情来非交互地切换用户:

su otheruser -p <password>

但这显然不起作用......什么才起作用呢?

答案1

您可以使用 echo:

echo <otherpwd> | su - otheruser -c "my command line"

或者期望:

expect -c 'spawn su - otheruser -c "my command line"; expect "Password :"; send "<otherpwd>\n"; interact'

但这意味着密码以明文形式存储在脚本中,这绝不是一件好事。真的,sudo 是最好的方法...

答案2

成为另一个用户的几种方法。

su仅当您已经是 root 时才无需密码即可使用。尝试在命令行上为其提供密码是一个坏主意,它会暴露凭据。不要使用 su。

sudo被广泛部署且免费。您可以在文件或 LDAP 中部署策略,包括无密码命令。

ssh otheruser@localhost部署得更为广泛。但是,您必须拥有无密码密钥或等效密钥。

ksu在 Kerberos 环境中很有用。如果您已经有票证,则可以使用它。

pbrun是PowerBroker的一部分,这是一个我不太熟悉的商业特权产品。

dzdo是另一个商业特权产品 Centrify DirectAuthorize 的一部分。

doas是 OpenBSD 对以其他用户身份执行命令的看法。它似乎有一个 Linux 端口,这是相当新的开发。

pfexec在 Solaris 上使用基于角色的访问控制。但是,您将此问题标记为 Linux。

相关内容