このユーザーは現在利用できません - ただし、このユーザーによるスクリプトの実行を許可します

このユーザーは現在利用できません - ただし、このユーザーによるスクリプトの実行を許可します

/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/passwdsu -csu/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/bashsu -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'

関連情報