文件共享概述 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
2
3
4
5
6
7
8
9
10
11
12
13
[data]
common = Shared Data
path = /data # 共享路径
workgroup = WORKGROUP # 和WINDOWS工作组一致,从局域网内其他WINDOWS系统的属性可以看到
public = yes # 是否允许游客访问
guest account = nobody # 游客用户
browseable = yes # 是否允许列出文件
writable = yes # 是否可写
write list = samba # 具有写权限的用户(多用户空格分割)
create mask = 0777 # 创建文件时赋权,相当于执行chmod
directory mask = 0777
force user = nobody # 创建文件时强制所有者,相当于执行chown
force group = nogroup

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不能指定权限。