Buildroot 组文件以奇怪的条目结束

Buildroot 组文件以奇怪的条目结束

我的目标是了解为什么 Buildroot 在我的group文件中生成看起来奇怪的输出,并确定这是否会造成问题。如果确实存在问题,我想找出原因并找到解决方案。

我正在使用 Buildroot 创建 Linux 映像,并BR2_ROOTFS_USERS_TABLES在如下所示的表中创建其他用户:

#username  uid group gid password  home  shell groups  comment
cow 1022  four_legs 155 fake  /home/cow /bin/bash -
duck  1023  wings 156 fake  /home/duck  /bin/bash -
goose 1024  wings 156 fake  /home/goose /bin/bash -
pig 1025  four_legs 155 fake  /home/pig /bin/bash -
horse 1026  four_legs 155 fake  /home/horse /bin/bash -
chicken 1027  wings 156 fake  /home/chicken /bin/bash -
fish  1028  fins  157 fake  /home/fish  /bin/bash -

我的字段是按空格分隔的,按照文档

我最终遇到了一些我想理解但不明白的奇怪现象。我的group文件如下所示:

/etc # cat group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
kmem:x:9:
wheel:x:10:root
cdrom:x:11:
dialout:x:18:
floppy:x:19:
video:x:28:
audio:x:29:
tape:x:32:
www-data:x:33:
operator:x:37:
utmp:x:43:
plugdev:x:46:
staff:x:50:
lock:x:54:
netdev:x:82:
users:x:100:
nobody:x:65534:four_legs:x:155:
four_legs:x:155:
wings:x:156:
fins:x:157:
sshd:x:1000:
:x:1001:cow,duck,goose,pig,horse,chicken,fish

1:在带有 的行上nobody,它添加four_legs不​​带换行符的组,然后在下一行中重复该组。我不明白为什么它会这样生成。这是否会导致问题出现four_legs在没有人的同一行上,然后在下一行上重复出现?

2:在最后一行,它创建了一个看似未命名的组,具有新的 GID,成员是我从表中添加的所有用户。我需要最后一行吗?如果是的话,它是做什么用的?我是否输入了错误的内容,使其给我一个奇怪的组文件?

一个完整的干净构建似乎并没有改变这一点,而且passwd看起来shadow就像我所期望的那样。此外,用户表中条目的顺序似乎没有影响。在那里定义的第一个新组会在线重复nobody

最后注意:如果我在注释字段中添加注释,Buildroot 就会变得混乱,并将上述文件的大部分转储到passwd.

答案1

好吧,这完全是我的错,而且是三件事的结合:

  1. 我在电子表格中构建了用户表,并将结果粘贴到文本编辑器中,它看起来足够好,但是在 Excel 中,以一些特定字符开头的字段必须通过单引号转义,'我将其转义。用于以=或开头的字段/。粘贴时,这引入了额外的空格,结果证明这是一个问题。很容易修复。

  2. nobody:x:65534:four_legs:x:155:如果您只需确保要附加到的源文件末尾有一个换行符,那么问题就完全消失了。不知道为什么它会重复输入而不是直接将其保留在行中nobody,但是好吧,好吧。

  3. 确保使用 LF 行结尾而不是 CRLF。现在,如果有 LF 行结尾,它似乎对我的其他问题更加宽容。评论字段也能正常工作。 :-)

相关内容