为什么永远不要直接编辑 /etc/shadow 文件?

Cla*_*ron 12 password

在 UNIX & Linux Stack Exchange 上的另一个答案中,Michael D Parker 写道,回应有人说这样做是“安全的”,即:

通常你不应该直接编辑 /etc/shadow 文件。

所以:

为什么你从来没有编辑/etc/shadow直接文件?

Gil*_*il' 18

有几个原因不能编辑/etc/passwd/etc/shadow/etc/group/etc/gshadow/etc/sudoers直接,而是使用vipwvigrvisudo

  • 如果您犯了语法错误,您可能无法再登录或成为 root。使用 viXXX 工具可以降低这种风险,因为该工具会在修改文件之前进行完整性检查。
  • 如果同时编辑文件,最后保存的人将覆盖先前编辑所做的更改。这包括正在修改这两个管理员编辑文件和文件,因为用户叫passwdchshchfn以改变的东西对他们的帐户。如果使用适当的工具,它将防止并发修改。这主要是对具有多个用户的系统的关注,如果您是唯一的用户,则不太重要。
  • 在某些系统上(大多数或仅 *BSD),vipw更新多个文件(例如/etc/passwd/etc/master.passwd)。这不适用于 Linux。
  • vipw自动创建一个备份 ( passwd-, shadow-, ...),如果您意识到不小心删除了一行,这会很有用。它只有在您在下一次编辑之前意识到时才有用,因此它不会取代版本控制和备份,但如果您很快意识到自己的错误,它会非常好。visudo不这样做。

可以直接编辑文件。你只会冒额外的风险,而没有真正的优势。

  • 而这在 BSD 上的主要问题是,`/etc/shadow` 不存在,`/etc/passwd` 是一个错误的文件,因为它是一个生成的文件而不是源文件。☺ (3认同)

mik*_*erv 6

基本上有两种方式来看待这个问题:

  1. 切勿在不使用规定工具的情况下编辑某些文件,因为您可能不知道自己在做什么,这没关系,因为这些工具更了解并且始终可用。

  2. 更现实地说,您不妨在考虑时立即将其打破,以便您可以提前计划备份副本并在完成后比较差异,因为有关系统基本初始login过程的来龙去脉的基本知识可能是值得的因为当您稍后以其他方式破坏它并且所说的工具对您没有帮助时。

我想你可能知道我推荐哪个。我的意思是,如果一个话题让你感兴趣,哪怕是片刻,你也可以利用这种好奇心,在你做的时候获得一项新技能。特别是像这样的shadow文件- 该文件是一种相当基本的格式,我对它知之甚少,我在意外破坏它后学到了- 这不是我对该文件进行编辑的结果。

相反,我的问题发生在包管理数据库的其他一些错误导致包管理器在没有保存备份的情况下覆盖它并且系统上的所有用户都被kaput。进一步无知的拙劣修复尝试只会将损坏扩散到其他相关文件,不久之后我不得不/etc(比预期的要晚)备份中恢复大部分文本文件。

当我这样做并确认它处于可用状态后,我决定刻意,一丝不苟地重新做一遍。还有一次。这都是几个月前的事情,但今天我仍然相信我可以通过检查login系统上的单个日志文件来诊断问题的根源,并使用任何基本的编辑器来解决它(可能还提供了一个概览)或两个man 5 problem_file仅提供对受影响的根 fs 的基本访问。它的获得并不便宜 - 它花了我一天的大部分时间 - 并且相关的配置文件遍布整个目录(甚至一些 - 例如 Linux PAM /var/run/no_login- 在其他安装上) - 但它值得做。稍加考虑,它本来可以更便宜。

在这个故事的寓意是,它可能不是一件好事,像关键任务的configs的格式shadowpasswdgroupsshells应该是这样不透明的我们,必须采用特殊的编辑工具,可以或不可以的方式纠正我们的工作,出于我们不明白的原因,仅仅为了实现一个简单的改变。至少,我认为,我们应该花时间确切了解他们的做法与我们不同。

然而,这可能一件好事,一旦我们对编辑所述文件足够熟悉,我们冒着在其中制作的风险,然后将排版或简单的语法错误保存给它们,我们可以使用工具进行仔细检查在应用我们的 blase 编辑之前,我们已经理解了我们的工作方式和原因。