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-data
をApacheサーバーにエクスポートし、/var/www
としてマウントしています。
NFSマウントでファイルを作成する場合を除いて、セットアップは問題ありません。結局、Apacheで読み取れないファイルや、システムの他のユーザーが変更できないファイルができてしまいます。
Sambaを使用すると、force user
、force group
、create mask
、directory mask
を指定できます。これにより、すべてのファイルがApache Webサーバーに適切な権限で作成されます。 NFSでこれを行う方法が見つかりません。 NFSで権限と所有権を強制する方法はありますか-明らかなものがないのですか?
私はLinuxでかなりの時間を費やしていて、自分がWindowsから離れていましたが、それでもLinuxのパーミッションを十分に理解できていません...これが適切な方法でない場合は、代替案。
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を取得します。
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>
)として作成されます。