# su -l www-data ./http-app.py
This account is currently not available.
# su -l www-data -c ./http-app.py
This account is currently not available.
# su -c ./http-app.py www-data
This account is currently not available.
# su -lc ./http-app.py www-data
This account is currently not available.
# getent passwd www-data
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
# getent shadow www-data
www-data:*:16842:0:99999:7:::
# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 8.6 (jessie)
Release: 8.6
Codename: jessie
su
我的或有什么问题吗www-data
?它曾经有效...
大概这是因为/usr/sbin/nologin
,但是我如何在root
不影响系统上其他服务的情况下放弃这个脚本(我想相信,团队nologin
选择它是有充分理由的)?Debian
答案1
您正在使用su
它来“切换用户”。当然这是行不通的,因为www-data
这是一个无法用来登录的用户帐户。你已经告诉过它:/usr/sbin/nologin
。
也许您想要的是sudo
用于“以另一个用户身份执行命令”。
sudo -u www-data ./http-app.py
答案2
无需争论su
,sudo
您可以尝试添加-s /bin/sh
到命令行中。 (我无法验证此选项是否适用于 jessie,因为 Debian 手册页网络服务器无法正常工作:https://manpages.debian.org/)
答案3
如果您不仅想执行一个命令,还想切换到www-data
该用户测试一些内容,这对我有用:
sudo -u www-data sh
有点短了。使用 [ctrl]+[d] 退出会话或exit
答案4
还有另一种可能性(对我而言,适用于 Debian 10):
作为 root,您可以编辑/etc/passwd
.将 shell 更改为www-data
from/usr/sbin/nologin
至/bin/bash
或您喜欢的任何内容:
www-data:x:33:33:www-data:/var/www:/bin/bash
不要忘记输入www-data
密码
passwd www-data
之后您就可以www-data
以普通用户身份登录。