web-dev-qa-db-ja.com

SynologyでNFSを使用したユーザーIDマッピングNAS

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を持っています。多分私は運が悪いのですか?

21
Roger Lipscombe

NFSv4 IDマッピングが正しく機能するには、クライアントとサーバーの両方がidmapd IDマッパーデーモンを実行していて、同じDomain/etc/idmapd.confで構成されている必要があります。

このようにして、NFSクライアントはワイヤー上のNFSコマンドで[email protected]としてID資格情報を送信し、NFSサーバーidmapperはそれをNFSサーバー上のrogerというユーザーにマップします。 UIDとGIDは関係ありません。これらはidmapperによって各システムにマッピングされます。

しかし、私はSynologyではそれを気にしません。私の共有フォルダには次の権限があります:

  • 権限
    • ローカルユーザー
      • 管理者=読み取り/書き込み
  • NFS権限
    • 押しつぶす
      • すべてのユーザーを管理者にマップする

これにより、NASのanonuid=1024,anongid=100のエクスポートに/etc/exportsadminユーザーおよび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を使用できます。

8
suprjami

私はまったく同じ問題に本当に苦労しています。 SynologyのDockerでKerberosサーバーをセットアップし、IDマッピングをセットアップするという大変な苦労を経験しましたが、それでも動作が気に入らなかったのです。 Kerberosは過度に設計されすぎており、リブートや自動マウントで作業し続けるのは困難です。さらに、新しく作成されたファイルのデフォルトのumaskは0000で、ローカルumaskが何であっても、すべての新しいファイルはモード777で作成されました。

私の解決策はsuprjamiの解決策に似ていましたが、もう少し詳しく説明します。

  • Synology Web UIで新しいユーザーを作成し、_roger.remote_のような名前を付けます。ユーザーグループについても同じ操作を行い、ユーザー名と同じ名前を付けます。
  • ルートとしてのSynologyで、/ etc/passwdを編集し、_roger.remote_のUIDを1000に、GIDを1000に変更します
  • / etc/groupを編集して、グループ_roger.remote_も1000に変更します
  • Synology Web UIで、スカッシュを「管理するすべてのユーザー」に設定して保存します
  • 再びrootとして、/ etc/exportsを編集し、UID/GIDを_anonuid=1000,anongid=1000_に変更します。
  • _/usr/syno/etc.defaults/rc.sysv/S83nfsd.sh restart_でNFSを再起動します
  • これも少しハックですが、_chmod 777 /volume1_です。マウントしたホームディレクトリに多くの奇妙な問題がありました。 glibc access()関数はマウントされたNFSディレクトリで拒否されたアクセスを返すため、KDEは起動しませんでした。 (しかし、すべてのサブディレクトリは機能します)Firefoxにも同様の問題があり、アクセスチェックのためにマウントされたディレクトリへのファイルの保存を拒否しました。アクセス許可は適切でしたが、マウントされたディレクトリ内のファイルをタッチ/作成/書き込みできました。親の/ volume1ディレクトリを誰でも書き込み可能なディレクトリに変更すると、そのばかげた問題が修正され、クライアントアプリがだまされてそこに書き込むことができなくなりました。
  • 共有からすべてのファイルシステムACLを削除します。多くのランダムな実験を通じて、これらのACLが作成されたファイルのモードマスクに問題を引き起こすことがわかりました。私はACLマスターではないので、もっとエレガントな解決策があるかもしれません。 Synologyのルートとして、_synoacltool -del /volume1/myshare_を実行します。 ls -lの出力から_+_記号が削除されているはずです。
  • 共有の所有権を新しいユーザーに変更します:_chown roger.remote:roger.remote /volume1/myshare_
  • モードを755に変更します:_chmod 755 /volume1/myshare_
  • ボリュームをクライアントにマウントし、アクセス許可をテストします。これでうまくいくはずです。必ずファイルにも触れて、bash umaskが正しく適用されていることを確認してください。
 $ 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 

楽しい!

2
Cal

私はこれがあったモデルを見つけようとして同じ問題を抱えていました。 Kerberosは Active Directory Serverパッケージ の一部であり、パッケージの説明には、使用可能なSynologyモデルが含まれていることがわかりました。 (1515以降ではなく1515を取得したので、私も運が悪かった。)

0
gopy