我的/etc/group
成长是通过添加新用户以及安装添加了自己的用户和/或组的程序来实现的。对于 也是如此/etc/passwd
。由于缺乏结构,编辑现在变得有点麻烦。
我可以对这些文件进行排序(例如按数字 ID 或按字母顺序排列名称)不会对系统和/或包管理器产生负面影响?
我想这并不重要,但只是为了确定我想得到第二意见。也许root
需要是第一行或前 1k 行之类的?
也同样如此/etc/*shadow
。
答案1
你应该好的,这样做:事实上,根据文章和阅读文档,您可以分别使用/etc/passwd
和/etc/group
来按 UID/GID进行排序pwck -s
和grpck -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
笔记:
vi -c
将命令传递给 vim 编辑器,该编辑器被变量指定为vipw
/ 的编辑器vigr
EDITOR
- awk 代码
shadow
按passwd
(和gshadow
按group
)排序 - 反斜杠只是对应于引用级别所需的多个转义级别。
- 第二个命令(-c \"wq! \")强制写入并关闭已排序的文件。由于shadow/gshadow 通常是模式000(即不可写),所以强制是必要的。注意“!”之间的空格并且“\”对于防止 shell 将其解释为引用 bash 事件的“!\”是必要的。