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


33

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

システムやパッケージマネージャーに悪影響を与えることなく、これらのファイル並べ替えることができます(たとえば、数値IDまたは名前のアルファベット順)。

それは問題ではないと思いますが、念のために第2の意見を聞きたいと思います。たぶんroot、最初の行にする必要がありますか、最初の1k行以内か何かですか?

同じことが当てはまり/etc/*shadowます。


7
「構造が不足しているため、編集が少し面倒になりました。」なぜこれらのファイルを手動で編集するのですか?
ケビン

ファイルのソートは編集にどのように役立ちますか?関連するアカウントをグループ化し、行の範囲で同様の変更を行うためですか?しかし、uidまたは名前でソートすると、関連するアカウントは隣接しますか?
バーマー

@Barmar主にユーザーアカウントが範囲でグループ化され、システムアカウントとは別であるために役立ちます(UIDで並べ替える場合)。したがって、たとえば、で編集するときに、正しい行を見つけて調査または変更する方が簡単viです。
-Ned64

回答:


50

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


3
@Menashehこのサイトの色は、他のサイトほど目立つものではありませんが、この回答の「OK doing this」はハイパーリンクです。
hvd

2
OK、大丈夫ですが...一般に、/ etc / passwdおよび同様のファイルを手動で編集する正当な理由はありますか?それらを作成および変更するように設計されたツールを介してこれらにアクセスする方が良いと考えられていませんか?
mickeyf_supports_Monica

@mickeyf /etc/passwd移動/再構築(グローバルルームまたは電話番号の変更など)によりすべてのユーザーのGECOSフィールドを変更するなど、バッチ変更を行うときに手動で編集する人を見たことがありますが、もはや一般的ではありませんが、特定の時々現れる理由。
ErikF

44

ErikFはこれで一般に問題ないことは正しいですが、1つの潜在的な問題を指摘したいと思います。

異なるユーザー名を同じUIDにマッピングできます。これを利用する場合、UIDをユーザー名にマップするツールは、通常、そのUIDで最初に見つかったユーザー名を選択し/etc/passwdます。並べ替えを行うと、異なるユーザー名が最初に表示される場合があります。表示目的(ls -l出力など)では、どちらのユーザー名でも機能するはずですが、ユーザー名Aからのリクエストを受け入れるようにプログラムを設定している可能性があります。同じユーザーです。


おかげで、数十年前にSolarisでtcshとuid 0を持つユーザーがいたことがあります。ただし、Linuxシステムはこの状況を単独で作成することはありません。その状況で問題を抱えるには、そのようなユーザーを手動で作成する必要があります。
Ned64

2

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

同様に、私は両方の最後に真ん中と標準ユーザーでデーモン/ utilsのユーザーを持っていることを好むpasswdshadow

hvd 特に手作業で多くのユーザーが管理しているシステムでは、ユーザーの注文を乱すことについても非常に良い答えです。

たとえば、標準ユーザーのみでファイルを並べ替える場合は、すべてのユーザーの順序を変更するよりも賢明です。


1
UIDで数値順に並べ替える場合、希望の順序を取得する必要があります。ルートは常に0であり、デーモンのUIDは通常100未満です
。– Barmar

@Barmar名前ではなくUIDでソートする場合は、実際に覚えておいてくれてありがとう。
ルイFリベイロ

0

同様に、シャドウ/ gshadowファイルを安全にvipw -s/ を使用してvigr -s)コマンドラインからインプレースでソートするための、やや毛深いbashコードがあります。

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/ のエディターとして割り当てられているvimエディターにコマンドを渡しますvigrEDITOR
  2. awkのコードの種類shadowによってpasswd(とgshadowによりますgroup
  3. バックスラッシュは、引用レベルに対応する必要な複数レベルのエスケープです。
  4. 2番目のコマンド(-c \ "wq!\")は、ソートされたファイルを強制的に書き込み、閉じます。多くの場合、shadow / gshadowはモード000(つまり、書き込み不可)であるため、強制が必要です。「!」の間のスペースに注意してください そして、 '\'は、bashイベントを参照する '!\'としてのシェルによる解釈を防ぐために必要です。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.