您如何重命名root?


27

并不是说更改它是一个好主意,而是为了好玩。根据这个帖子,还存在一些问题,即使是在不断变化的条目后/etc/passwd/etc/shadow/etc/sudoers。有什么建议么?


帐户名“ root”?顶级目录“ /”?
akira

4
用户名root
yxkb 2011年

1
然后请澄清您的问题...
akira

7年后,我想知道您是否继续使用它,以及由于该情况发生了什么BadStuff ... ^ _ ^
Mioriin

Answers:


29

从理论上说,改变它/etc/passwd/etc/shadow将所有你需要“重命名”根。出现问题是因为存在的几乎每一个Unix软件都假定用户名'root'存在并且它是超级用户-邮件别名,各种守护程序,cron ...

如果您真的想尝试一下,find /etc -type f -exec grep -l root {} +应该为找到可能需要更改的每个配置文件的列表提供一个良好的开端-但就像您已经说过的那样,在几乎每种可能的情况下,这都是一个糟糕的主意。

编辑另一种想法-如果您还没有(应该拥有),请确保其中/etc/aliases包含的条目root和存在的用户名或评估正确的电子邮件地址。许多自动化的系统级任务(cron例如)通过电子邮件将其输出发送到root,传统上,别名是负责该系统操作的系统管理员的别名。


2
/ etc / group也具有用户名...
vrdhn 2011年

当所讨论的组不是其默认组时,只有用户名,但是很重要。
Shadur 2011年

3
是吗?我认为大多数应用程序都使用UID而不是name.i,理想情况下,没有应用程序应假定“ root = UID 0”
yxkb 2011年

2
@yxkb:是的,没有应用程序可以假定。但是我真的很愿意为每个应用程序或脚本获得1美元!:)
布拉姆

1
确实。让我们回想一下所有我们都是用chown root …Shell脚本亲自编写或类似的东西。
derobert

24

所有这些恐惧流浪,说:“不要做!” 是荒谬的。是的,一次可能确实破坏了许多写得不好的脚本,但是我怀疑那些脚本不再常见了。至少不在标准发行版中。

有人告诉我们在Linux服务器的子集上重命名root帐户。因此,在尝试研究如何正确执行此操作之后,我发现很多帖子都说“不要这样做!” 如果您选择这样做,就会有很多关于“坏东西”的可怕警告。但是,我还没有找到任何可能发生的“坏东西”的具体例子。

所以,让我备份并解释我在哪里,以及我们如何到达这里。我们正在构建一个符合PCI的环境,可以帮助我们满足这些“要求”的工具之一就是告诉我们,我们需要将root帐户,administrator和guest帐户重命名为其他名称。对于那些没有接受过PCI培训的人,您可以选择遵循准则或记录为什么您不能或选择不遵循该准则,以及必须采取哪些缓解策略来确保系统安全。因此,我想大多数地方都会说明为什么他们不打算重命名其根帐户,但是,我们小组决定,如果可以毫无问题地重命名Windows管理员帐户,那么他们也将重命名linux根帐户。

我精通“通过模糊获得安全”的论点;我知道只是更改root帐户名实际上并不能真正提高安全性,应该在SSH上禁用root等。我知道,这不是重点,我不希望听到更多信息。我也对更多的“天空会掉下来”的警告不感兴趣。我正在寻找这样的语句:“>这不好的事情<会与>此标准包<(除非您>执行此操作<)”一起发生。

到目前为止,我有3个CentOS(RHEL)系统,显然在重命名根帐户方面没有问题。这是我做的事情:我更改了/ etc / passwd,/ etc / shadow,/ etc / group和/ etc / gshadow中的帐户名。然后在/ etc /中grep输入名称root,并修改后缀别名文件,以使root是我们新帐户名的别名,将其称为rojotoro。(对于其他电子邮件系统,应该执行类似的操作)。我还发现,在描述谁应该拥有它将自动创建的文件时,我需要为logrotate更改一些配置。到目前为止,这就是我已经改变的一切。

我看过许多init.d脚本,但没有做任何更改,启动时一切似乎都正常。我必须在使用sudo时指定新帐户:“ sudo -u rojotoro vim / etc / passwd”作为示例,但实际上我不需要更改sudoers文件中的任何内容。我预计我们可能会遇到一些与selinux有关的问题,但我们至今仍不需要接触该系统。

我还可以看到可能需要调整mkdev或mkfs脚本,但是我不打算使用这些脚本,因此我没有仔细研究它们。

如果确实很容易在没有启用selinux的系统上进行更改且不会造成不良影响,那么为什么还要继续进行所有恐惧活动呢?


11
如果您删去了一些叫人们无知的段落,这将是一个更好的答案。并不是真正必要的
Michael Mrozek

