Answers:
您可以使用该usermod
命令来更改用户的登录外壳。
usermod -s /sbin/nologin myuser
要么
usermod -s /usr/sbin/nologin myuser
如果您的操作系统不提供/ sbin / nologin,则可以将shell设置为NOOP命令,例如/ bin / false:
usermod -s /bin/false myuser
nologin
实际上在Debians 上可以找到/usr/sbin/nologin
nologin
/usr/local/bin/maybe
这/dev/urandom
LY这两个之间进行选择。也许我应该使用它:D
更改登录Shell并不一定会阻止用户进行身份验证(某些服务中会检查用户的Shell是否在中提到/etc/shells
)。
人们可能仍然可以对您的系统提供给Unix用户的各种服务进行身份验证,并且即使没有直接运行任意命令,人们仍然可能被授权执行某些操作。
将shell更改为/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
以这些用户身份运行作业。
:|
您编辑/etc/passwd
文件,并将用户shell从/bin/bash
或更改/bin/sh
为/sbin/nologin
vipw
可以防止这种错误。
首先,使用禁用密码passwd -l username
。
另请注意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
。