您能将您的终端用户切换为 /etc/passwd 中定义的任何用户吗?

您能将您的终端用户切换为 /etc/passwd 中定义的任何用户吗?

语境

这是一个非常新手的问题,但我不完全理解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 用户,否则您无法登录?

答案1

简短回答:

  • 是的
  • 是的

如果你是超级用户(id=0)或者俗称root,如果shell设置为/usr/sbin/nologin或者/usr/bin/false你就无法登录

按照手册页nologin描述:

   **DESCRIPTION**
   nologin displays a message that an account is not available and
   exits non-zero. It is intended as a replacement shell field to
   deny login access to an account.

   If the file /etc/nologin.txt exists, nologin displays its
   contents to the user instead of the default message.

   The exit status returned by nologin is always 1.

但是(如果您是 root 用户或者可以使用 sudo 命令),您可以按照 noloign 用户的身份执行 bash,以模拟他进行故障排除

sudo:

sudo -u mongodb /bin/bash 

根:

su -s /bin/bash mongodb

上述命令不执行登录,而仅以用户权限执行 bash,在本例中以 mongodb 用户身份执行。

笔记:通常这些用户是没有密码的,这意味着即使进程要求您输入一个永远不会与任何内容匹配的密码,甚至是空密码。

相关内容