Linux|共同作業用のグループとパーミッション設定方法(UGP)

目次

はじめに

通常、自分が新規に作成したファイルやディレクトリは他のユーザーが編集することはできません。 パーミッションが「644 (rw-r–r–) 」で設定されるためです。

しかし、プロジェクトでは共有ディレクトリを用意し、そのディレクトリ配下にあるファイルやディレクトリは誰でも読み書きをできるようにしたい場合があります。 さらにプロジェクト用グループを作成し、そのグループに所属するユーザーだけに読み書きをさせたい場合もあります。

その都度、chmodやchgrpでパーミッションを変更することでも対応できますが、毎回それをおこなうのは現実的ではありません。

それを解決するのが、次に紹介する方法です。 RedHatではUGP(User Private Group)体系という名称で提唱されています。

キーワード

sgid、umask 002

手順

ここでは、下記の共有ディレクトリと共有グループで作業をすると想定します。
共有ディレクトリ /var/soyokaze 共有グループ名 soyokaze

ユーザー tylor ユーザー harumi

プロジェクト管理用グループを作成する

$ sudo groupadd soyokaze
  • 補足
    • groupadd 、 groupmod 、groupdel ユーザーグループの追加、削除、及び修正をする業界標準のコマンド。
    • useradd、 usermod 、userdel ユーザーアカウントの追加、削除、及び修正をする業界標準のコマンド。

共有ディレクトリを作成する

$ sudo mkdir /var/soyokaze

同じグループのユーザーが読み書きできるように共有ディレクトリのパーミッションを変更する

$ sudo chmod 775 /var/soyokaze

新規作成したファイルやディレクトリのグループが自動的に共有グループになるように変更する

共有ディレクトリ「/var/soyokaze」にsetgid(sgid)という属性を付与することで、 ユーザーが新しいファイルやディレクトリを作成した場合、そのグループが自動的にsoyokazeになります。

$ sudo chmod 2775 /var/soyokaze

または

$ sudo chmod g+s /var/soyokaze

「/var/soyokaze」のパーミッションが「drwxrwsr-x」となります。 グループの実行許可部分が「x」ではなく「s」になります。

ユーザーを共有グループに登録する

ユーザーtylorをグループsoyokazeに登録するには

$ sudo gpasswd -a tylor soyokaze
  • 補足

gpasswd は、/etc/groupファイルを管理するコマンドです。

  • オプションの説明
-a ユーザ名 グループにユーザを追加する
-d ユーザ名 グループからユーザを削除する

新規作成したファイルのパーミッションが自動的に664になるようにする

新規作成したファイルやディレクトリのパーミッションを決めるには、umaskコマンドを用いてumask値を設定します。
新規作成したファイルのパーミッションが664になるようにするにはumask値を002とします。

システムのデフォルト値として設定する(全ユーザーに適用されます)

$ sudo vi /etc/profile umask 002

これでファイルやディレクトリを作成するとパーミッションは自動的に次のようになります。
ファイルの場合 「-rw-rw-r–」
ディレクトリの場合 「drwxrwsr-x」

補足1 umask値の変更方法

umask値を一時的に変更するには

$ umask 002

umask値の設定を確認するには

$ umask 022

ユーザー個別に設定するには、bashrcやzshrcに記載します。 (ログインしなおすと自動的に設定されるようになります)

$ vi .zshrc umask 002

補足2 umask値の意味

umask値は、ファイルなら 666 の補数、ディレクトリなら 777 の補数となります。

具体的には 新規作成したファイルのパーミッションは644(-rw-r–r–)となります。
(666 – 022 = 644)

新規作成したディレクトリのパーミッションは755(drwxr-xr-x)となります。
(777 – 022 = 755)

参考

  • デル株式会社

“Linux|共同作業用のグループとパーミッション設定方法(UGP)” への1件の返信

コメントを残す