任何人都可以简单描述一下SMBauthentication和NFS v.3authentication最大的区别是什么?
我认为在SMB中是基于用户的login名和密码,而在NFS中则是基于主机authentication。
你基本上有它。
SMB / CIFS基于某种types的用户凭据(无论它们是KRB令牌,用户/密码对还是您拥有的),在每个会话中将每个会话映射到一个用户。 NFSv3使用基于主机的身份validation,给定远程计算机的所有用户共享相同的连接。 SMB / CIFS,特别是Samba的实现,也允许基于主机的允许/拒绝,如果你需要的function; 窗口文件服务器可能也是如此,如果不在文件服务器子系统中,防火墙将处理它。
SMB / CIFS还实施共享身份validation,其中共享拥有自己的密码。
可以将NFSv4configuration为通过Kerberos使用每个用户的身份validation。
NFSv3强烈依赖于远程计算机,通过希望远程发送请求中真实的,跨机器一致的数字ID来强制执行权限,而SMB / CIFS根据连接(会话) – 经过身份validation的远程用户对本地磁盘执行权限。
因此,在NFSv3中,如果用户在远程机器上具有root用户,他们通常(即默认情况下)对整个NFSv3共享拥有只读的根访问权限,并且可以模拟任何其他用户标识。 对于共享单用户机器,NFS具有all_squash作为解决方法,但是这是每个IP。
另一方面,大多数unix-like smb.mount实现(linux pre-3.3,freebsd,solaris)不支持系统范围的多会话(multiuser)挂载,因此挂载远程SMB文件系统时,系统会话为只有用户设置在安装,即。 所有用户都以在安装时设置的用户名的权限进行操作。 Linux 3.3及更高版本有cifscreds来减轻,并有FUSE SMB / CIFS实现可用。 正如所料,这对Windows客户端来说从来都不是问题。
同样在NFSv3中,您的数字UID必须精确映射:客户端计算机上的用户1001将被授予权限,如服务器上的用户1001; 没有文本用户名映射。 由于SMB / CIFS将ID绑定到会话,映射是自动的; 您的共享UID与您的凭据相匹配。
NFSv4拥有一个用于ID映射GSS域authentication用户的守护程序,但是如果您还没有部署GSS域,则可能更容易同步您的UID。
NFSv3及更早的版本可能有点简单,并且ACL支持(而且xattrs正确)。 NFS的“POSIX ACL”是在边带RPC(而不是主协议)中实现的,所以还有一些可能出错的东西,并不是所有的操作系统都支持NFS的POSIX ACL。
SMB / CIFS通常不会遇到ACL问题。 如果您需要修改它们,Windows和类似Unix的客户端可以使用其标准机制(分别为GUI和setfacl)修改Samba共享。 我不确定类Unix客户端是否可以修改Windows文件服务器共享上的类ACL权限。
NFSv4具有内置的ACL。
SMB和NFS都仅仅是用于通过networking连接移动数据的传输协议。 协议不提供任何forms的authentication。 这取决于承载共享的服务器提供身份validation以及允许/不允许连接请求。