创建无法获得交互式 shell 的用户

use*_*914 21 shell users

什么是交互式和非交互式 shell?

问题:创建一个不应获得交互式 shell 的用户 john。

我们应该怎么做?

msw*_*msw 11

/etc/passwd文件将登录时运行的程序作为用户行的最后一项。对于普通用户,这通常设置为/bin/sh或 其他 shell(例如 bash、zsh)。

传统上,用于拥有进程或文件或其他资源的身份将其“外壳”设置/bin/false

syslog:x:101:102::/home/syslog:/bin/false
Run Code Online (Sandbox Code Playgroud)

伪用户 syslog 拥有/var/log/syslog并且是唯一对该文件具有写入权限的 UID,但由于没有要运行的命令解释器,因此无法以用户 syslog 身份登录。


phu*_*ehe 10

关于您试图回答的问题:

创建一个不应获得交互式 shell 的用户 john。

该问题的意思是“创建一个名为的用户john,该用户将无法从 shell 登录和运行命令”。Interactive 描述了 shell 的工作方式:用户输入一些东西,shell 相应地做一些事情(用户和 shell 之间存在一种通信)。“交互式”一词并没有真正为问题添加任何信息,因为只要有用户键入命令,shell 会话就是交互式的。

还有一种非交互模式,用户将他们想要运行的一系列命令保存在一个文件(称为 shell 脚本)中,然后执行该文件。根据 shell 是以交互方式还是非交互方式运行,某些命令的行为会有所不同。您可以在此处阅读更多内容(本文档适用于bash,但相同的概念适用于其他 shell)。

关于如何创建这样的用户,如果你浏览man useradd一下,有一个选项可以设置登录 shell,-s或者--shell. 您也可以以任何您想要的方式正常创建用户(我假设您已经知道了?),然后/etc/passwd像在msw's answer 中一样进行编辑。


小智 3

是的,将密码文件 (/etc/passwd) 中的 shell 更改为某个不允许shell转义的程序。

如果你想成为一个bofh /bin/false 将完全按照你的意愿行事。