![以 www-data 身份执行 sudo,无法 cd](https://linux22.com/image/1411454/%E4%BB%A5%20www-data%20%E8%BA%AB%E4%BB%BD%E6%89%A7%E8%A1%8C%20sudo%EF%BC%8C%E6%97%A0%E6%B3%95%20cd.png)
我有一个 .procmailrc 设置,它将电子邮件导入到脚本中。我的问题的核心是电子邮件是以用户“magic”的身份接收的,而处理电子邮件所需的脚本需要以 www-data 的身份运行。
该邮件以用户“magic”的身份接收,并且.procmailrc 将其传输到:
/home/magic/email_reader_passthru
在此文件中我有以下命令:
sudo -u www-data -s "cd /var/www/live/app && Console/cake emailReader"
我还赋予了“magic”在 /etc/sudoers 中以“www-data”身份执行 sudo 的能力
magic ALL = (www-data) NOPASSWD:ALL
然而,我总是收到以下错误消息:
/bin/bash: cd /var/www/live/app && Console/cake emailReader: No such file or directory
在测试中,如果我以用户 magic 身份登录 ssh 并尝试执行:
sudo -u www-data -s 'cd /var/www/live/app'
我遇到了同样的问题,但不知道为什么。好像我无法在 sudo -s 命令中执行 cd?
答案1
在我看来,-s
不同 sudo 发行版的行为定义不明确。您可能应该像sh
这样指定某个 shell:
sudo -u www-data sh -c "cd /var/www/live/app && Console/cake emailReader"
说明:上述命令调用 sudo,进而调用 shell sh
,然后解析以下命令:cd /var/www/live/app && Console/cake emailReader