语境
这是一个非常新手的问题,但我还没有完全掌握unix用户。
如果我cat /etc/passwd
有不同的用户:
me:x:1000:1000:me,,,:/home/me:/bin/bash
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
sddm:x:127:134:Simple Desktop Display Manager:/var/lib/sddm:/bin/false
mongodb:x:128:65534::/home/mongodb:/usr/sbin/nologin
sshd:x:129:65534::/run/sshd:/usr/sbin/nologin
tftp:x:130:138:tftp daemon,,,:/srv/tftp:/usr/sbin/nologin
_rpc:x:131:65534::/run/rpcbind:/usr/sbin/nologin
他们中的大多数都没有登录用户(所以我们会说你不能登录,除非它是 /bash 用户),但是如果我尝试这个命令:
su - mongodb
它提示我输入密码。问题是在这种情况下我不知道密码。
问题
- 但这是否意味着我可以在终端中切换到该用户,并可能像 systemd-service 那样运行该进程?
- 所以我们会说你不能登录,除非它是 /bash 用户?
简短的回答:
如果您是超级用户 (id=0) 或通常称为 root,如果 shell 设置为 /usr/sbin/nologin 或 /usr/bin/false,则无法登录
根据 nologin 的联机帮助页描述:
但是(总是如果你是 root 或者可以 sudo 命令)你可以按照一个 noloign 用户执行 bash,以模拟他进行故障排除
须藤:
根:
上述命令不执行登录,而只是以用户权限执行 bash,在本例中为 mongodb 用户。
注意:通常这些用户是无密码的,这意味着即使是su -进程也会要求您输入一个永远不会与空密码匹配的密码。