有很多文章指出禁用 root 用户并创建新用户。原因之一是这root
是一个已知帐户,机器人可以轻松瞄准。
所以我需要创建一个具有管理员权限的新用户。如果我这样做,这与 完全相同吗root
?
我需要安装 MongoDB、NodeJS、PM2、Certbot。上次我这样做时,我陷入了混乱,最终又回到了root
.该问题似乎与该软件的安装方式和运行方式有关。
我现在有了一个新版本,想再试一次。我当前拥有 SSH root 访问权限和启用的 root 密码(备份),并准备根据需要创建新帐户。
我应该使用哪个帐户来安装该软件以及应该使用哪个帐户来运行该软件?
另外,当创建用户时,会在主文件夹中创建一个文件夹,这是我应该添加节点应用程序的位置吗?
我将是唯一的管理员。 (即它不会在组织中使用),这是否会产生影响。
答案1
首先,澄清一个可能的误解:建议禁用用户root
意味着禁用以该用户身份登录的可能性root
。它并不意味着root
从系统中“删除”用户(这是不可能的)。相反,其想法是允许“受信任的”普通用户(这可以是您的普通用户帐户或您为此目的创建的专用帐户)以 root 权限执行命令。
1.让普通用户成为root
请务必在继续步骤 2 之前执行此操作!
这通常是通过 执行的sudo
。最简单的方法是使“受信任”的普通用户成为该sudo
组的一部分,并允许该组的成员通过在调用前面加上 .root 权限来执行具有 root 权限的命令sudo
。为了这个目的:
- 安装
sudo
(如果您的系统上尚未安装) - 执行(以 root 身份):
~# usermod -a -G sudo trusted_user
- 确保该
/etc/sudoers
文件包含类似以下的行
这可能已经存在并且将允许该组中的用户执行全部通过 具有 root 权限的命令%sudo ALL=(ALL:ALL) ALL
sudo
。
2.禁用root登录
有几种方式要执行此操作,取决于您想要“禁用”帐户的程度。其中两个最有用的是:
root
将用户的登录 shell设置为/sbin/false
或/sbin/nologin
(取决于您是否希望在尝试时显示一条很好的解释性消息)。为此,请将的root
最后一个:
分隔字段更改/etc/passwd
为上述字段之一(如 )。请注意,您将真正不再能够真正成为 root,然后您只能通过 root 权限在“逐个命令”的基础上工作(但如果您以后更改,sudo
您可以通过修改下面的密码文件来撤消此操作)sudo
你的想法)。- 禁用
root
密码。为此,请将root
用户的密码哈希(即 ,:
的第二个分隔字段/etc/shadow
)设置为!
。建议仅通过vipw -s
(asroot
) 修改该特定文件。然后您将无法再通过 root 身份登录密码基于身份验证。仍然可以切换到root
via (如果文件允许),就像通过 SSH 密钥登录(如果已设置)一样。sudo su
sudoers
最后的笔记
您最初的问题似乎是您尝试以非 root 用户身份在系统范围内安装软件,但最终无法按照您预期的方式使用它。建议的“禁用”用户帐户的步骤root
并不是解决此问题的方法。
- 避免软件安装损坏的最佳方法是使用发行版的包管理器。这将需要 root 权限,但要确保所有文件都位于应有的位置,并且可以(或多或少)通过包管理器轻松卸载该软件。
- 如果您必须从源代码或使用供应商提供的安装程序安装软件,您可以尝试以您(或其他专用“普通”用户)的身份将其安装在您的主目录中,并以您的身份运行该软件。仅当软件不需要对资源(例如低于 1000 的网络端口或硬件)进行 root 访问时,此功能才有效。