web-dev-qa-db-ja.com

Linux NFSはマスクを作成し、同等のユーザーを強制します

2つのLinuxサーバーがあります。

ファイルサーバー
Debian 5.0.3(2.6.26-2-686)
Sambaバージョン3.4.2

Apache
Ubuntu 10.04 LTS(2.6.32-23-generic)
Apache 2.2.14

fileserverに多数のSamba共有があり、Windows PCからファイルにアクセスできます。また、/data/www-dataApacheサーバーにエクスポートし、/var/wwwとしてマウントしています。

NFSマウントでファイルを作成する場合を除いて、セットアップは問題ありません。結局、Apacheで読み取れないファイルや、システムの他のユーザーが変更できないファイルができてしまいます。

Sambaを使用すると、force userforce groupcreate maskdirectory maskを指定できます。これにより、すべてのファイルがApache Webサーバーに適切な権限で作成されます。 NFSでこれを行う方法が見つかりません。 NFSで権限と所有権を強制する方法はありますか-明らかなものがないのですか?

私はLinuxでかなりの時間を費やしていて、自分がWindowsから離れていましたが、それでもLinuxのパーミッションを十分に理解できていません...これが適切な方法でない場合は、代替案。

11
Mike

Windowsを使用している場合、NFSは異なる...であることがわかります。

あなたが遭遇している問題はかなり一般的です。 NFSは、マシン間でファイル/ディレクトリのUIDとGIDをやり取りしていますユーザーIDとグループIDが両方で同じようにマッピングされていると想定しています。これは、サーバーのUID/GIDがNFSクライアントに返されても、クライアントの/etc/passwdまたは/etc/group、これはアクセスがないことを意味します。

(遠い)過去には、これはNISおよびNIS +と共同で作成されましたが、このフレームワークに組み込まれた他のスキームもあります(SambaのWinbindもその1つです)。ただし、これには中央のIDサーバーが必要で、その後に多くの手動修正権限が続きます。

これを修正する方法はいくつかありますが、最も安い/最も速いのは、両方のマシンで同じグループID番号(たとえば、グループID 50000)でグループを作成し、適切なユーザーをクライアント上のグループ。次に、ファイルのグループ権限を使用してアクセスを制御します。素晴らしいソリューションではありませんが、うまくいきます。実行時に明示的にグループを変更するサービス(別名特権ドロップ)で問題が発生する可能性があることに注意してください。また、実行時に想定されるグループを制御する設定を変更して、作成したグループであることを確認する必要がある場合があります。

Windows共有(別名Samba)を介して受信するファイルの場合は、グループを強制的に作成したグループと同じにします。これにより、すべてのファイルが自動的に「正しい」GIDを取得します。

12
Avery Payne

all_squashオプションを使用して、エクスポートされたすべてのファイルとフォルダーを匿名(ユーザーとグループ)にして、特定のGIDとUIDに添付することもできます。

/data/www-data Apache(rw,all_squash,anonuid=<your UID>,anongid=<your GID>,sync)

これの問題は、Apacheサーバー上のすべてのユーザーがnobody nobodyのマウントポイントをユーザーおよびグループとして認識し、マウントに書き込むことができることです(ただし、Sambaサーバーでは、ファイル<your UID>/<your GID>)として作成されます。

9
Anthony O.