以 www-data 身份执行 sudo,无法 cd

以 www-data 身份执行 sudo,无法 cd

我有一个 .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

相关内容