帮忙看一下这个 /etc/passwd 用户配置是否正确


#1

nobody:x:65534:65534:nobody:/var/lib/nobody:/bin/bash
为什么这里允许shell登陆?


openSUSE-Gossip-20180925-20181231
#2

nobody:x:65534:65534:nobody:/var/lib/nobody:/bin/bash

以“:"分隔,意思如下:

1: 用户名
2. x 表示密码
3. 用户 ID
4. 用户组 ID
5. 用户的描述
6. 用户的主目录
7. 用户的 login shell

你这里设置的 login shell 是 bash。所以能登录。真正不想让它登录应该设为 /sbin/nologin,这样登录会提示“This account is currently not available.”。也可以设为 /bin/false,那样什么提示也没有就退出了。


#3

谢谢,我今天偶然看到这个账户有shell,但我上网查了解到这个用户应该是nologin的,所以才有这个疑问,是大蜥蜴默认这样,还是我做了什么操作导致的,另外这样是否存在风险?


#4

默认都这样。我搜了一下据说 Debian Fedora 也这样,但我没用过那两个发行版。

nobody/nogroup 在 FSB 的定义是 USED BY NFS,表示最小权限。就是要网络挂载的文件的 owner 在本机不存在就用 nobody 用户挂载。

你自己把 login shell 设为 /sbin/nologin 也行,但没什么实际意义。它只能为你提供名义上的安全,因为你也看到了 nobody 的 home 是 /var/lib/nobody,用 systemd 的系统的这个文件夹在内存上创建,而且 nobody 用户本身没有设置密码。没有设置密码不同于没有密码,没有设置密码的用户你用什么密码登录都会提示错误。除非自己手贱给 nobody 设置简单密码,不然我看不出这个用户有被攻破的可能,而且它本身的 home 下什么都没有,默认也执行不了任何东西(除非比如你的网络服务设置成 nobody 用户运行,也就是说在你用 root 权限给 nobody 用户分配文件前它什么权限也没有),这怎么提权。