文件共享概述 NFS CIFS Samba
文件共享主流协议:NFS/CIFS,Samba是Linux上创建CIFS共享的工具
NFS是Linux间常用的共享协议
Linux服务端需要安装nfs-kernel-server
,服务名称nfs-kernel-server
别名nfs-server
,依赖服务rpcbind
,共享配置文件/etc/exports
NFS 服务器需要端口 111 2049 4045-4049
Linux客户端需要安装nfs-common
,通过mount
命令挂载使用,实际上nfs-common
安装出的是mount
的子命令mount.nfs
Windows通常不用做NFS服务端,不清楚是否支持
Windows客户端“启用或关闭Windows功能”中找到“NFS客户端”勾选并安装,通过mount命令挂载使用。
配置NFS服务器
通过NFS挂载的共享,如果指定了no_all_squash则权限按照与客户端登录的用户id相同id的服务端用户的权限计算,简直是乱来,所以我觉得应该始终指定
all_squash, root_squash,让所有访问者按照nobody:nogroup的权限计算
只读共享参考:
1 | /data *(insecure,ro,async,all_squash,root_squash,no_subtree_check) |
读写共享参考:
1 | /data 192.168.1.123(insecure,rw,sync,all_squash,root_squash,no_subtree_check) 192.168.1.124(insecure,rw,sync,all_squash,root_squash,no_subtree_check) |
NFS客户端挂载命令
1 | mount 172.17.0.2:/data <挂载点> |
CIFS是Windows默认的共享协议
Windows服务端依赖Windows的Server服务(默认存在并自动启动)
Windows客户端通过net use 命令使用,或者打开“此电脑”-计算机菜单-映射网络驱动器,或者直接在文件夹的地址栏输入共享路径即可。
Linux服务端需要安装samba
,服务名称smbd
,共享配置文件/etc/samba/smb.conf
samba 服务器需要端口 137-139 445
Linux客户端需要安装cifs-utils
,通过mount
命令挂载使用,实际上cifs-utils
安装出来的是mount
的子命令mount.cifs
配置Samba服务器
首先需要添加Samba服务器的用户,这个用户同时必须已经是系统用户,这里我们新建系统用户samba
1 | useradd samba |
将samba添加为Samba服务器用户
1 | smbpasswd -a samba |
在配置文件/etc/samba/smb.conf
追加
1 | [data] |
Samba客户端挂载命令
游客
1 | mount //172.17.0.2/data <挂载点> -ouser=guest,pass= |
其他用户
1 | mount //172.17.0.2/data <挂载点> -ouser=samba,pass=<密码> |
在Windows 上可以用net use来挂载Linux的Samba共享就像挂载Windows的共享一样。
1 | net use X: \\172.17.0.2\data <密码> /user:samba |
PS:虽然Windows可以安装NFS客户端来访问Linux的NFS共享,但是不稳定,推荐还是在Linux用samba做共享,如果只在Linux间共享可以用NFS。而且samba有着更完善的权限控制,可以用配置文件指定通过共享创建的文件或文件夹的owner和权限,并且可以通过带有通配符的ip指定访问黑名单或白名单,同时允许通过密码访问或仅限制IP访问。而NFS似乎只能通过IP指定访问权限而不能通过用户+密码的方式,并且只能指定创建出文件的owner不能指定权限。