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

0-1. 目次

0-2. はじめに

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

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

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

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

0-3. キーワード

sgid、umask 002

0-4. 手順

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

ユーザー tylor
ユーザー harumi

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

1
$ sudo groupadd soyokaze

補足

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

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

1
$ sudo mkdir /var/soyokaze

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

1
$ sudo chmod 775 /var/soyokaze

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

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

1
2
3
$ sudo chmod 2775 /var/soyokaze
または
$ sudo chmod g+s /var/soyokaze

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

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

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

1
$ sudo gpasswd -a tylor soyokaze

補足

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

オプションの説明

-a ユーザ名
グループにユーザを追加する

-d ユーザ名
グループからユーザを削除する

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

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

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

1
2
$ sudo vi /etc/profile
umask 002

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

6.1. 補足1 umask値の変更方法

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

1
$ umask 002

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

1
2
$ umask
022

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

1
2
$ vi .zshrc
umask 002

6.2. 補足2 umask値の意味

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

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

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

0-5. 参考

「Linux|共同作業用のグループとパーミッション設定方法(UGP)」への1件のフィードバック

コメントを残す