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

无法使用 su 将命令作为 www-data 运行
# 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

无需争论susudo您可以尝试添加-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-datafrom/usr/sbin/nologin/bin/bash或您喜欢的任何内容:

www-data:x:33:33:www-data:/var/www:/bin/bash

不要忘记输入www-data密码

passwd www-data

之后您就可以www-data以普通用户身份登录。

相关内容