システム間のファイル転送、監視など、きめ細かい権限を必要とする自動化されたタスク用に複数のユーザーアカウントを作成しました。
これらの「ユーザー」がシェルを持たずにログインできないように、これらのユーザーアカウントをどのようにロックできますか?誰かがSSH経由でこれらのユーザーアカウントの1つとしてログインするのを防ぎたいと思います。
答え1
usermod
このコマンドを使用して、ユーザーのログインシェルを変更できます。
usermod -s /sbin/nologin myuser
または
usermod -s /usr/sbin/nologin myuser
オペレーティングシステムが/sbin/nologinを提供していない場合は、シェルを/bin/falseなどのNOOPコマンドで設定できます。
usermod -s /bin/false myuser
答え2
ログインシェルを変更しても必ずしもユーザー認証がブロックされるわけではありません(一部のチェックでユーザーシェルが言及されるサービスを除く/etc/shells
)。
人々はまだシステムがUNIXユーザーに提供するさまざまなサービスに対して認証を受けることができます。
シェルを変更したり、シェル/bin/false
を/usr/sbin/nologin
実行したりするために使用できるサービス(コンソールログイン、ssh、telnet、rlogin、rexec...)でコマンドを実行しないようにすることで影響を受けます。承認する特定のサービスにのみ使用できます。
これにより、まだポート転送(例ssh
:。
passwd -l
パスワード認証は無効になりますが、ユーザーはまだ他の認証方法(たとえば)を使用できauthorized_keys
ますssh
。
pam
少なくともLinuxでは、このモジュールを使用して、許可されpam_shells
たシェル(参考資料に記載されているシェル)を使用しているユーザーに認証または許可を制限できます/etc/shells
。認証するには、ssh
認証()レベルでこれを行う必要があります。account
sshd
pam
また他の認証方法(たとえば)に接続するかauthorized_keys
(たとえば、友達など)sshd_config
の指示を使用してこれを実行できます。/etc/ssh/sshd_config
AllowUsers
ただし、グローバル pam 認証にいくつかの制限を追加すると、cron
これらのユーザーでタスクが実行されないことがあります。
答え3
まず、無効なパスワードを使用してくださいpasswd -l username
。
man
forオプションのページも参照してください。passwd
-l
-l, --lock
Lock the password of the named account. This option disables a password by changing it to a value which matches no
possible encrypted value (it adds a ´!´ at the beginning of the password).
Note that this does not disable the account. The user may still be able to login using another authentication token
(e.g. an SSH key). To disable the account, administrators should use usermod --expiredate 1 (this set the account's
expire date to Jan 2, 1970).
Users with a locked password are not allowed to change their password.
答え4
chsh コマンドを使用できます。
~# chsh myuser
必要に応じて新しいシェルの詳細を入力します。
Login Shell [/bin/sh]: /bin/nologin
またはより短いバージョン:
~# chsh myuser -s /bin/nologin