# 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
が原因ですが、システム上の他のサービスを危険にさらすことなく、この1つのスクリプトのroot
をどのように削除するか(nologin
はDebian
チームには正当な理由があります。
su
とSudo
を議論せずに、-s /bin/sh
をコマンドラインに追加します。 (DebianマンページWebサーバーが機能していないため、このオプションがjessieで使用できることを確認できませんでした: https://manpages.debian.org/ )
「ユーザーの切り替え」に使用するsu
を使用しています。もちろん、www-data
は、ログインに使用できないユーザーアカウントです。あなたはそれを伝えました:/usr/sbin/nologin
。
多分あなたが欲しいのはSudo
で、これは「別のユーザーとしてコマンドを実行する」ために使用されます。
Sudo -u www-data ./http-app.py
1つのコマンドを実行するだけでなく、www-data
そのユーザーのためにいくつかのものをテストするために、これは私にとってはうまくいきました:
Sudo -u www-data sh
少し短いです。 [ctrl] + [d]またはexit
でセッションを終了します
この種の問題で、私はオプション-p
を使用しました:
su -pc ./http-app.py www-data
-p:環境が保持されます。奇妙なことに、新しいアカウントでログインしようとしないため、メッセージThis account is currently not available.
は表示されません。