允许 www-root 执行 bash 脚本的正确方法是什么?

允许 www-root 执行 bash 脚本的正确方法是什么?

我有一个典型的 LAMP 服务器设置(Ubuntu 16),其中为 Apache 设置了 www-data:www-data。

我有一个脚本无法以 root 身份运行,但需要以 www-data 身份运行。该脚本建议运行,sudo -u www-root -i -- <command>但当我这样做时,我收到错误:

This account is currently not available.

如果这是更好的方向,我如何安全地允许 www-data 用户运行该命令,或者我如何允许当前用户执行该命令?

注意:有问题的脚本是WP-CLI这会强制使用 --allow-root 标志,但建议不要这样做,因为安全原因

答案1

当您使用-isudo 选项时,这意味着 sudo 将尝试使用为该用户分配的登录 shell 和环境。这对帐户来说将是一个问题,www-data因为该帐户通常会有一个禁用的 shell。

root@srv:# getent passwd www-data
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

您需要弄清楚的是,您是否真的需要该用户的环境/shell。您不需要该-i选项,可以直接运行该命令而无需它。这将使用与执行命令的用户相同的 shell 类型来运行该命令。

因此请使用这个。

sudo -u www-root <command>

如果由于某种原因您确实需要-i,那么您实际上需要为该帐户提供一个 shell(/bin/sh、/bin/bash 或您最喜欢的)。

相关内容