web-dev-qa-db-ja.com

visudo +他のユーザーからユーザーにアクセスする方法

Linux Red Hatマシンでは、ルートから次のことを行います

# su - starus
$                <--   now I am in starus user

$ su - moon      <-- now I want to access moon user from starus user
Password:

しかし、パスワードの入力を求められます。

次のvisudoにすでに追加されている場合、パスワードを取得する理由を教えてください

moon ALL=(starus) NOPASSWD: ALL

なにが問題ですか?

また、ユーザーmoonとして次のスクリプトを実行しようとしましたが、パスワードが必要です

starus@Host Sudo -u moon  /home/USER261/test.bash
[Sudo] password for starus:
3
yael

まず、rootは、パスワードを必要とせずに任意のユーザーになることができます。これは、スーパーユーザーになることの特権の1つです。したがって、_su - starus_を使用すると、プロンプトを表示せずにstarusに切り替えることができます。ただし、その時点で、あなたはstarusになり、rootではなくなったため、moonに切り替えるにはパスワードが必要です。

簡単な解決策は、最初にrootに切り替えて(exitを実行するだけ)、次にmoonに切り替えることです。

さて、ここではvisudoは関係ありません。 Sudoを使用していないため、そこで行った変更(_/etc/sudoers_で、visudoが編集するファイル)はsuの動作に影響しません。同じプログラムではないSudoのそれだけ。

いずれにせよ、表示する行(moon ALL=(starus) NOPASSWD: ALL)は、ユーザーmoonがユーザーstarusとして任意のコマンドをSudoで実行できることを意味しますパスワードを入力します。 moonのパスワードを知らなくても誰でもmoonになることができるという意味ではありません。これは、このようなコマンドにパスワードが必要ないことを意味します。

_moon@Host $ Sudo -u starus command
_

moonとしてログインしている場合は、Sudoを使用して、パスワードなしでstarusとしてコマンドを実行できます。

6
terdon

簡単な答えは、/etc/sudoersファイルはSudoプログラムによってのみ使用され、suでは使用されないということです。

指定されたユーザーとして新しいシェルを開始するsuプログラムでは使用されません。 su - moonを実行すると、moonユーザーとして新しいログインシェルを開始し、そのユーザーのパスワードの入力を求められます。このコマンドをrootとして実行すると、rootがスーパーユーザーであり、必要に応じてパスワードを変更できるため、ユーザーのパスワードの入力を求められません。ただし、コマンドをstarusユーザーとして実行する場合は、スーパーユーザーではないため、通常どおり認証する必要があります。

一方、/etc/sudoersに対して行った編集により、starusユーザーはSudoコマンドと-uオプションを使用してコマンドを実行できます。 moonユーザーとして(パスワードの入力を求められることなく)。たとえば、starusとしてログインしているときに、次のコマンドを実行できます。

Sudo -u moon touch /home/moon/test.file

Sudo -u moon ls -l /home/moon/test.fileを実行すると、新しく作成されたtest.filemoonユーザーによって所有されていることが示されます(コマンドを実行したのはmoonであり、-ではないかのように) starus)。

3