私の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
(実行)に切り替えることです。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
答え2
簡単な答えは、ファイルが.dll以外の/etc/sudoers
プログラムでのみ使用されることです。sudo
su
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
所属が表示されます。月ユーザー(まるで月代わりにコマンドを実行してください。スタールス)。