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


17

什么是交互式和非交互式外壳?

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

我们应该怎么做?

Answers:


9

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

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

syslog:x:101:102::/home/syslog:/bin/false

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


9

关于您要回答的问题:

创建一个用户john,该用户不应获得交互式外壳。

该问题的意思是“创建一个john将无法从Shell登录并运行命令的用户”。交互式描述外壳的工作方式:用户键入内容,然后外壳相应地执行某些操作(用户与外壳之间存在某种通信)。“交互式”一词并没有真正为问题添加任何信息,因为只要用户输入命令,shell会话就是交互式的。

还有一种非交互模式,在该模式下,用户将要运行的一系列命令保存在文件中(称为Shell脚本),然后执行该文件。某些命令的行为会有所不同,具体取决于Shell是交互运行还是非交互运行。您可以在此处了解更多信息(本文档适用于bash,但其他外壳程序也适用相同的概念)。

关于如何创建这样的用户,如果您略过一遍man useradd,可以使用一个选项来设置登录shell,-s或者--shell。您也可以按照自己的意愿正常创建用户(我想您已经知道吗?),然后/etc/passwd像在msw的答案中进行编辑。


3

是的,在更改密码文件的外壳(/ etc / passwd文件)一些程序,将不会不允许壳逃跑。

如果您想成为bofh,则 / bin / false会完全满足您的要求。


-1
adduser username -s /sbin/nologin

2
请注意,用户名在问题中指定为“ john”。使用一点散文来解释您的命令正在执行的操作以及为什么命令可以满足要求,这不会有什么坏处。
杰夫·谢勒
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.