在 linux-pc 上,我们有两个用户帐户 - 第一个也是 root 用户,第二个只是普通用户。我们怎样才能让第二个用户无法打开终端呢?
答案1
将它们的 shell 设置为/bin/false
with chsh
。例如(作为根):
chsh -s /bin/false username
这将阻止他们在控制台或通过 ssh 等登录时获得 shell。这对于大多数用途来说已经足够了,但是如果他们可以在系统上运行其他程序,则还有许多其他方法可以让他们获得 shell。
这也将有效地阻止他们登录,所以除非它是一个系统用户来运行特定的守护进程(例如www-data来运行apache)或者它是仅邮箱用户或类似的用户,否则用户没有太多意义一个帐户。
另一个可能更好的选择是将他们的 shell 设置为受限外壳例如/bin/rbash
,它只允许他们在(预先设置的)PATH 中运行程序,并阻止他们使用 、等更改目录cd
或更改环境变量。有关详细信息,请参阅。SHELL
PATH
man rbash
例如,您可以在系统上的某个位置创建一个目录(例如/usr/local/rbin),将允许的二进制文件复制或链接到该目录中,并设置它们的路径,以便它们只能运行在该目录中找到的程序。您需要小心在此目录中放置的程序 - 例如安装rvim
而不是vim
它们是否需要文本编辑器(rvim 不允许执行 shell 命令)。
注意:这将是一项繁重的工作,需要仔细研究才能正确完成(即避免留下一些允许 shell 访问的漏洞)。rbash
本网站上有几个有关 shell 和其他受限 shell 的问题和解答。开始你的研究:
https://unix.stackexchange.com/search?q=rbash
以及非常密切相关的主题chroot
: