パッパと共有ディレクトリ関連の設定
自分の環境に合わせて次の変数を置き換えてください:
BASE=/path/to/shared_dir # 共有ディレクトリのパス(例)BASE=/home/Competition2025/P08/shareP08
GROUP=your-team-group # 自分のグループ名(例)GROUP=P08
1) シェル設定ファイルに umask=002 を設定
ターミナルで以下コピペ:
echo 'umask 002' >> ~/.bashrc && source ~/.bashrc
効果:新しく作るファイルが 664、ディレクトリが 775 になります。
→ 同じグループの人が“書き込み”できるようになります
数字やumaskの意味は 補足の章 で解説。
2) 既存の“自分所有”を一括で共有用に整える
開いているターミナルに以下コピペ:
cd "$BASE"
find . -user "$USER" -exec chgrp "$GROUP" {} +
find . -user "$USER" -type d -exec chmod 2775 {} +
find . -user "$USER" -type f -exec chmod 664 {} +
これで終わり!
2775の “2” は SGIDです。親ディレクトリのグループを子にも引き継ぎやすくする仕掛け(補足の章で説明)。
初めに
挨拶が遅れました。イマザトと申します。
本記事は、松尾研LLM開発コンペ 2025 への参加で得られた共同開発での学びをもとに、共有ディレクトリでチーム全員がスムーズに読み書きできる運用を最小限の設定で実現するための手順を整理したものです。
ここから30秒コマンドに関連した詳細説明します。
対象読者
- Linux の共有ディレクトリで、チームメンバー全員が読み書きできるようにしたい人
- 「Aさんが作ったものをBさんが編集/複製できない」を無くしたい人
- Linux 権限設定が初めてでも、速く安全に進めたい人
- 2026年以降の松尾研LLM開発コンペに出場する人 ※2025年10月時点で公式からの公開情報無し
共有ディレクトリ用の事前設定を実施する背景
- 多くの Linux は 標準で
umask 022。そのままだと新規ファイルが644、ディレクトリが755になり、「同じグループの人が書けない」 状態になります。 - 共有ディレクトリ内で 同じグループの人が“書ける” 設定をしたいのであれば
umask 002に変更する必要があります。 - グループの人に変更されたくないファイルや読まれたくないディレクトリ等には適切な権限設定が必要です。目的に応じて適切な権限設定をする方法は本記事の対象外とさせてください。
※
umaskや数字の意味は補足の章で解説
ファイルやディレクトリの権限をチェック
例1:umask 022 のまま作ると…(NG例)
umask 022
mkdir sample_ng && touch sample_ng/file.txt
ls -ld sample_ng # 権限と記号を確認
ls -l sample_ng
出力の典型(例):
drwxr-xr-x 2 alice team 4096 ... sample_ng # ← ディレクトリ 755(グループ書けない)
-rw-r--r-- 1 alice team 0 ... file.txt # ← ファイル 644(グループ書けない)
例2:umask 002 にして作ると…(OK例)
umask 002
mkdir sample_ok && touch sample_ok/file.txt
ls -ld sample_ok
ls -l sample_ok
出力の典型(例):
drwxrwxr-x 2 alice team 4096 ... sample_ok # ← ディレクトリ 775(グループ書ける)
-rw-rw-r-- 1 alice team 0 ... file.txt # ← ファイル 664(グループ書ける)
rwxと-rw-の意味、775/664の数字の意味は補足の章で説明します。
自分の“グループ設定”をチェック
共有ディレクトリは、同じグループの人たちで共有するのが基本です。
まず自分が意図したグループ $GROUP に所属しているか確認:
GROUP=your-team-group
id
groups
id -gn # 現在のプライマリグループ
id -Gn # 所属グループ一覧
- 出力に
$GROUPが 見つからない(例:P08が見つからない) → 共有ディレクトリにあなたが書き込めない可能性が高いため、管理者にグループ参加を依頼します。 - 一時的に「これから作るものは
$GROUPをプライマリグループ扱いにしたい」場合:
# このシェル内だけプライマリグループ切り替え
newgrp "$GROUP"
# プライマリグループ設定とコマンドを1発で実行する例
sg "$GROUP" -c 'mkdir demo && touch demo/a'
注意:恒久的なプライマリグループの変更・グループ追加は管理者作業
共有ディレクトリの“土台整備”(所有者/管理者が一度だけ)
共有ディレクトリの一番上(親)ディレクトリは、その所有者/管理者が最初に以下コマンドを実施しておくことで、配下で新しく作られるもののグループ所有が自動で親に揃うようになります。
ユーザは 自分が所有するファイル/ディレクトリ に対して chgrp/chmod できます。
BASE=/path/to/shared_dir
GROUP=your-team-group
# 親ディレクトリを共有グループにそろえ、SGID(2775)を付与
chgrp -R "$GROUP" "$BASE"
chmod 2775 "$BASE"
find "$BASE" -type d -exec chmod 2775 {} +
find "$BASE" -type f -exec chmod 664 {} +
※
SGIDは補足の章で解説
補足の章:詳細を解説
A. 「rwx と数字(664/775)」の意味
- Linux の権限は user / group / other(所有者 / 所有グループ / それ以外)ごとに、
- r = 読む (read) = 4
- w = 書く (write) = 2
-
x = 実行 (execute) = 1
を 足し算して表します。
| 記号 | 数字 | 意味(ファイル) | 意味(ディレクトリ) |
|---|---|---|---|
rw- |
6 | 読めて書ける | 中の一覧変更(作成/削除)も含めて可能(※xが必要) |
r-x |
5 | 読めて実行のみ | 中に入れる・一覧できるが、作成・削除は不可 |
r-- |
4 | 読むだけ | 中に入れない(xが無ければ) |
rwx |
7 | 何でも可 | 何でも可 |
-
664はrw-(6) /rw-(6) /r--(4) → 所有者とグループが書ける、その他は読むだけ -
775はrwx(7) /rwx(7) /r-x(5) → 所有者とグループは何でもでき、その他は読む・入るだけ
B. umask とは
新規作成時に“どの権限を削るか”の設定
- ファイルは「最大 666」、ディレクトリは「最大 777」で作られる前提があり、
umaskはそこから削る値です。 - 例:
umask 002のとき-
ファイル:
666 - 002 = 664(グループ書ける) -
ディレクトリ:
777 - 002 = 775(グループ書ける)
-
ファイル:
C. SGID(chmod 2xxx)とは
子が親のグループを引き継ぐ仕組み
- ディレクトリに SGID を付ける(例:
chmod 2775 project)と、その配下に作るものの“所有グループ”がprojectのグループになりやすくなります。 -
例:
GROUP=your-team-group mkdir project && chgrp "$GROUP" project && chmod 2775 project # project の中で作ると… touch project/a && mkdir project/b ls -l project # → a も b も group が your-team-group になっているはず!
D. グループ(プライマリ/サブ)の考え方
- ユーザは1つのプライマリグループと、複数のサブグループに所属できます。
- 共有運用では、共有ディレクトリのグループ(
$GROUP)に所属していることが前提。
所属していないと、読めても書けないことが多いです。 -
一時的にプライマリを
$GROUPにしたい →newgrp "$GROUP"(そのシェルだけ)。 -
恒久的には管理者が
usermodで設定(ユーザ側からは依頼)。
最後に
- 「作ったらチームでそのまま使える」 を当たり前にして、権限トラブルから卒業しましょう。
- 松尾研LLM開発コンペ2025でお世話になったチームCaminoの皆様ありがとうございました!
本プロジェクトは、国立研究開発法人新エネルギー・産業技術開発機構(NEDO)の「日本語版医療特化型LLMの社会実装に向けた安全性検証・実証」における基盤モデル開発プロジェクトの一環として行われます。