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

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

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

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

我想这并不重要,但只是为了确定我想得到第二意见。也许root需要是第一行或前 1k 行之类的?

也同样如此/etc/*shadow

答案1

你应该好的,这样做:事实上,根据文章和阅读文档,您可以分别使用/etc/passwd/etc/group来按 UID/GID进行排序pwck -sgrpck -s

答案2

尽管 ErikF 认为这通常应该没问题,这是正确的,但我确实想指出一个潜在的问题:

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

答案3

在第一行设置 root 长期以来一直是事实上的“标准”,如果您在处理问题或恢复系统时需要修复 shell 或删除密码,这会非常方便。

passwd同样,我更喜欢在和 的中间有守护进程/utils 用户,在末尾有标准用户shadow

hvd答案对于扰乱用户顺序也非常好,特别是在有许多用户手动维护的系统中。

如果您设法对文件进行排序,例如,仅针对标准用户,那么这比更改所有用户的顺序更明智,我认为。

答案4

这里有一些有点复杂的 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(和gshadowgroup)排序
  3. 反斜杠只是对应于引用级别所需的多个转义级别。
  4. 第二个命令(-c \"wq! \")强制写入并关闭已排序的文件。由于shadow/gshadow 通常是模式000(即不可写),所以强制是必要的。注意“!”之间的空格并且“\”对于防止 shell 将其解释为引用 bash 事件的“!\”是必要的。

相关内容