web-dev-qa-db-ja.com

/ etc / groupおよび/ etc / passwdファイルをソートできますか?

私の/etc/groupは、新しいユーザーを追加したり、独自のユーザーやグループを追加したプログラムをインストールしたりすることで成長しました。 /etc/passwdについても同様です。構造が不足しているため、編集は少し面倒になっています。

システムおよび/またはパッケージマネージャーに悪影響を与えずにこれらのファイルをソートする(たとえば、数値のIDまたは名前のアルファベット順)を使用できますか?

それは問題ではないと思いますが、念のためセカンドオピニオンを得たいと思います。多分rootは最初の行か最初の1k行以内か何かにする必要がありますか?

/etc/*shadowも同様です。

33
Ned64

あなたは OKこれを行う である必要があります:実際、記事に従って、ドキュメントを読むと、並べ替えることができます/etc/passwdおよび/etc/group UID/GIDとpwck -sおよびgrpck -s、それぞれ。

51
ErikF

ErikFは、これで大丈夫なはずですが、問題はありませんが、潜在的な問題を1つ指摘しておきます。

異なるユーザー名を同じUIDにマッピングすることは許可されています。 これを利用すると、UIDをユーザー名にマッピングするツールは、通常、_/etc/passwd_。並べ替えを行うと、別のユーザー名が最初に表示される場合があります。表示目的(例:_ls -l_出力)では、どちらのユーザー名でも機能しますが、ユーザー名Aからの要求を受け入れるようにプログラムを構成している可能性があります。 AとBが同じユーザーであっても。

44
hvd

最初の行にrootを置くことは、事実上の「標準」であり、シェルを修正したりパスワードを削除したりする必要がある場合、問題に対処したりシステムを回復したりするときに非常に便利です。

同様に、passwdshadowの両方の最後に、demons/utilsユーザーと中間ユーザーを置くことを好みます。

hvd回答は、特に多くのユーザーが手作業で管理されているシステムでは、ユーザーの注文を妨げることについても非常に優れています。

たとえば、標準ユーザーだけがファイルを並べ替えることができれば、すべてのユーザーの順序を変更するよりも賢明です。

2
Rui F Ribeiro

以下は、shadow/gshadowファイルを同様にソートするためのやや毛深いbashコードです安全に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

注意:

  1. vi -cは、vipw変数によってvigr/EDITORのエディターとして割り当てられているvimエディターにコマンドを渡します
  2. Awkコードはshadowpasswdでソートします(およびgshadowgroupでソートします)
  3. バックスラッシュは、引用レベルに対応して必要なエスケープの複数のレベルにすぎません。
  4. 2番目のコマンド(-c\"wq!\")は、ソートされたファイルを強制的に書き込み、閉じます。シャドウ/ gshadowはモード000であることが多いため(つまり、書き込み不可)、フォースが必要です。 「!」の間のスペースに注意してくださいシェルによるbashイベントを参照する '!\'としての解釈を防ぐには、 '\'が必要です。
0
puterboy