是否有可能从 Linux 中完全删除用户子系统。
我不是在谈论阻止人们登录。我是在谈论删除系统中甚至可以登录的部分。
结果是操作系统一旦启动就无法访问,因为除了已经在其上运行的应用程序(即 Web 服务器)之外,无法访问它。
目标是系统无法通过任何需要获得用户级命令行访问权限的机制进行破解,因为不存在用户级命令行系统。
答案1
这是一个有趣的区别:
我不是在谈论阻止人们登录。我是在谈论删除系统中甚至可以登录的部分。
我不完全确定除了语义差异之外实际上还有其他什么。如果我要删除,/bin/login
那么您将无法登录(在物理终端上),因为我已经使其无法登录。但我不会删除整个登录子系统。
我的建议是尽可能保持完整,因为可能存在不可预见的依赖关系。将用户保留在适当的位置,以便您的 Web 服务器以不同于 的帐户运行root
。通过修改 PAM 子系统来防止交互式和非交互式登录。可以选择sudo
以类似的方式阻止类型访问。
准备“拒绝”的 PAM 定义
创建
/etc/pam.d/denied
包含以下两行:auth requisite pam_deny.so session requisite pam_deny.so
防止从终端/屏幕登录
替换
/etc/pam.d/login
为副本/etc/pam.d/denied
防止网络登录
ssh
替换
/etc/pam.d/sshd
为副本/etc/pam.d/denied
编辑
/etc/ssh/sshd_config
并确保已UsePam yes
设置。(可选)尝试禁用
sudo
替换
/etc/pam.d/sudo
为副本/etc/pam.d/denied
实际上,与其拒绝所有登录,不如允许从物理终端/屏幕进行 root 登录并拒绝其他所有登录。这也可以通过 PAM 完成,但超出了问题的具体范围。
答案2
好吧,理论上您可以重命名/删除该/bin/login
命令。
不确定这是否会阻止single user mode
。也不确定您是否想预防single user mode
。
您还可以做一些有趣的事情来pam.d
阻止所有用户登录,但这只是阻止用户登录,而不是破坏登录的想法。
当我回到家时,如果我记得的话,我会启动一个虚拟机并尝试一下。也可以删除该/etc/shadow
文件,但这也可能会破坏其他所有内容。
边注:你不要想要彻底打消用户的念头。不是因为没有任何登录能力是一个坏主意(确实如此,但这不是本线程的重点),而是因为由于权限用户需要存在。如果没有用户,您将被迫授予rwx
系统上的所有文件权限才能运行您的服务,这将导致无法运行的问题需要登录以进行黑客攻击,人们可以访问他们想要的任何内容。