Ned64 Asked: 2018-02-19 05:52:49 +0800 CST2018-02-19 05:52:49 +0800 CST 2018-02-19 05:52:49 +0800 CST 我可以对 /etc/group 和 /etc/passwd 文件进行排序吗? 772 My/etc/group通过添加新用户以及安装添加了自己的用户和/或组的程序而成长。对于/etc/passwd. 由于缺乏结构,编辑现在变得有点麻烦。 我可以对这些文件进行排序(例如按数字 id 或按名称的字母顺序)而不会对系统和/或包管理器产生负面影响吗? 我想这没关系,但只是为了确定我想得到第二意见。也许root需要成为第一行或前 1k 行之类的东西? 也是如此/etc/*shadow。 passwd group 4 个回答 Voted Best Answer ErikF 2018-02-19T06:12:29+08:002018-02-19T06:12:29+08:00 您应该可以这样做:事实上,根据文章和阅读文档,您可以分别使用和对 UID/GID 进行排序/etc/passwd和排序。/etc/grouppwck -sgrpck -s hvd 2018-02-19T09:28:05+08:002018-02-19T09:28:05+08:00 尽管 ErikF 是正确的,这通常应该没问题,但我确实想指出一个潜在的问题: 您可以将不同的用户名映射到同一个 UID。如果您利用这一点,将 UID 映射回用户名的工具通常会选择他们在/etc/passwd. 排序可能会导致不同的用户名首先出现。出于显示目的(例如ls -l输出),任何一个用户名都应该可以工作,但是您可能已经将某些程序配置为接受来自用户名 A 的请求,如果它看到这些请求来自用户名 B,即使 A 和 B 也会拒绝这些请求是同一个用户。 Rui F Ribeiro 2018-02-20T09:53:24+08:002018-02-20T09:53:24+08:00 在第一行使用 root 长期以来一直是事实上的“标准”,如果您在处理问题或恢复系统时必须修复他们的 shell 或删除密码,这将非常方便。 同样,我更喜欢在中间使用 daemons/utils 用户,在passwd和shadow. hvd关于扰乱用户秩序的回答也很好,尤其是在有很多用户手动维护的系统中。 如果您设法对文件进行排序,例如,仅针对标准用户,这将比更改所有用户的顺序更明智,imo。 puterboy 2019-01-31T19:52:04+08:002019-01-31T19:52:04+08:00 这是一些有点毛茸茸的 bash 代码,用于安全地(使用vipw -s/ vigr -s)并从命令行就地对 shadow/gshadow 文件进行类似的排序: 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/的编辑器vigrEDITOR awk 代码shadow按(passwd和)排序gshadowgroup 反斜杠只是对应于引用级别所需的多个转义级别。 第二个命令 (-c \"wq! \") 强制写入并关闭已排序的文件。强制是必要的,因为 shadow/gshadow 通常是 000 模式(即不可写)。注意“!”之间的空格 并且 '\' 是防止 shell 解释为引用 bash 事件的 '!\' 所必需的。
您应该可以这样做:事实上,根据文章和阅读文档,您可以分别使用和对 UID/GID 进行排序
/etc/passwd
和排序。/etc/group
pwck -s
grpck -s
尽管 ErikF 是正确的,这通常应该没问题,但我确实想指出一个潜在的问题:
您可以将不同的用户名映射到同一个 UID。如果您利用这一点,将 UID 映射回用户名的工具通常会选择他们在
/etc/passwd
. 排序可能会导致不同的用户名首先出现。出于显示目的(例如ls -l
输出),任何一个用户名都应该可以工作,但是您可能已经将某些程序配置为接受来自用户名 A 的请求,如果它看到这些请求来自用户名 B,即使 A 和 B 也会拒绝这些请求是同一个用户。在第一行使用 root 长期以来一直是事实上的“标准”,如果您在处理问题或恢复系统时必须修复他们的 shell 或删除密码,这将非常方便。
同样,我更喜欢在中间使用 daemons/utils 用户,在
passwd
和shadow
.hvd
关于扰乱用户秩序的回答也很好,尤其是在有很多用户手动维护的系统中。如果您设法对文件进行排序,例如,仅针对标准用户,这将比更改所有用户的顺序更明智,imo。
这是一些有点毛茸茸的 bash 代码,用于安全地(使用
vipw -s
/vigr -s
)并从命令行就地对 shadow/gshadow 文件进行类似的排序:笔记:
vi -c
将命令传递给 vim 编辑器,该编辑器被变量分配为vipw
/的编辑器vigr
EDITOR
shadow
按(passwd
和)排序gshadow
group