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


10

在UNIX和Linux堆栈交换上的另一个答案中,Michael D Parker写道:有人说这样做是“安全的”,以回应:

通常,您永远不要直接编辑/ etc / shadow文件。

所以:

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


因为它已经加密了您的密码。
米林德·邓巴

7
因为你会破坏它。也许不是今天,也许不是明天,但很快
ctrl-alt-delor

1
使用指向您认为情况如此的链接来更新您的问题(通过编辑)。我已经编辑/etc/shadow20多年了,没有任何问题。并且请客气地阅读两分钟的帮助→导游,尤其是“无干扰”,“无聊”。这是我第一次阅读一个问题中不相关的闲聊,而不是阅读问题中有关“细节”的闲聊。
Anthon

“通常,您永远不应该”与“从不”相同。
roaima

2
@captcha废话。有充分的理由不这样做。仅仅因为无法想到任何事物,就不能使您称呼其他人无知。请保持友善
吉尔(Gilles)'所以

Answers:


15

有几个原因不能编辑/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不这样做。

可以直接编辑文件。您将承担额外的风险,而没有真正的优势。


在用户可以更改自己的密码,shell和其他内容的任何系统上,第2点都是一个问题。不是多个管理员的先决条件。☺
JdeBP

3
而且,在BSD上的主要问题是/etc/shadow不存在,并且/etc/passwd编辑错误的文件,因为它是生成的文件而不是源文件。☺
JdeBP

@JdeBP除非这根本不是问题,并且BSD存储在master.passwd中
Rob

6

基本上有两种查看方式:

  1. 在未使用规定的工具的情况下,切勿编辑某些文件,因为您可能不知道自己在做什么,并且可以,因为所说的工具比较了解并且随时可用。

  2. 更现实的是,您最好在考虑时就将其中断,以便您可以事先计划备份副本并比较之后的差异,因为有关系统基本初始login过程的基本知识可能值得当您在以后以其他方式破坏它时,所说的工具将无济于事。

我想您可能可以说出我推荐的那个。我想说的是,如果某个话题使您感兴趣,甚至一会儿,您都可以利用这种好奇心并在学习时获得新技能。尤其是这样的shadow文件-该文件具有相当基本的格式,在不小心将其破坏后我了解到的东西很少-这不是我对该文件进行编辑的结果。

相反,我的问题发生在软件包管理数据库出现其他错误之后,导致软件包管理器覆盖了它而不保存备份,并且系统上的所有用户都被设置为kaput。进一步无知的修补尝试只会将损害扩大到其他相关文件,不久之后,我不得不/etc(比希望的要新的)备份中恢复大部分的文本文件。

一旦这样做并确认我处于可行状态,我便决定再次仔细地做一遍。再一次。这是几个月前的事,但今天我仍然充满信心,可以login通过系统上单个日志文件的一次诊断来诊断问题的根源,并使用任何基本的编辑器进行解决(并且也许可以一目了然的两个或两个man 5 problem_file仅提供对受影响的根fs的基本访问权限。它并不是廉价获得的-我花了一天的大部分时间-并且相关的配置文件分布在目录中(甚至/var/run/no_login在其他挂载中甚至分布在某些文件中,例如Linux PAM的目录中 -但这是值得做的。经过一些深思熟虑,它本来可以便宜一些。

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

这可能一件好事,但是,一旦我们熟悉足以与编辑说文件,我们运行使得在它们和之后保存到他们的排版和简单的语法错误,有我们所掌握的工具,可以仔细检查的风险在应用blase编辑之前,我们已经以一定的方式和理由理解了我们的工作。


3

关键点-如果您需要将一组用户登录名从一台服务器复制到另一台服务器,而又不知道其当前密码或为它们分配新的密码,则需要直接编辑/ etc / shadow来插入哈希密码字段。vipw不允许您触摸该字段,只是“ *”

更新:在这种情况下,请使用chpasswd -e“哈希密码”,但这只能在计算机上直接完成。如果您正在处理尚未部署到计算机(例如虚拟机)的一组文件,那么直接编辑可能是您唯一的解决方案。

即通常有一个工具可以直接编辑/ etc / shadow来做您想做的事情,您只需要知道它是什么...


或者,您可以设置LDAP服务器。
库萨兰达

0

需要编辑这些文件的另一个原因是,如果您正在编辑要在另一个系统上启动的文件系统映像中的文件,并且需要在启动后调试该系统。例如,在失败的委托或救援模式下使用的MAAS临时文件系统。

永远不要说永远...除非你是认真的。

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.