/ 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.
で応答することに気づきました。
これは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
主な問題は「/usr/sbin/nologin
"の/etc/passwd
この場合、suを実行する場合、-s /bin/bash
内部なので、例:su -s /bin/bash -c '/home/someuser/secure.script' secure
su
は/etc/passwd
で指定されたシェルを使用しています。
su
をSudo
と一緒に使用する必要はありません。
したがって、su
とSudo
を混在させないでください。Sudo -u secure '/home/someuser/secure.script'
を使用してください。