特定のグループのgidを変更します


34

特定のグループのグループIDを変更したいのですが。ファイルまたはディレクトリのgidを変更するためのソリューションがあります。しかし、それは私が望むものではありません。それを行う方法はありますか?

回答:


42

GIDはグループのプライマリ識別子です。システムに関する限り、異なるGIDは異なるグループです。したがって、GIDを変更するには、そのGIDが使用されているすべての場所を変更する必要があります。

GIDを重要なものとして扱うのを避け、代わりにグループ名を使用する必要があります。1つのコマンドでグループの名前を変更できます(Linuxの場合:)groupmod -n NEW_GROUP_NAME OLD_GROUP_NAME

ただし、GIDを本当に変更したい場合は、次のようにします。

  • まず、グループ内のユーザーをログアウトし、そのグループを有効なグループ、実際のグループ、または保存されたグループとして持つプロセスを強制終了する必要があります。
  • グループデータベースのエントリを変更します。Linuxでは、を実行しgroupmod -g NEWGID GROUPNAMEます。他のシステムでは、そのシステムの管理ツールを使用するかvigr、使用可能な場合は、必要に応じて編集/etc/groupします。
  • 古いグループに属するシステム上のすべてのファイルのグループを変更します。

    find / -gid OLDGID ! -type l -exec chgrp NEWGID {} \;
    
  • chgrpは、suidおよびsgidフラグをクリアし、それらを復元します。

  • 古いGIDを使用するアーカイブがある場合は、再構築します。
  • 古いGIDを参照する構成ファイルまたはスクリプトがある場合は、それを更新します。
  • 新しいGIDを使用する必要があるすべてのプロセスを再起動します。

2
chgrp -h ...代わりに使用することをお勧めしますchgrp ...。を使用しない-hと、関連するシンボリックリンクのターゲットのグループが変更されます。
マークプロトニック14

3
groupmodテイクは...私にとってメインの引数として名前だgroupmod -g NEWGID GROUPNAME
マット・

29

最も簡単な方法は groupmod -g <NEW_GID> <groupname>

別の方法は、/etc/group直接編集することです。各列の3番目のフィールドはgidです。

変更されたグループがユーザーのメイングループである場合は、/etc/passwd適応させる必要もありますusermod -g <NEW_GID> <username>


これはファイルのgidにも影響しますか?つまり、ファイルのgidとグループのgidは同時に変更されますか?
mibzer

1
いいえ。これはグループのIDのみを変更します。ファイル/ディレクトリは(現在は名前のない)gidを保持しているため、個別に変更する必要があります。
ジョフェル

よろしくお願いします。したがって、それらの(ファイル)gidを新しいgidに変更する場合は、別のコマンドを実行する必要があります。そうですか?froupファイルのgidと関連ファイルのgidの両方を同時に変更する方法がある場合、それはより良いでしょう。
-mibzer

他のコマンドを回答に追加しました。/ etc / groupにない一時的なgidを使用しても問題ありません。グループのすべてのユーザーは、新しいgidを取得するために再ログインする必要があります。
ジョフェル

0

/ path -group foo -print0 | xargs -0 chgrpバー


私が言ったように、ファイルのgidが変更されます。しかし、それは私が言っていることではありません。ファイルではなくグループのgidを変更したい。
mibzer

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.