データディレクトリに複数のユーザーが読み書きする方法 - Webアプリのファイルアップロードディレクトリ
データディレクトリに複数のユーザーが読み書きする方法を解説します。
これは、PerlでWebシステム開発を行っている場合に、別々の開発ユーザー起動したWebアプリケーションが、データ保存ディレクトリに、ファイルアップロードを行う場合に、直面する問題です。特定のユーザーだけではなく、複数のユーザーが読み書きできるようにします。
データ保存ディレクトリ以下のファイルすべてに「myapp-group」という所有者グループを設定して、特別なパーミッションSGIDをデータ保存ディレクトリ(トップディレクトリ)に設定することで、新規に作成されるファイルも、同じグループを持たせることができます。
SGIDというのはSet Group IDの略です。ディレクトリに設定することで、ディレクトリ以下のファイルが新規作成された場合に、所有者グループが、トップディレクトリと同じものになります。
データディレクトリに複数のユーザーが読み書きする手順
データディレクトリに複数のユーザーが読み書きする手順です。データディレクトリを「/datadrive」とします。
アプリケーション用のグループの作成
アプリケーション用のグループをgroupaddコマンドで作成します。名前は「myapp-group」とします。
sudo groupadd myapp-group
myapp-groupグループに開発ユーザーを追加
myapp-groupグループにgpasswdコマンドで、開発ユーザーを追加します。
sudo gpasswd -a myapp myapp-group sudo gpasswd -a yamada myapp-group
データディレクトリ以下にあるファイルの所有者グループを再帰的にmyapp-groupに変更
データディレクトリ以下にあるファイルの所有者グループをchgrpコマンドで再帰的にmyapp-groupに変更
sudo chgrp -R myapp-group /datadrive
グループの書き込み権限を与える
「/datadrive」にグループでの書き込み権限を与えます。
sudo chmod 775 /datadrive
データディレクトリに特別なパーミッションSGIDを設定
データディレクトリに特別なパーミッションSGIDをchmodコマンドで設定します。
sudo chmod g+s /datadrive
lsコマンドで確認するとsが設定されています。
ls -l / | grep datadrive
出力結果の一部です。
drwxr-sr-x 7 myapp myapp-group 115 Jun 3 10:36 /datadrive
これで、複数の開発者が起動するWebアプリケーションによって、アップロードされるファイルのためのデータディレクトリの準備ができました。
グループへの追加の反映は、ユーザーがログインしたときに認識されますので、自分のユーザーが、グループに追加したユーザーである場合は、いったんログアウトして、ログインしてください。