web-dev-qa-db-ja.com

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

/ 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.で応答することに気づきました。

24
peter

これはSudoの典型的な使用例です。

別のユーザーとしてコマンドを実行できるSudoと高度に構成可能(どのユーザーがどのユーザーとしてどのコマンドを実行できるかを選択的に指定できます)とsuを混合しています。パスワードを知っている(またはrootである)。 suは、/etc/passwdが使用されている場合でも、常にsu -cで記述されたシェルを実行します。このため、su/usr/sbin/nologinと互換性がありません。

あなたは使うべきです

Sudo -u secure /home/someuser/secure.script

Sudoは構成可能であるため、このコマンドを使用できるユーザーと、コマンドを実行するためにパスワードを入力する必要があるかどうかを制御できます。これを行うには、visudoを使用して/etc/sudoersを編集する必要があります。 (/ etc/sudoersを編集するときは注意してください。常にvisudoを使用してください。構文は簡単ではなく、1つのエラーがrootアカウントからロックアウトされることがあります。)

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
31
cg909

主な問題は「/usr/sbin/nologin "の/etc/passwdこの場合、suを実行する場合、-s /bin/bash内部なので、例:su -s /bin/bash -c '/home/someuser/secure.script' secure

16
peter

su/etc/passwdで指定されたシェルを使用しています。

suSudoと一緒に使用する必要はありません。

したがって、suSudoを混在させないでください。Sudo -u secure '/home/someuser/secure.script'を使用してください。

2
ctrl-alt-delor