別の非rootユーザーとして対話型シェルを取得するにはどうすればよいですか?


14

デフォルトのセキュリティモデル(ルートがロックされ、sudo権限を昇格するために使用されます)でUbuntu 10.04 LTSサーバーを使用しています。sudo -i昇格した特権で一連のコマンドを実行する必要があるとき、またはルートのみの特権を持つディレクトリを探し回る必要があるとき、私は時々使用することを楽しんでいます。

時々、独自の非特権システムアカウントとして実行するソフトウェアをセットアップするときに(adduser --system --group --no-create-home --disabled-login some-daemon-user)自分やrootではなく、そのユーザーとして一連のコマンドを実行する必要があることがわかります。を使用してみましたsudo -i -u some-daemon-user1、エラーメッセージなしでステータスを返すだけです。

私がチェックしたsyslogmessagesauth、およびdebugログファイルに/var/logし、それらのどれもが、すべてのメッセージ、その参照が含まsudoや問題のアカウントを。

だから、パスワードを設定してログインするだけで、別の非ルートユーザー、sudoスタイルになることは可能ですか?私のシステムは何らかの形で「壊れている」のでしょうか、それとも間違っているのでしょうか?

回答:


14

ああ、問題は、それらのユーザーの標準シェルが通常に設定されていることで/bin/falseあり、セキュリティ上の理由からこれを変更しないでください。ただし、たとえば次のように実行できます。sudo -u www-data /bin/sh


1
「セキュリティ上の理由」の詳細を教えてください。sudoFlorianが上記で提案しているように、ユーザーとしてシェルを実行するために使用する場合、何か違いはありますか?
カリオン

1
その理由は、攻撃者がシステムユーザーとしてログインを実行する場合、つまりログインプログラムのバグを悪用することにより、有効なシェルが作成される可能性が低くなるためです。そのため、たとえ良いカルマのためだけであっても、設定は/ etc / passwdファイルにあるままにしておく必要があります。sudoを介してシェルを直接呼び出すことは、これとは無関係です。
ポールヘンシュ

したがって、問題はpasswd、実際にユーザーとしてシェルを実行するのではなく、ファイルにシェルを設定することです。ガッチャ!
カリオン

9

sudo -i/bin/falseシステムユーザー用のターゲットユーザーのパスワードデータベースエントリで指定されたシェルを実行します。

使用する

 sudo -u some-daemon-user bash

または

sudo -u some-daemon-user -H bash

ターゲットユーザーに設定された$ HOME環境変数を設定する場合。

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