加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 17:01:30 所属栏目:安全 来源:网络整理
导读:我是Unix的新手.我试图以另一个用户身份运行 shell脚本和命令. 例如: 我以user1身份登录,并希望以user2身份执行脚本.我不想要密码提示,我希望它能自动输入.我知道公钥认证,但我试图找到是否有类似的东西: sudo -u user2 script.sh 我想尝试这个,所以我不想
我是Unix的新手.我试图以另一个用户身份运行 shell脚本和命令.

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

sudo -u user2 script.sh

我想尝试这个,所以我不想要密码提示.我希望它在sudo命令本身中处理.

请帮忙

您可以将NOPASSWD选项添加到/ etc / sudoers文件中.
但出于安全考虑,可能对您不利.
user    user2 = NOPASSWD: /usr/local/bin/script.sh

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

期待您可以做以下事情:

#!/usr/bin/expect
set password "megapassword"
spawn /bin/sudo -u user1 /usr/local/bin/script.sh
expect "password for user:"
send "$passwordr"
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读