suを使用してwww-dataとしてコマンドを実行できません


14
# 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

私に何が問題になっていますsuwww-data?以前は機能していました...

おそらくこれはのせいですが/usr/sbin/nologinrootシステム上の他のサービスを損なうことなく、この1つのスクリプトをどのようにドロップしますか(正当な理由でチームnologinによって選択されたDebianと思います)。

回答:


18

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


これは/bin/shデフォルトで使用されていると誤って想定していたため、-sオプションを指定する必要があるのは、変更する場合などです/bin/bash
NarūnasK

3
おかげで、Debian 9でsu www-data -s /bin/shrootに戻るだけでtypeが機能しsuます。
PJブルーネット

3
@PJBrunet-「ルートに戻る」(ルートからsuとすると)、「exit」と入力します。新しいルートシェルを起動するには、suと入力します。
ChronoFish

31

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

sudo「別のユーザーとしてコマンドを実行する」ために使用したいのかもしれません。

sudo -u www-data ./http-app.py

私は常にsuこの目的に使用し、常に使用していました。sudoインストールする追加のパッケージですが、あなたは正しいです、私はそれを使用して私が望むものを達成することができます。
NarūnasK

1

1つのコマンドを実行するだけでなくwww-data、そのユーザーの一部をテストするために切り替えたい場合は、これでうまくいきました。

sudo -u www-data sh

少し短いです。[ctrl] + [d]でセッションを終了するか、exit


0

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.