我有一个由 Apache 执行的服务器端脚本,以 的身份运行www-data
。当远程调用时,该脚本在服务器上运行良好(http://example.com/script.sh
)。
我试图在与 相同的服务器上运行相同的脚本root
,模拟www-data
。它没有,甚至su www-data -c 'id'
失败runuser -l www-data -c 'id'
了
This account is currently not available.
2016 Nov 4 09:45:54 eu1 Attempted login by root on /dev/pts/0
该帐户确实已被锁定,无法交互式登录(这是正常的):
# grep www-data /etc/shadow
www-data:*:15246:0:99999:7:::
# grep www-data /etc/passwd
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
既然 Apache 能够运行某些东西,www-data
那么它root
应该也能做同样的事情。怎么做呢?
答案1
尝试
su -s /bin/bash www-data -c
由于 www-data 没有 shell,因此您必须使用该-s
选项指定一个。