禁止非 root 用户使用终端

禁止非 root 用户使用终端

在 linux-pc 上,我们有两个用户帐户 - 第一个也是 root 用户,第二个只是普通用户。我们怎样才能让第二个用户无法打开终端呢?

答案1

将它们的 shell 设置为/bin/falsewith chsh。例如(作为根):

chsh -s /bin/false username

这将阻止他们在控制台或通过 ssh 等登录时获得 shell。这对于大多数用途来说已经足够了,但是如果他们可以在系统上运行其他程序,则还有许多其他方法可以让他们获得 shell。

这也将有效地阻止他们登录,所以除非它是一个系统用户来运行特定的守护进程(例如www-data来运行apache)或者它是仅邮箱用户或类似的用户,否则用户没有太多意义一个帐户。


另一个可能更好的选择是将他们的 shell 设置为受限外壳例如/bin/rbash,它只允许他们在(预先设置的)PATH 中运行程序,并阻止他们使用 、等更改目录cd或更改环境变量。有关详细信息,请参阅。SHELLPATHman rbash

例如,您可以在系统上的某个位置创建一个目录(例如/usr/local/rbin),将允许的二进制文件复制或链接到该目录中,并设置它们的路径,以便它们只能运行在该目录中找到的程序。您需要小心在此目录中放置的程序 - 例如安装rvim而不是vim它们是否需要文本编辑器(rvim 不允许执行 shell 命令)。

注意:这将是一项繁重的工作,需要仔细研究才能正确完成(即避免留下一些允许 shell 访问的漏洞)。rbash本网站上有几个有关 shell 和其他受限 shell 的问题和解答。开始你的研究:

https://unix.stackexchange.com/search?q=rbash

以及非常密切相关的主题chroot

https://unix.stackexchange.com/search?q=chroot

相关内容