/etc/passwd に以下の特別なユーザーを作成しました:
secure:x:2000:2000:secure:/bin:/usr/sbin/nologin
このユーザーのログインを許可しません (コンソール、ssh、ftp など)。
彼は、次の 1 つのスクリプトを実行するだけです:
sudo su secure -c '/home/someuser/secure.script'
しかし、それは私に与えますThis user is currently not available.
。この方法でスクリプトを実行できるように設定しながら、このユーザーのシステムへのログイン (コンソール、ssh、ftp など) を防ぐにはどうすればよいでしょうか?
/usr/sbin/nologin
コマンドラインに入力すると、コンピューターが と応答することに気付きましたThis account is currently not available.
。
答え1
これは の典型的な使用例ですsudo
。
sudo
別のユーザーとしてコマンドを実行でき、高度な設定が可能な (どのユーザーがどのユーザーとしてどのコマンドを実行できるかを個別に指定できる) と、パスワードsu
を知っている場合 (または root である場合) に別のユーザーに切り替わる を混在させています。が使用されている場合でも、 はsu
常に で記述されたシェルを実行します。このため、は と互換性がありません。/etc/passwd
su -c
su
/usr/sbin/nologin
使用すべき
sudo -u secure /home/someuser/secure.script
設定可能なので、sudo
このコマンドを誰が使用できるか、また、実行時にパスワードを入力する必要があるかどうかを制御できます。これを行うには、/etc/sudoers
を使用して編集する必要がありますvisudo
。(/etc/sudoers を編集するときは注意し、常に visudo を使用して編集してください。構文は単純ではなく、1 つのエラーでルート アカウントからロックアウトされる可能性があります。)
sudoers のこの行により、グループ内の誰でも次somegroup
のようにコマンドを実行できるようになりますsecure
。
%somegroup ALL=(secure) /home/someuser/secure.script
これにより、グループ内の誰でもパスワードを入力せずsomegroup
にコマンドを実行できるようになります。secure
%somegroup ALL=(secure) NOPASSWD: /home/someuser/secure.script
これにより、パスワードを入力せずuser1
にコマンドを実行できます。secure
user1 ALL=(secure) /home/someuser/secure.script
答え2
主な問題は、 この場合 su を実行するときに、内部に「 /usr/sbin/nologin
」が含まれている必要があることです。たとえば、次のようになります。/etc/passwd
-s /bin/bash
su -s /bin/bash -c '/home/someuser/secure.script' secure
答え3
su
で指定されたシェルを使用しています/etc/passwd
。
su
を with で使用する必要はありませんsudo
。
su
したがって、と混在させないでくださいsudo
。 を使用してくださいsudo -u secure '/home/someuser/secure.script'
。