无法使用 su 作为 www-data 运行命令

Nar*_*asK 30 debian su

# 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
Run Code Online (Sandbox Code Playgroud)

我的su或有什么问题www-data?它曾经工作...

大概这是因为/usr/sbin/nologin,但是我如何放弃root这个脚本,而不影响系统上的其他服务(团队nologin选择了Debian一个很好的理由,我想相信)?

fik*_*r4n 46

您正在使用suwhich 用于“切换用户”。当然它不会工作,因为www-data是一个不能用于登录的用户帐户。你已经告诉它:/usr/sbin/nologin

也许您想要的sudo是用于“以另一个用户身份执行命令”。

sudo -u www-data ./http-app.py
Run Code Online (Sandbox Code Playgroud)

  • 我总是使用“su”来达到这个目的,并且它总是有效的。`sudo` 是一个需要安装的额外软件包,但你是对的,我可以用它来实现我想要的。 (2认同)

小智 29

无需辩论suvs.sudo您可以尝试添加-s /bin/sh到命令行。(我无法验证此选项是否可用于 jessie,因为 Debian 联机帮助页网络服务器无法正常工作:https : //manpages.debian.org/

  • 谢谢,它适用于 Debian 9 `su www-data -s /bin/sh` 只需输入 `su` 即可返回 root。 (8认同)
  • @PJBrunet - “要回到 root”(假设你从 root 开始),你会输入“exit”。要启动一个新的 root shell,您需要输入 su。 (6认同)
  • 我不得不做`sudo su www-data -s /bin/sh`(或/bin/bash) (2认同)

小智 12

如果您不仅要执行一个命令,而且要切换到www-data以测试该用户的某些内容,这对我有用:

sudo -u www-data sh
Run Code Online (Sandbox Code Playgroud)

它有点短。使用 [ctrl]+[d] 或exit