![複数のユーザーのホームディレクトリに完全な権限でフォルダをバインドマウントする方法](https://rvso.com/image/1419610/%E8%A4%87%E6%95%B0%E3%81%AE%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AE%E3%83%9B%E3%83%BC%E3%83%A0%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%AB%E5%AE%8C%E5%85%A8%E3%81%AA%E6%A8%A9%E9%99%90%E3%81%A7%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%82%92%E3%83%90%E3%82%A4%E3%83%B3%E3%83%89%E3%83%9E%E3%82%A6%E3%83%B3%E3%83%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.png)
からファイルを提供する Web サーバーがあります。このフォルダーを に/var/www/vhosts/mysite
マウントして、ユーザーがログインし、ファイルを編集し、ログアウトできるようにしたいと考えています。問題は、マウントがそのフォルダーの権限を無視しないことです。一部のファイルは、www-data または別のユーザーによって作成された可能性があります。別のユーザーによって作成された場合、www-data はそれらの読み取り/変更にも問題があります。vhosts
/home/myuser/vhosts
これまで試したのは、fstab を使用してバインド マウントを作成することです。フォルダーはユーザーのホーム ディレクトリに正常にマウントされ、acl を使用してグループをフォルダーに割り当て、rwx
www-data とユーザーをグループに追加することで、書き込みを許可できました。フォルダーをバインド マウントする方法があるかどうか疑問に思っていますが、アクセス許可は影響を受けず、www-data が常に問題なく読み取り/書き込み/実行できるようにし、ユーザーに完全なアクセス許可も許可します。
答え1
まず、これらのユーザーを www-data グループに追加します。次に、 を使用する方法が意図されていますchmod g+s /home/user/vhost
。これにより、このフォルダーに が設定され、SGID
そのグループが新しいファイルに使用されるようになります。残念ながら、これはサブディレクトリには役立ちません。これらを最新の状態に保つには、ディレクトリツリーの変更後にこれを定期的に実行する必要があります: find /home/user/vhost -type d -exec chmod g+s {} \;
。これにより、すべてのサブディレクトリが検索され、 が有効になりますSGID
。最も面倒なのは、子を追加する前に親ディレクトリに対してこれを行う必要があることです。つまり、変更を行うときにこれを複数回実行する必要がある場合があり、それを忘れた場合は、とにかく chown コマンドを実行する必要があります: find /home/user/vhost -type d -exec chown user:www-data {} \;
。
これは私がやるように言っていることですが、この計画全体が私にとっては面倒なことだと感じています。実際に私がやっているのは、まったく関係のない権限を持つ開発サーバーで作業することです。変更を加えた後、prod サーバーに同期してすべての所有権と権限を毎回設定し、すべてが常に正しいことを確認するスクリプトがあります。この方法を使用すると、権限が壊れている理由を心配する必要がないため、多くの時間を節約できます。スクリプトを実行するだけで、すべてが魔法のように再び機能します。