Synology NAS=ボックス(DSM 5.1を実行))を持っており、NFS経由でディレクトリをエクスポートしました。Ubuntuボックスにマウントしようとしています。
ほとんど問題なく動作しますが、ユーザーとグループのマッピングに問題があります。 Ubuntuのボックスでは、私はuid 1000(roger)、gid 1000(roger)です。 Synologyには、uid 1026(ロジャー)、グループ100(ユーザー)があります。
NFSv3を使用している場合、それは数値のuid/gid値を使用します。これは、所有権がSynologyで台無しになっていることを意味します。
同じユーザーを使用して同じUbuntuボックスからのみNFSマウントにアクセスする場合、これは問題ありませんが、CIFS(SMB)を使用してWindowsボックスからもディレクトリにアクセスします。つまり、権限は違う。
Synologyのデフォルト設定でNFSv4(mount -o nfsvers=4
)を使用している場合、Synologyのroger.users
が所有するファイルは、Ubuntuボックスから見るとroger.users
が所有しているように見えます。これはいい。
ただし、ファイルをtouch
した場合:
roger@ubuntu$ touch /mounts/diskstation/music/foo
Synologyの1000.1000
が所有してしまい、Ubuntuボックスから見るとnobody.4294967294
が所有していると表示されます。
Synologyフォーラムのトピックで私が見つけることができるものはすべて、NFSv4がサポートされなかった2011年からの日付か、同じ質問をして断念する人々で構成されています。
完全を期すために、/etc/exports
には以下が含まれています。
/volume1/music 10.0.0.0/24(rw,async,no_wdelay,root_squash,insecure_locks,sec=sys,anonuid=1025,anongid=100)
...そして私はそれをUbuntuボックスにマウントしています:
mount -t nfs diskstation:/volume1/music /mounts/diskstation/music/ -o rw,nfsvers=4
sec=sys
が問題である可能性があるというヒントを見つけました: NFSv4のuid/gidマッピングがAUTH_UNIX(AUTH_SYS)で機能しない理由 ですが、解決策はありません。
この問題を回避する簡単な方法はありますか?これを解決するためのより複雑な(coughKerberoscough)方法はありますか?
真剣に、Kerberosがの答えである場合、私はそのヒットを取り上げますが、それにかなりの時間を費やす前に知りたいです。
更新: Synologyドキュメント はさまざまなKerberosオプションについて話しますが、UIでそれらを見つけることができません。 リリースノート 状態「Kerberosセキュリティフレーバーが実装されている場合...」特定のモデルではない可能性があることを示すページを見つけました(ただし、再度見つけることはできません)。システム情報ページによると、私はDS211を持っています。多分私は運が悪いのですか?
NFSv4 IDマッピングが正しく機能するには、クライアントとサーバーの両方がidmapd
IDマッパーデーモンを実行していて、同じDomain
が/etc/idmapd.conf
で構成されている必要があります。
このようにして、NFSクライアントはワイヤー上のNFSコマンドで[email protected]
としてID資格情報を送信し、NFSサーバーidmapperはそれをNFSサーバー上のroger
というユーザーにマップします。 UIDとGIDは関係ありません。これらはidmapperによって各システムにマッピングされます。
しかし、私はSynologyではそれを気にしません。私の共有フォルダには次の権限があります:
これにより、NASのanonuid=1024,anongid=100
のエクスポートに/etc/exports
(admin
ユーザーおよびusers
グループ)が追加されます。
私のNFSクライアント(IDマッパーが実行されていない)が自分のNFSコマンドをユーザー(1000:1000
)として送信し、そのUIDとGIDがNASに存在しないため、UIDとGIDが1024:100
に変換されるため、完全な権限を持つ管理者ユーザーとして。
これは、ビジネス環境でのNFSの専門的ではなく、安全でない使用法ですが、私が自宅で自分のファイルにアクセスするだけでも、NFSの振る舞いが悪用され、受け入れられます。
もう1つのオプションは、roger
のUIDとGIDをNFSクライアントとNASで同じにすることです。IDマッピングなしでNFSv4を使用するか、UIDとGIDのみに依存するNFSv3を使用できます。
私はまったく同じ問題に本当に苦労しています。 SynologyのDockerでKerberosサーバーをセットアップし、IDマッピングをセットアップするという大変な苦労を経験しましたが、それでも動作が気に入らなかったのです。 Kerberosは過度に設計されすぎており、リブートや自動マウントで作業し続けるのは困難です。さらに、新しく作成されたファイルのデフォルトのumaskは0000で、ローカルumaskが何であっても、すべての新しいファイルはモード777で作成されました。
私の解決策はsuprjamiの解決策に似ていましたが、もう少し詳しく説明します。
roger.remote
_のような名前を付けます。ユーザーグループについても同じ操作を行い、ユーザー名と同じ名前を付けます。roger.remote
_のUIDを1000に、GIDを1000に変更しますroger.remote
_も1000に変更しますanonuid=1000,anongid=1000
_に変更します。/usr/syno/etc.defaults/rc.sysv/S83nfsd.sh restart
_でNFSを再起動しますchmod 777 /volume1
_です。マウントしたホームディレクトリに多くの奇妙な問題がありました。 glibc access()
関数はマウントされたNFSディレクトリで拒否されたアクセスを返すため、KDEは起動しませんでした。 (しかし、すべてのサブディレクトリは機能します)Firefoxにも同様の問題があり、アクセスチェックのためにマウントされたディレクトリへのファイルの保存を拒否しました。アクセス許可は適切でしたが、マウントされたディレクトリ内のファイルをタッチ/作成/書き込みできました。親の/ volume1ディレクトリを誰でも書き込み可能なディレクトリに変更すると、そのばかげた問題が修正され、クライアントアプリがだまされてそこに書き込むことができなくなりました。synoacltool -del /volume1/myshare
_を実行します。 ls -lの出力から_+
_記号が削除されているはずです。chown roger.remote:roger.remote /volume1/myshare
_chmod 755 /volume1/myshare
_$ umask 0002 $ cd /mnt/myshare $ touch test $ ls -l test -rw- rw-r-- 1 roger roger 0 Oct 21 18:15 test
Synologyに次のように表示されます。
#ls -l /volume1/myshare/test -rw-rw-r-- 1 roger.remote roger.remote 0 Oct 21 18:15 test
楽しい!
私はこれがあったモデルを見つけようとして同じ問題を抱えていました。 Kerberosは Active Directory Serverパッケージ の一部であり、パッケージの説明には、使用可能なSynologyモデルが含まれていることがわかりました。 (1515以降ではなく1515を取得したので、私も運が悪かった。)