【简介】- 摘自Wiki
网络文件系统(英语:Network File System,缩写为NFS)是一种分布式文件系统协议,最初由Sun Microsystems公司开发,并于1984[1]年发布。其功能旨在允许客户端主机可以像访问本地存储一样通过网络访问服务器端文件。 NFS和其他许多协议一样,是基于开放网络运算远程过程调用(ONC RPC) 协议之上的。
NFS是一个开放、标准的RFC协议,任何人或组织都可以依据标准实现它。Samba, 是种用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协议做链接的自由软件。第三版不仅可访问及分享SMB的文件夹及打印机,本身还可以集成入Windows Server的网域,扮演为网域控制站(Domain Controller)以及加入Active Directory成员。简而言之,此软件在Windows与UNIX系列OS之间搭起一座桥梁,让两者的资源可互通有无。
【服务器环境】
系统:
- Ubuntu 16.04.1 Desktop
地址:
- NFS(version 3) - 192.168.2.71
- Samba(4.3.11) - 192.168.2.70
【安装配置NFS - 在192.168.2.71下】
1. NFS安装
$sudo apt-get install nfs-kernel-server # nfs服务端
$sudo apt-get install nfs-common # nfs客户端
2. NFS配置
(1) 设置共享的文件目录,在此设置为/home/share并修改其属性
$sudo mkdir /home/share #在/home/下新建共享文件夹
$sudo chmod 777 /home/share #修改挂载点属性
(2) 配置/etc/exports
$sudo vim /etc/exports
在最后添加如下内容:
/home/share *(rw,sync,no_root_squash)
其中 * 表示允许所有网段访问,括号内配置说明如下:
该配置说明内容摘自:http://renlifeng.blog.51cto.com/2076113/871461
ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享
async NFS在写入数据前可以相应请求
secure NFS通过1024以下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
Hide 在NFS共享目录中不共享其子目录
no_hide 共享NFS目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squas root用户具有根目录的完全管理访问权限
anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID
3. NFS重启
$sudo service rpcbind restart
$sudo service nfs-kernel-server restart
4. 在本机测试NFS
在命令行下输入:
$showmount -e
会输出显示共享目录地址。
至此,NFS服务器安装配置完成。
【安装配置Samba - 在192.168.2.70下】
1. Samba安装
$sudo apt-get install samba #Samba服务端
$sudo apt-get install samclient #Samba客户端
2. Samba配置
(1) 设置共享的文件目录,在此设置为/home/share并修改其属性
$sudo mkdir /home/share #在/home/下新建共享文件夹
$sudo chmod 777 /home/share #修改挂载点属性
(2) 配置/etc/samba/smb.conf
$sudo vim /etc/samba/smb.conf
在最后添加如下内容:
[share]
comment = Samba File Server
path = /home/share
browseable = yes
read only = no
配置说明如下:
该配置说明内容摘自:http://m.blog.csdn.net/article/details?id=19191957
[share] # 该共享的共享名
comment = smb share test # 该共享的备注
path = /home/share # 共享路径
allow hosts = host(subnet) # 设置该Samba服务器允许的工作组或者域
deny hosts = host(subnet) # 设置该Samba服务器拒绝的工作组或者域
available = yes|no # 设置该共享目录是否可用
browseable = yes|no # 设置该共享目录是否可显示
writable = yes|no # 指定了这个目录缺省是否可写,也可以用readonly = no来设置可写
public = yes|no # 指明该共享资源是否能给游客帐号访问,guest ok = yes其实和public = yes是一样的
user = user, @group # user设置所有可能使用该共享资源的用户,也可以用@group代表group这个组的所有成员,不同的项目之间用空格或者逗号隔开
valid users = user, @group # 指定能够使用该共享资源的用户和组
invalid users = user, @group # 指定不能够使用该共享资源的用户和组
read list = user, @group # 指定只能读取该共享资源的用户和组
write list = user, @group # 指定能读取和写该共享资源的用户和组
admin list = user, @group # 指定能管理该共享资源(包括读写和权限赋予等)的用户和组
hide dot files = yes|no # 指明是否像UNIX那样隐藏以“.”号开头的文件
create mode = 0755 # 指明新建立的文件的属性,一般是0755
directory mode = 0755 # 指明新建立的目录的属性,一般是0755
sync always = yes|no # 指明对该共享资源进行写操作后是否进行同步操作
short preserve case = yes|no # 指明是否区分文件名大小写
preserve case = yes|no # 指明是否保持大小写
case sensitive = yes|no # 指明是否对大小写敏感,一般选no,不然可能引起错误
mangle case = yes|no # 指明混合大小写
default case = upper|lower # 指明缺省的文件名是全部大写还是小写
force user = testuser # 强制把建立文件的属主是谁。如果我有一个目录,让guest可以写,那么guest就可以删除,如果我用force user= testuser强制建立文件的属主是testuser,同时限制create mask = 0755,这样guest就不能删除了
wide links = yes|no # 指明是否允许共享外符号连接,比如共享资源里面有个连接指向非共享资源里面的文件或者目录,如果设置wide links = no将使该连接不可用
max connections = 100 # 设定最大同时连接数
delete readonly = yes|no # 指明能否删除共享资源里面已经被定义为只读的文件
3. Samba重启
$sudo service smbd restart
5. 在本机测试Samba
在命令行下输入:
$smbclient -L //localhost/share
输出结果如下图:
至此,Samba服务器安装配置完成。