我有一个典型的 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 用户运行该命令,或者我如何允许当前用户执行该命令?
答案1
当您使用-i
sudo 选项时,这意味着 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 或您最喜欢的)。