xen*_*ide 209 shell security login
从技术上讲,除非pam设置为检查您的 shell pam_shells,如果您不在shell 上,这两种方法实际上都不能阻止您的登录。在我的系统上,它们的大小甚至不同,所以我怀疑它们实际上做了一些事情。那么有什么区别呢?为什么它们都存在?为什么我要使用一个?
-rwxr-xr-x 1 root root 21K Feb 4 17:01 /bin/false
-rwxr-xr-x 1 root root 4.7K Mar 2 14:59 /sbin/nologin
Run Code Online (Sandbox Code Playgroud)
Mar*_*try 239
当/sbin/nologin设置为外壳,如果用在外壳注销用户,他们会得到一个礼貌的消息,说“此帐户目前无法使用。” 可以使用文件更改此消息/etc/nologin.txt。
/bin/false只是一个立即退出的二进制文件,当它被调用时返回false,所以当有falseshell的人登录时,他们会在false退出时立即注销。将 shell 设置为/bin/true与不允许某人登录具有相同的效果,但false可能用作约定,true因为它更能传达人们没有 shell 的概念。
查看nologin的手册页,它说它是在 4.4 BSD(1990 年代初期)中创建的,因此它在false创建很久之后才出现。false作为 shell的使用可能只是从 UNIX 早期延续下来的约定。
nologin是更用户友好的选项,向尝试登录的用户提供可自定义的消息,因此理论上您会想要使用它;但两者nologin并false会不具有壳,不能够通过ssh在别人相同的最终结果。
Mik*_*kel 32
某些 FTP 服务器仅在您拥有有效的 shell 时才允许您进行 FTP 访问。 /sbin/nologin被视为有效的外壳,而/bin/false不是。
(我认为“有效”是指退出状态为0,但/etc/shells也有可能进入,这可能取决于系统、FTP软件和您的配置。)
pen*_*359 16
/bin/false是一个系统命令,在您需要将命令传递给程序时使用,该程序应该只执行错误退出。它是 的伴侣/bin/true。这两个都是非常古老的标准 POSIX 实用程序,根据定义都不会产生任何输出。true 有时用于应该无限循环的 shell 脚本,例如:
while true; do
...
# Waste time
if [ $wasted_time -gt 100000 ]; then
exit 0
fi
...
done
Run Code Online (Sandbox Code Playgroud)
/usr/sbin/nologin专门设计用于替换外壳并产生抱怨您无法登录的输出。在它存在之前,它很常见/bin/false用于虚拟用户,但可能会令人困惑,因为用户不知道他们为什么被踢。
在我的机器上,nologin总是显示相同的英文消息,忽略参数。以 表示的语言/bin/false响应--version和。除了这些外观上的差异之外,它们具有相同的效果。--help$LC_CTYPE
就可用性而言,nologin如果是在说英语的真人帐户上使用的话会更好。从安全角度来看,没有什么区别。