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

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

私のLinux Red Hatシステムでは、rootで次のことを行います。

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

答え1

まず、rootどのユーザーでも構いません。パスワードは不要です。これはスーパーユーザーの特権の一つです。したがって、プロンプトなしでsu - starusに切り替えることができますstarus。ただし、その時点ではstarusこれ以上ではないrootため、に切り替えるにはパスワードが必要ですmoon

簡単な解決策は、最初に切り替えてからroot(実行)に切り替えることです。exitmoon

visudoここでは問題ではありません。を使用していないため、編集されたファイルで行った変更はsudo動作に影響を与えず、単に同じプログラムではないことです。/etc/sudoersvisudosusudo

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

moon@host $ sudo -u starus command

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

答え2

簡単な答えは、ファイルが.dll以外の/etc/sudoersプログラムでのみ使用されることです。sudosu

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

一方、あなたが編集した内容は/etc/sudoers次のとおりです。スタールスユーザーはsudoコマンドを使用し、-u次のようにコマンドを実行することを選択します。ユーザー(パスワードを求めるプロンプトを表示しない)たとえば、ログインしたときスタールス、次のコマンドを実行できます。

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

実行すると、sudo -u moon ls -l /home/moon/test.file新しく作成されたtest.file所属が表示されます。ユーザー(まるで代わりにコマンドを実行してください。スタールス)。

関連情報