web-dev-qa-db-ja.com

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が原因ですが、システム上の他のサービスを危険にさらすことなく、この1つのスクリプトのrootをどのように削除するか(nologinDebianチームには正当な理由があります。

15
NarūnasK

suSudoを議論せずに、-s /bin/shをコマンドラインに追加します。 (DebianマンページWebサーバーが機能していないため、このオプションがjessieで使用できることを確認できませんでした: https://manpages.debian.org/

21
Mark Wagner

「ユーザーの切り替え」に使用するsuを使用しています。もちろん、www-dataは、ログインに使用できないユーザーアカウントです。あなたはそれを伝えました:/usr/sbin/nologin

多分あなたが欲しいのはSudoで、これは「別のユーザーとしてコマンドを実行する」ために使用されます。

Sudo -u www-data ./http-app.py
32
fikr4n

1つのコマンドを実行するだけでなく、www-dataそのユーザーのためにいくつかのものをテストするために、これは私にとってはうまくいきました:

Sudo -u www-data sh

少し短いです。 [ctrl] + [d]またはexitでセッションを終了します

3
rundekugel

この種の問題で、私はオプション-pを使用しました:

su -pc ./http-app.py www-data

-p:環境が保持されます。奇妙なことに、新しいアカウントでログインしようとしないため、メッセージThis account is currently not available.は表示されません。

0
Arno Bozo