回答:
このusermod
コマンドを使用して、ユーザーのログインシェルを変更できます。
usermod -s /sbin/nologin myuser
または
usermod -s /usr/sbin/nologin myuser
OSが/ sbin / nologinを提供していない場合、シェルを/ bin / falseなどのNOOPコマンドに設定できます。
usermod -s /bin/false myuser
nologin
実際には次の場所にあることに注意してください/usr/sbin/nologin
nologin
/usr/local/bin/maybe
いる/dev/urandom
LYは、これら二つの間で選択されます。多分私はそれを使用する必要があります:D
ログインシェルを変更しても、必ずしもユーザーの認証が妨げられるわけではありません(ユーザーのシェルがに記載されているかどうかを確認する一部のサービスを除く/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
使用に関して認可()レベルで行うか、(like and friends)のディレクティブで行うことができます。pam
authorized_keys
sshd_config
/etc/ssh/sshd_config
AllowUsers
ただし、グローバルなpam承認にいくつかの制限を追加するとcron
、それらのユーザーとしてジョブを実行できなくなる可能性があることに注意してください。
:|
/etc/passwd
ファイルを編集し、ユーザーシェルをから/bin/bash
または/bin/sh
に変更します/sbin/nologin
vipw
そのような間違いを防ぐ方法があります。
まず、を使用してパスワードを無効にしますpasswd -l username
。
forオプションのman
ページにも注意してください: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.
/bin/false
より一般的です/bin/true
。