私の目標は、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
まあ、それは完全に私のせいで、次の3つが組み合わされました。
スプレッドシートにユーザーテーブルを作成し、結果をテキストエディタに貼り付けると大丈夫に見えましたが、Excelでは特定の文字で始まるフィールドを一重引用符でエスケープする必要があり、それを
'
エスケープしました。=
またはで始まるフィールドに使用されます/
。これにより、貼り付けるときに余分なスペースができ、問題になりました。修復はとても簡単です。nobody:x:65534:four_legs:x:155:
追加するソースファイルの末尾に改行文字があることを確認すると、問題は完全に消えます。なぜ入力をラインに保持するのではなく、入力を2倍にするのかはわかりませんが、nobody
良いです。CRLFの代わりにLF行末を使用する必要があります。これで、LF行の終わりがあると、他の問題にもっと寛大に見えます。コメントフィールドもうまく機能します。 :-)