通常、自分が新規に作成したファイルやディレクトリは他のユーザーが編集することはできません。
パーミッションが「644 (rw-r–r–) 」で設定されるためです。
しかし、プロジェクトでは共有ディレクトリを用意し、そのディレクトリ配下にあるファイルやディレクトリは誰でも読み書きをできるようにしたい場合があります。
さらにプロジェクト用グループを作成し、そのグループに所属するユーザーだけに読み書きをさせたい場合もあります。
その都度、chmodやchgrpでパーミッションを変更することでも対応できますが、毎回それをおこなうのは現実的ではありません。
それを解決するのが、次に紹介する方法です。
RedHatではUGP(User Private Group)体系という名称で提唱されています。
sgid、umask 002
ここでは、下記の共有ディレクトリと共有グループで作業をすると想定します。
共有ディレクトリ /var/soyokaze
共有グループ名 soyokaze
ユーザー tylor
ユーザー harumi
補足
共有ディレクトリ「/var/soyokaze」にsetgid(sgid)という属性を付与することで、
ユーザーが新しいファイルやディレクトリを作成した場合、そのグループが自動的にsoyokazeになります。
「/var/soyokaze」のパーミッションが「drwxrwsr-x」となります。
グループの実行許可部分が「x」ではなく「s」になります。
ユーザーtylorをグループsoyokazeに登録するには
補足
gpasswd は、/etc/groupファイルを管理するコマンドです。
オプションの説明
-a ユーザ名
グループにユーザを追加する
-d ユーザ名
グループからユーザを削除する
新規作成したファイルやディレクトリのパーミッションを決めるには、umaskコマンドを用いてumask値を設定します。
新規作成したファイルのパーミッションが664になるようにするにはumask値を002とします。
システムのデフォルト値として設定する(全ユーザーに適用されます)
これでファイルやディレクトリを作成するとパーミッションは自動的に次のようになります。
ファイルの場合 「-rw-rw-r–」
ディレクトリの場合 「drwxrwsr-x」
umask値を一時的に変更するには
umask値の設定を確認するには
ユーザー個別に設定するには、bashrcやzshrcに記載します。
(ログインしなおすと自動的に設定されるようになります)
umask値は、ファイルなら 666 の補数、ディレクトリなら 777 の補数となります。
具体的には
新規作成したファイルのパーミッションは644(-rw-r–r–)となります。
(666 - 022 = 644)
新規作成したディレクトリのパーミッションは755(drwxr-xr-x)となります。
(777 - 022 = 755)