gpt4 book ai didi

unix - 以另一个用户身份运行命令

转载 作者:行者123 更新时间:2023-12-04 20:16:52 25 4
gpt4 key购买 nike

关闭。这个问题是off-topic .它目前不接受答案。












想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。

9年前关闭。




Improve this question




我是 Unix 的新手。我正在尝试以另一个用户身份运行 shell 脚本和命令。

例如:
我以 user1 身份登录并想以 user2 身份执行脚本。我不想要密码提示,我希望它自动输入。我知道公钥身份验证,但我试图找出是否有类似的东西:

sudo -u user2 script.sh

我正在尝试对此进行 cron 操作,所以我不想要密码提示。我希望它在 sudo 命令本身中处理。

请帮忙

最佳答案

您可以将 NOPASSWD 选项添加到 /etc/sudoers文件。
但出于安全原因,这可能对您不利。

user    user2 = NOPASSWD: /usr/local/bin/script.sh

您拥有的另一个选项:使用 sudo , 但不是直接从某个脚本运行它,而是使用 pexpectexpect ,这将为您输入密码。从安全的角度来看,这也可能并不理想,因为您需要将密码保存在脚本中。

expect您可以执行以下操作:
#!/usr/bin/expect
set password "megapassword"
spawn /bin/sudo -u user1 /usr/local/bin/script.sh
expect "password for user:"
send "$password\r"
expect eof

不要忘记对该文件设置 500 权限。

pexpect (这是一个 python 模块)这看起来像:
import pexpect
password = "megapassword"
p = pexpect.spawn("sudo -u user1 /usr/local/bin/script.sh")
i = p.expect([".ssword:*", pexpect.EOF])
p.sendline(password)

如果在 cron 中运行命令并且可以将命令添加到 user1 的 crontab 中,您也可以这样做。这可能是最好的解决方案。
user1$ crontab -e

关于unix - 以另一个用户身份运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11105444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com