0

私がそうするとき、私はパスワードを要求せずsudo su - johnにユーザーになります。 しかし、そうすると、パスワードを求められます。についても同様john
sudo su - john /usr/share/script_to_run.plsudo -u john /usr/share/script_to_run.pl

なんで?ここで何が間違っていますか?

4

2 に答える 2

1

さて、まず第一に-、ログイン シェルが必要であることを意味します。最初のステートメントは、root (したがってsudo) として、 としてログインしたように表示させたいことを意味しますjohn。現在ログインしているユーザーには、パスワードを使用せずに sudo を実行する権限があるように構成されています。

最初のインスタンスで何が起こるかというと、1 つのコマンドを実行しsu - john(「としてログインする」という意味johnです)、それを root として実行します (sudo最初に入力したため)。現在のユーザーには sudo-without-password-rights があり、root には任意のユーザーになる権利。

2回目の試みは間違っています。を使用してその方法でコマンドを実行することはできませんsu。また、su に単一のコマンドを実行させたい場合、それをログイン シェルにする理由がわかりません。

john3 番目のオプションでは、(現在ログインしているユーザーとして) 1 つのコマンドに対して"なり" たいと考えています。johnそのためには、パスワードが必要です。(rootただし、 としてこれを行う場合、パスワードは必要ありません。)

それを機能させるには、おそらく試すことができます

sudo su --command="/usr/share/script_to_run.pl" john

または多分もっとエキゾチックに見える

sudo sudo -u john /usr/share/script_to_run.pl
于 2013-08-09T07:27:49.047 に答える
0

「sudo」は、「su」のすべての機能を提供するように設計されていますが、他のユーザーのパスワードを使用する必要はありません。必要な回答は /etc/sudoers ファイル内にあり、「sudo visudo」コマンドで編集できます。ここで、ユーザーにパスワードを要求しないようにできることがわかります。

cratylus ALL=(ALL)       NOPASSWD: ALL

それからクエリを送信します

sudo -u cratylus the statement 

注: ステートメントを引用しないでください。これは、「su -c」コマンドに対してのみ行います。

于 2014-05-05T07:18:29.793 に答える