3
您是对的,但我花了一段时间才承认。目的是帮助确保其他人在抨击主意之前具有更改根用户名的实际经验,但这确实不是必需的。
5mi11er 2012年

3
由于您使用的是CentOS:您可以检查rpm -Va在重命名根帐户的系统上显示的内容吗?根据最大RPM指南 “用户和组标识符必须是非数字的”,因此任何指定文件必须由root拥有的RPM在安装时都无法做到这一点。只是想知道您的系统将如何处理。
布拉姆

1
它在PCI中的哪个位置表示您需要重命名ROOT?
Kidburla

@MichaelMrozek,通常我会同意答案不应该像这样的背景故事。但是,在互联网上搜索此主题充满了OP花费了三段时间谈论的许多确切警告,我认为在这种情况下需要这样做。它帮助构造了他的“如何做”段落,并让我更容易了解他的解决方案的上下文与我自己的相似。
user1717828 '18

7

意见建议:不要那样做。

一些工具尝试通过uid与root对话,在那里您应该没有问题。一些工具假定您的root帐户称为root,并且会中断。除非您准备“出于乐趣”重新编译一半的系统,否则请不要尝试。


2
我认为没有人会争辩说,重命名root充其量是一个非常糟糕的主意。
2011年

kuhkatz,这只是一个预防措施。如果有人这样做,则如果您知道有人更改根目录后会发生什么,则可能有助于还原它
yxkb 2011年

从笔记中得到的想法是,使用sudo会破坏以root身份登录。因此,您还原它的唯一方法是全新安装。因此,您不必尝试它,显然是还原它的方法。另外,手头有一个LART,以防万一您的用户尝试尝试。
kuhkatz'3

由于重新编译... gogo gentoo?每个Ebuild都有一个补丁可以全部统治吗?
Bananguin

4

在我看来,最简单的方法是创建一个新用户(别名),其UID为0并/root作为主目录。

为什么不将根的默认外壳程序切换为/bin/false/sbin/nologin(因此,没有人可以登录到它,但系统仍在使用它)并登录到创建的新别名?

razvan@naboo ~ $ head -2 /etc/passwd
root:x:0:0:root:/root:/bin/nologin
root2:x:0:0:root:/root:/bin/bash
razvan@naboo ~ $ su -
Password:
su: Authentication failure
razvan@naboo ~ $ su root2
Password:
naboo razvan # whoami
root

如果将root的shell更改为nologin,则sudo,mail或ftw不会被损坏。


诚然,正如@ 5mi11er指出的那样,我还没有尝试过,但是如果root的shell设置为,/bin/false否则/sbin/nologin它将无法启动任何服务。因此,所有这些都必须重新配置。另外,整个目的是提高安全性,添加具有“ root”权限的第二个帐户几乎不会提高安全性。
布拉姆

我认为该解决方案是迄今为止最好的解决方案,它允许名称对uid进行root查找,而对root禁用登录。您可以交换行的顺序,使root2出现在root之前,然后whoami将报告root2,即。当第一个uid条目匹配时,用于命名的uid停止。我不同意服务将无法启动,因为内核会启动一个进程并为其提供uid 0来设置系统(init,upstart等)
X Tian

2

Linux不是Windows,当前无法轻易重命名root,而不会造成未知的未来问题。

以root身份禁用远程甚至本地登录是一种更安全的方法,因为它会主动禁用帐户root!UBUNTU本质上是这样做的,并强制sudo而不是root访问。

基本上没有人可以使用root帐户来攻击您的系统,因为它不再可以用于登录系统!

如果创建了一种标准方法来轻松修改根帐户名,以及在安装时随机生成其UID,并且如果可能的话,在每次冷启动时都可能会阻止UID定位,那么这将是很好的选择,但目前还不存在。

调整/ etc / passwd修改root:x:0:0:root:/ root:/ bin / nologin

为紧急使用创建一个后备管理员帐户!fallbackadmin:x:0:0:root:/ root:/ bin / bash

为所有管理员实施sudo,以便可以实施更改日志审核,以准确跟踪谁进行更改以确保负责!

这实现了PCI US Gov要求,以禁用默认的admin / guest帐户并创建一个紧急用途admin帐户。

存档日志以进行审核的一种方法是,如果未实施集中式AAA,则从所有具有sudo帐户访问权限的用户收集终端历史记录。

实现仅管理员帐户的解决方案是创建一个仅用户帐户和一个启用了sudo的帐户,然后强制用户使用其启用了sudo的帐户进行管理访问。

如果您想获得更好的安全性,也可以实施智能卡身份验证。有些针对GNU / Linux的解决方案可以与美国通用访问卡CAC解决方案进行两因素身份验证。

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.