/etc/passwdでコメント行が許可されるかどうか

/etc/passwdでコメント行が許可されるかどうか

RHEL 7.8では、空白行がある可能性があることを知っています。/etc/passwd

しかし、コメント行を持つことはできますか?コメント行は何で始まりますか?

答え1

アカウントデータベースなどを処理するために使用されるmusl Cライブラリルーチンは、ファイルにコメントを付けることは getpwent()できません。/etc/passwd/etc/shadow図書館コードいかなるキャラクターも解説者として扱われません。 (また、行をYPフラグとして認識せず、+特別なタグをまったく許可しません。)

お持ちの場合どのmusl C ライブラリ用に作成されたプログラムでは、これらのファイルにコメントを追加しないでください。

しかし、GNU CライブラリとFreeBSD Cライブラリの両方するコメントが許可されています。

具体的には:

GNU Cライブラリコードは、filesすべてのNSSデータベースのソースコードを提供します。(マニュアルを参照)nsswitch.conf空白ではなく、最初の文字で行コメントを許可します。したがって、含めることができるのはコメント#だけではありません。/etc/passwd/etc/shadow

BSDでは、この/etc/passwdファイルいいえアカウントデータベース。 BSDのアカウントデータベースいいえこれはフラットファイルデータベースですが、Berkeley DBファイル(実際には2つ/etc/pwd.dbの合計/etc/spwd.db)であり、Berkeley DBファイルの性質上、コメントは許可されません。 /etc/master.passwdはいにコンパイルツールのアカウントデータベースpwd_mkdb

/etc/passwdBSDのファイルは、Cライブラリルーチンによる照会に実際に使用されずに発行された仮想逆互換ファイルであり、より良いコマンド(Cライブラリシェルスクリプトをラップするコマンド)ではなく、直接などを使用してシェルスクリプトを使用する人だけのためのものですpwd_mkdb。です。 )。awk /etc/passwdgetent passwd

FreeBSDとその派生物については/etc/master.passwdコメントを含めることができます。そしてpwd_mkdbツールコメントをからにコピーします/etc/master.passwd/etc/passwd、デフォルトのBerkeley DBファイルに入れないでください。#TAB および SPC 文字を前に追加するオプションがありますが、これはそうではありません。かなりGNU Cライブラリと同じです(isspace()GNU Cライブラリルーチンを使用するプロセスのロケールによって満たされるすべての空白文字を許可します。これは非常にあいまいなit-時にはコメントとして、時には秘密として記録されることがあります)。エラーが発生します)。

対照的に、OpenBSDおよびNetBSDpwd_mkdbコマンドはdummyにコメントを追加することはできず、/etc/master.passwddummyにコメントを挿入しません/etc/passwd

したがって、FreeBSDでは、すべての(関連する)プログラムがGNU Cにリンクされている限り、#TABおよびSPCの前のコメント、および/etc/master.passwd現在#のロケール文字でisspace()始まるコメント、および/etc/passwdLinuxベースのオペレーティングシステムの他のNSSソースコード全体を使用できます。/etc/shadow図書館。

答え2

ファイルにはユーザー入力のみが許可されます/etc/passwd。それ以外の入力は誤った形式と見なされ、ファイルに依存するいくつかのツールが失敗する可能性があります。

TLDR:なし

答え3

の各レコードは/etc/passwdユーザーアカウントを記述し、コメント行はサポートされていません。

passwd(5)ファイル形式については()を参照してください。man 5 passwd

関連情報