Ubuntuサーバー構築入門

  • Ubuntu 20
  • Ubuntu 18
  • Ubuntu 16

データディレクトリに複数のユーザーが読み書きする方法 - 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 -d kimoto myapp-group
sudo gpasswd -d 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 /datadrive

出力結果の一部です。

drwxr-sr-x   7 kimoto myapp-group  115 Jun  3 10:36 /datadrive

これで、複数の開発者が起動するWebアプリケーションによって、アップロードされるファイルのためのデータディレクトリの準備ができました。

グループへの追加の反映は、ユーザーがログインしたときに認識されますので、自分のユーザーが、グループに追加したユーザーである場合は、いったんログアウトして、ログインしてください。