SMB認証とNFS v.3認証の最大の違いは何ですか?
SMBでは、ユーザーのログインとパスワードに基づいていますが、NFSではホスト認証に基づいていると思います。
あなたは基本的にそれを持っています。
SMB/CIFSは、各セッションが1人のユーザーにマップされているセッションごとに、ある種のユーザー資格情報(KRBトークン、ユーザー/パスワードのペア、またはユーザーが持っているもの)に基づいてアクセスします。 NFSv3はホストベースの認証を使用し、特定のリモートマシンのすべてのユーザーが同じ接続を共有します。 SMB/CIFS、特にSambaの実装では、機能が必要な場合はホストベースの許可/拒否も許可されます。ウィンドウファイルサーバーも同様に機能し、ファイルサーバーサブシステムにない場合は、ファイアウォールで処理されます。
SMB/CIFSは、共有に独自のパスワードがある場合、共有ベースの認証も実装します。
NFSv4は、Kerberosを介してユーザーごとの認証を使用するように構成できます。
NFSv3はリモートマシンに強く依存して、リモートがリクエストで真実のマシン間でコヒーレントな数値IDを送信することを期待してアクセス許可を適用しますが、SMB/CIFSは、接続(セッション)認証されたリモートユーザーに基づいてローカルディスクにアクセス許可を適用します。
NFSv3の結果として、ユーザーがリモートボックスにrootを持っている場合、一般に(つまり、デフォルトで)NFSv3共有全体への読み取り専用rootアクセスがあり、他のユーザーIDを偽装できます。シングルユーザーマシンへの共有の場合、NFSには回避策としてall_squashがありますが、これはIPごとです。
反対に、ほとんどのunixのようなsmb.mount実装(linux pre-3.3、freebsd、solaris)は、システム全体のマルチセッション(マルチユーザー)マウントをサポートしていないため、リモートSMBファイルシステムをマウントする場合、システムのセッションは、マウントに設定されたユーザー、つまりvizのみです。すべてのユーザーは、マウント時に設定されたユーザー名の権限で動作します。 Linux 3.3以降には、軽減するcifscredsがあり、Fuse SMB/CIFS実装が利用可能です。予想通り、これはWindowsクライアントの問題ではありませんでした。
また、NFSv3では、数値UIDが正確にマッピングされている必要があります。クライアントマシンのユーザー1001には、サーバーのユーザー1001として権限が付与されます。テキストによるユーザー名のマッピングはありません。 SMB/CIFSはIDをセッションにバインドするため、マッピングは自動的に行われます。共有UIDは資格情報と一致します。
NFSv4には、GSSドメインで認証されたユーザーをIDマッピングするためのデーモンがありますが、GSSドメインをまだデプロイしていない場合は、UIDを同期する方が簡単です。
NFSv3とそれ以前のバージョンは、ACLをサポートしているので少しおおざっぱかもしれません(そしてxattrsはすぐに使える)。 NFSの「POSIX ACL」はサイドバンドRPC(メインプロトコルではない)に実装されているため、問題が発生する可能性がいくつかあり、すべてのOSがNFSのPOSIX ACLをサポートしているわけではありません。
SMB/CIFSは通常、ACLに問題はありません。それらを変更する必要がある場合、WindowsおよびUNIXライクのクライアントは、標準メカニズム(それぞれGUIおよびsetfacl)でSamba共有を変更できます。 UNIXのようなクライアントがWindowsファイルサーバー共有のACLのようなアクセス許可を変更できるかどうかはわかりません。
NFSv4にはACLが組み込まれています。
SMBとNFSはどちらも、ネットワーク接続を介してデータを移動するための単なる転送プロトコルです。プロトコルは、いかなる種類の認証も提供しません。認証を提供し、接続要求を許可/禁止するのは、共有をホストするサーバー次第です。