web-dev-qa-db-ja.com

SMB vs NFS認証

SMB認証とNFS v.3認証の最大の違いは何ですか?

SMBでは、ユーザーのログインとパスワードに基づいていますが、NFSではホスト認証に基づいていると思います。

3
TheOpti

あなたは基本的にそれを持っています。

ユーザーvsマシンvs共有認証

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クライアントの問題ではありませんでした。

IDマッピング

また、NFSv3では、数値UIDが正確にマッピングされている必要があります。クライアントマシンのユーザー1001には、サーバーのユーザー1001として権限が付与されます。テキストによるユーザー名のマッピングはありません。 SMB/CIFSはIDをセッションにバインドするため、マッピングは自動的に行われます。共有UIDは資格情報と一致します。

NFSv4には、GSSドメインで認証されたユーザーをIDマッピングするためのデーモンがありますが、GSSドメインをまだデプロイしていない場合は、UIDを同期する方が簡単です。

ACL

NFSv3とそれ以前のバージョンは、ACLをサポートしているので少しおおざっぱかもしれません(そしてxattrsはすぐに使える)。 NFSの「POSIX ACL」はサイドバンドRPC(メインプロトコルではない)に実装されているため、問題が発生する可能性がいくつかあり、すべてのOSがNFSのPOSIX ACLをサポートしているわけではありません。

SMB/CIFSは通常、ACLに問題はありません。それらを変更する必要がある場合、WindowsおよびUNIXライクのクライアントは、標準メカニズム(それぞれGUIおよびsetfacl)でSamba共有を変更できます。 UNIXのようなクライアントがWindowsファイルサーバー共有のACLのようなアクセス許可を変更できるかどうかはわかりません。

NFSv4にはACLが組み込まれています。

12
Andrew Domaszek

SMBとNFSはどちらも、ネットワーク接続を介してデータを移動するための単なる転送プロトコルです。プロトコルは、いかなる種類の認証も提供しません。認証を提供し、接続要求を許可/禁止するのは、共有をホストするサーバー次第です。

2
Wes Sayeed