web-dev-qa-db-ja.com

特定のグループのGIDを変更する

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

36
mibzer

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を使用する必要があるすべてのプロセスを再起動します。

最も簡単な方法は、groupmod -g <NEW_GID> <groupname>を使用することです

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

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

31
jofel

/ path -group foo -print0 |を見つけます。 xargs -0 chgrpバー

0
jirib