社内や小さなチームでファイルを共有するとき、「誰がどのデータにアクセスできるのか」を明確にしないまま運用を始めてしまうケースは少なくありません。最初は人数も少なく問題になりませんが、メンバーが増えたり複数プロジェクトが並行し始めたりすると、すぐに「個人用」「プロジェクト用」「全体共有」がごちゃ混ぜになり、セキュリティや運用効率に大きな影響が出ます。
そこで本記事では、Linux サーバを用いて 個人領域・プロジェクト共有・全体共有をシンプルに切り分ける方法 を整理しました。ユーザやグループの設計から、実際のディレクトリ構成、権限設定の具体例まで、すぐに適用できる形で紹介します。
目次
1. はじめに
社内や小規模なチームでファイルを共有する場合、Linux サーバをファイルサーバとして活用するのは定番の方法です。しかし、誰がどのデータにアクセスできるのか をきちんと設計しないと、運用中に「勝手に見えてはいけないファイルが見える」「共有領域が混乱する」といった問題が起こります。
この記事では、SSH を前提とした Linux ファイルサーバの構築において、権限設定とユーザ管理のベストプラクティス を整理します。
2. ディレクトリ構成の基本方針
シンプルでわかりやすい構成を採用します。
/storage
├── users/ # 個人領域
│ ├── user1/
│ └── user2/
├── projects/ # プロジェクト共有領域
│ ├── pj_alpha/
│ └── pj_bravo/
└── public/ # 全体共有領域
/storage/users/
:個人専用のデータ置き場。ログイン直後のホームディレクトリにも割り当てます。/storage/projects/
:プロジェクトごとのグループ単位で共有。/storage/public/
:全員が読み取り可能な公開領域。
3. グループ設計
ユーザのアクセス権をシンプルに制御するために、次の3種類のグループを用意します。
allusers
:全ユーザ共通のグループpj_alpha
:プロジェクトαのグループpj_bravo
:プロジェクトβのグループ
全員が必ず allusers
に所属し、必要に応じて各プロジェクトグループに追加します。
4. ユーザ作成とホームディレクトリの割り当て
ユーザのホームディレクトリは /home
ではなく /storage/users/<ユーザ名> に割り当てます。
これにより、ログイン直後から自分のデータ領域にアクセスでき、.ssh
や .bashrc
なども通常通り扱えます。
例:
# user1 の作成
sudo mkdir -p /storage/users/user1
sudo useradd -m -d /storage/users/user1 -s /bin/bash -G allusers,pj_alpha user1
sudo passwd user1
# 権限設定
sudo chown -R user1:user1 /storage/users/user1
sudo chmod 700 /storage/users/user1
.ssh/authorized_keys
もこのホーム内に作成し、公開鍵認証でログイン可能にします。
5. 権限設定の実装例
個人領域
- ディレクトリ所有者: 各ユーザ本人
- パーミッション:
700
(本人以外アクセス不可)
sudo chown -R user1:user1 /storage/users/user1
sudo chmod 700 /storage/users/user1
プロジェクト共有領域
- ディレクトリ所有者: root
- グループ: プロジェクト用グループ
- パーミッション:
770
(プロジェクトメンバーと管理者のみ利用可能) g+s
を付与して、グループ継承を強制
sudo mkdir -p /storage/projects/pj_alpha
sudo chown root:pj_alpha /storage/projects/pj_alpha
sudo chmod 770 /storage/projects/pj_alpha
sudo chmod g+s /storage/projects/pj_alpha
全体共有領域
- 全員が読み取り可能
- 書き込みは管理者のみ
sudo mkdir -p /storage/public
sudo chown root:allusers /storage/public
sudo chmod 755 /storage/public
6. 運用上のポイント
- 公開鍵認証のみ許可することでセキュリティを強化(
PasswordAuthentication no
を設定)。 - プロジェクトディレクトリには
chmod g+s
を付け、ファイルのグループが自動的に継承されるようにする。 - バックアップは
/storage
単位で行うと管理がシンプル。 - 将来的に容量制限(quota)が必要になったら ext4 の quota 機能や btrfs/ZFS のネイティブ機能を利用可能。
7. まとめ
- ホームディレクトリを
/storage/users/
に割り当てることで、データ管理をシンプルにできる。 - プロジェクトごとのグループとディレクトリ権限を組み合わせれば、安全かつ効率的にデータを共有できる。
- 公開鍵認証専用の SSH 環境にすれば、セキュリティも確保できる。
社内やチームでの運用では「最初の設計」が後々の運用コストに大きく効いてきます。この記事を参考に、シンプルで安全なファイルサーバを構築してみてください。