LoginSignup
3
4

More than 5 years have passed since last update.

WEBサーバーのファイルを、ユーザーを個別管理しながら共同編集出来るようにしたい

Last updated at Posted at 2014-12-11

WEBサーバーにアクセスする人間に、個別にアカウントを発行して管理を出来るようにしつつ、WEBサイトの更新はみんなで出来るようにしたいのですが、通常、違うユーザーが作成したファイルはパーミッションの関係で読み取り・書き込み・実行権限に制限が発生します。例えば、誰か(userA:userAGroup)がアップロードしたファイルを他の人(userB:userBGroup)は上書きできない、ということがあります。

そこで、userAとuserBを同じグループに所属させ、同じグループなら自由に編集できるようにパーミッションを設定するようにしたいと考えました。しかしチームの人間にはデザイナーや黒い画面が使えない人間もいて、毎度パーミッションを意識してもらうことは難しいのが現状です。

考えた方法

そこでCronで自動・定期的にファイルパーミッションを書き換える方法を考えました。

(※umaskのデフォルトパーミッションを試しましたがFTPクライアントが勝手にパーミッションを決定するパターンが有りました。逆にFTPクライアントにアップロード時のパーミッション設定を施すことは、各ユーザーが他のサーバーを利用する場合もあるため、他の環境にも設定が影響する可能性があり、グループに権限を与えることはサーバーによってはセキュリティ上問題となる可能性もあり、不適切であると考えました)

以下、具体的に行った内容です。

全ユーザーを同じグループに所属させる

usermod -g apache SOMEUSER

※ WEBサーバーもapacheグループで動いています。

Cronで、共同管理対象のディレクトリの一括パーミッション設定を行う

シェルスクリプトを組んでおく

sudo vi /root/crontab-chmod-www.sh

#!/bin/bash
find /path/to/dir -type d -print0 | xargs -0 chmod 775
find /path/to/dir -type f -print0 | xargs -0 chmod 664

ディレクトリなら775、ファイルなら664を設定します。

実行権限を付与

sudo chown root:root /root/crontab-chmod-www.sh
sudo chmod 700 /root/crontab-chmod-www.sh

Cron を設定

crontab -e

*/10 * * * * /root/crontab-chmod-www.sh

10分毎に実行します。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4