我可以对/ etc / group和/ etc / passwd文件进行排序吗?


33

我的/etc/group成长是通过添加新用户以及安装添加了自己的用户和/或组的程序来实现的。的情况也是如此/etc/passwd。由于缺乏结构,编辑现在变得有点麻烦。

我可以对这些文件进行排序(例如,按数字ID或按名称按字母顺序),而不会对系统和/或程序包管理器产生负面影响吗?

我想这并不重要,但只是为了确保我想得到第二意见。也许root需要在第一行或前一千行之内?

同样的道理/etc/*shadow


7
“由于缺乏结构,现在编辑变得有些麻烦”为什么要手动编辑这些文件?
凯文(Kevin)

文件排序如何帮助编辑?是否因为您想将相关帐户分组在一起,然后在一系列行中进行类似的更改?但是,如果您按uid或名称排序,相关帐户会相邻吗?
Barmar

@Barmar它之所以有所帮助,主要是因为用户帐户按范围分组并且与系统帐户分开(按UID排序时)。因此,使用进行编辑时,例如找到正确的线以进行检查或更改比较容易vi
Ned64 '18

Answers:


50

您应该可以这样做:实际上,根据文章并阅读文档,您可以分别使用和对UID / GID进行排序/etc/passwd和排序。/etc/grouppwck -sgrpck -s


3
@Menasheh该站点的颜色并不像其他站点那样突出,但是此答案中的“确定执行此操作”是一个超链接。
hvd18年

2
好的,很好,但是...总的来说,是否有合理的理由手动编辑/ etc / passwd和类似文件?通过设计用于创建和修改它们的工具来访问它们不是更好吗?
mickeyf_supports_Monica

@mickeyf我见过人们/etc/passwd在进行批量更改时进行手动编辑,例如由于移动/重组(全局房间或电话号码更改等)而为所有用户更改GECOS字段,这种情况已不再常见,但是有一些特定的不时出现的原因。
ErikF

44

尽管ErikF是正确的,通常应该可以,但我确实要指出一个潜在的问题:

您可以将不同的用户名映射到同一UID。如果您使用此功能,则将UID映射回用户名的工具通常会选择在中找到该UID的第一个用户名/etc/passwd。排序可能会导致其他用户名首先出现。出于显示目的(例如ls -l输出),这两个用户名都应该起作用,但是您可能已经配置了一些程序来接受来自用户名A的请求,即使看到了来自用户名B的请求,该程序也会拒绝这些请求,即使A和B是同一用户。


谢谢,我知道您可以,几十年前在Solaris中曾经有一个使用tcsh和uid 0的用户。但是,Linux系统不会自行创建这种情况-您需要手动创建这样的用户才能遇到这种情况。
Ned64

2

在第一行拥有root权限已经很长时间了,实际上是“标准”,如果您在解决问题或恢复系统时必须修复其shell或删除密码,则非常方便。

同样我更喜欢在中间和标准用户守护进程/ utils的用户在两个结束passwdshadow

hvd 对于干扰用户的秩序,答案也非常好,尤其是在手动维护许多用户的系统中。

例如,如果您设法对文件进行排序(仅针对标准用户),则比更改所有用户的顺序imo更明智。


1
如果您按UID进行数字排序,则应该得到您的首选订单。根始终是0,守护进程通常的UID低于
100。– Barmar,

@Barmar如果确实是按UID而不是按名称排序,则感谢您的记住。
Rui F Ribeiro

0

以下是一些冗长的bash代码,以类似方式安全地对shadow / gshadow文件进行排序(使用vipw -s/ vigr -s)并从命令行就地对其进行排序:

EDITOR="/usr/bin/vi -c \"1,\\\$!awk 'BEGIN {FS = \\\":\\\"} FNR==NR {x2[\\\$1] = \\\$0; next} \\\$1 in x2 {print x2[\\\$1]}' - /etc/passwd\" -c \"wq! \" >/dev/null 2>&1" vipw -s

EDITOR="/usr/bin/vi -c \"1,\\\$!awk 'BEGIN {FS = \\\":\\\"} FNR==NR {x2[\\\$1] = \\\$0; next} \\\$1 in x2 {print x2[\\\$1]}' - /etc/group\" -c \"wq! \" >/dev/null 2>&1" vigr -s

注意:

  1. vi -c将命令传递给vim编辑器,该编辑器被变量指定为vipw/ 的编辑器vigrEDITOR
  2. awk的代码排序shadowpasswd(和gshadow通过group
  3. 反斜杠只是与引用级别相对应的多个转义级别。
  4. 第二个命令(-c \“ wq!\”)强制写入并关闭排序的文件。由于阴影/阴影通常为000模式(即不可写),因此必须使用此力。注意之间的空格!和'\'是必需的,以防止shell解释为引用bash事件的'!\'。
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.