# NFS
## 1.基本概念
```
网络文件系统--NFS是网络附加储存的一种,其功能允许客户端主机可以像访问本地存储一样通过网络访问服务器端文件。 主要用在 Linux和LInux系统之间提供共享存储。
```
## 2.操作实例
### 2.1 安装和配置基本的NFS共享目录
#### server
```
第一步:apt install nfs-kernel-server #安装服务
第二步:systemctl status nfs-server #查看服务状态信息
第三步:mkdir -p /nfs/yu #创建文件夹
第四步:echo "hello yu" >> /nfs/yu/1.txt #输入内容
第五步:vim /etc/exports #打开配置文件
/nfs/yu *(ro,no_subtree_check)
第六步:exportfs -av #使配置文件生效
```
#### client
```
第一步:apt install nfs-common #安装客户端测试
第二步:showmount -e 192.168.10.1 #查看此IP是否提供nfs挂载路径
第三步:mkdir /kk #创建文件夹
第四步:mount -t nfs 192.168.10.1:/nfs/yu /kk #将nfs挂载在/kk目录下
第五步:df -lh #查看挂载状态
第六步:mount | grep /kk #查看详细挂载信息
第七步:cd /kk #进入路径
第八步:touch 2.txt #尝试创建文件
touch: cannot touch '2.txt': Read-only file system
```
### 2.2 配置NFS共享支持可读写的目录
#### server
```
第一步:apt install nfs-kernel-server #安装服务
第二步:systemctl status nfs-server #查看服务状态信息
第三步:mkdir -p /nfs/yu #创建文件夹
第四步:echo "hello yu" >> /nfs/yu/1.txt #输入内容
第五步:chmod 777 /nfs/yu #赋予权限
第六步:vim /etc/exports #打开配置文件
/nfs/yu *(rw,sync,no_subtree_check)
第七步:exportfs -av #使配置文件生效
```
#### client
```
第一步:apt install nfs-common #安装客户端测试
第二步:showmount -e 192.168.10.1 #查看此IP是否提供nfs挂载路径
第三步:mkdir /kk #创建文件夹
第四步:mount -t nfs 192.168.10.1:/nfs/yu /kk #将nfs挂载在/kk目录下
第五步:df -lh #查看挂载状态
第六步:mount | grep /kk #查看详细挂载信息
第七步:cd /kk #进入路径
第八步:touch 2.txt #创建文件
第九步:ls -lh #查看创建的文件
```
### 2.3 NFS客户端和服务器端的用户映射
#### client
````
第一步:su - demo #切换用户为demo用户
第二步:cd /kk #进入路径
第三步:touch demo.txt #创建文件
第四步:ls -lh #查看拥有者和所属组
-rw-r--r-- 1 demo demo 0 Sep 11 12:48 demo.txt
第五步:exit #退出用户
第六步:cd /kk #进入路径
第七步:touch root.txt #创建文件
第八步:ls -lh #查看拥有者和所属组
-rw-r--r-- 1 nobody nogroup 0 Sep 11 12:52 root.txt
当你以普通用户创建文件时, 它对应的拥有者和所属组都是你自己
当你以root用户创建文件时,它对应的是nobody nogroup
````
### 2.4 取消nfs对于root用户的匿名映射
#### server
```
第一步:apt install nfs-kernel-server #安装服务
第二步:systemctl status nfs-server #查看服务状态信息
第三步:mkdir -p /nfs/yu #创建文件夹
第四步:echo "hello yu" >> /nfs/yu/1.txt #输入内容
第五步:chmod 777 /nfs/yu #赋予权限
第六步:vim /etc/exports #打开配置文件
/nfs/yu *(rw,sync,no_subtree_check,no_root_squash)
第七步:exportfs -av #使配置文件生效
```
#### client
```
第一步:apt install nfs-common #安装客户端测试
第二步:showmount -e 192.168.10.1 #查看此IP是否提供nfs挂载路径
第三步:mkdir /kk #创建文件夹
第四步:mount -t nfs 192.168.10.1:/nfs/yu /kk #将nfs挂载在/kk目录下
第五步:df -lh #查看挂载状态
第六步:mount | grep /kk #查看详细挂载信息
第七步:cd /kk #进入路径
第八步:touch root.txt.1 #创建文件
第九步:ls -lh #查看创建的文件
-rw-r--r-- 1 nobody nogroup 0 Sep 11 12:52 root.txt 对比拥有者和所属组的区别
-rw-r--r-- 1 root root 0 Sep 11 13:13 root.txt.1
```
### 2.5 配置,将所有用户都映射为某个指定的用户
#### server
```
第一步:apt install nfs-kernel-server #安装服务
第二步:systemctl status nfs-server #查看服务状态信息
第三步:mkdir -p /nfs/yu #创建文件夹
第四步:echo "hello yu" >> /nfs/yu/1.txt #输入内容
第五步:chmod 777 /nfs/yu #赋予权限
第六步:vim /etc/exports #打开配置文件
/nfs/yu *(rw,sync,no_subtree_check,all_squash,anonuid=1002,anongid=1002)
第七步:exportfs -av #使配置文件生效
```
#### client
```
第一步:apt install nfs-common #安装客户端测试
第二步:showmount -e 192.168.10.1 #查看此IP是否提供nfs挂载路径
第三步:mkdir /kk #创建文件夹
第四步:mount -t nfs 192.168.10.1:/nfs/yu /kk #将nfs挂载在/kk目录下
第五步:df -lh #查看挂载状态
第六步:mount | grep /kk #查看详细挂载信息
第七步:cd /kk #进入路径
第八步:touch 1.txt #创建文件
第九步:ls -lh #查看创建的文件
-rw-r--r-- 1 1002 1002 0 Sep 11 12:46 1.txt
```
### 2.6 自动挂载
#### client
```
第一步:vim /etc/fstab #打开配置文件
192.168.10.1:/nfs/yu /kk nfs4 defaults 0 0
第二步:mount -a #重新识挂载文件
```
#### 技能实践
```
1.自动挂载还有哪些方法
2.NFS的共享目录/nfs/public,实现所有用户可写,并权限映射到zhangsan.
3.NFS的共享目录/nfs/data,实现root用户可写,其他用户只读,并不映射为匿名用户。
4.配置客户端使用fstab实现重启后自动挂载nfs共享到/data目录
5.使用autofs实现访问时自动挂载nfs共享到/pub目录。
```
#### 扩展指引
```
1.NFS如何固定服务的随机端口
2.NFS配置文件的帮助文档man exports
```
# Samba服务
##### 1.基本概念
```
网络附加存储之samba,是用来让unxix系列的操作系统与微软Windows操作系统的SMB/CIFS网络协议做的链接的自由软件。
主要是用来Linux和windows之间进行数据库共享。 Linux 和Linux之间也可以。
```
### 2.基本的安装、配置
#### 只读
#### server
```
第一步:apt install samba #安装服务
第二步:systemctl status smbd #查看服务状态信息
第三步:vim /etc/samba/smb.conf
[public]
path = /share/yu #指定共享路径
read only = yes #只允许读
public = yes #是否隐藏目录
#退出保存
第四步:mkdir -p /share/yu #创建文件夹
第五步:cd /share/yu #进入路径
第六步:touch 1.txt #创建文件
第七步:systecmt restart smbd #重启服务
第八步:systecmt status smbd #查看服务状态信息
```
#### client
```
方法一:使用mount挂载
第一步:apt install cifs-utils -y #安装所需格式
第二步:mkdir /kk #创建文件夹
第三步:mount -t cifs //192.168.10.1/public /kk #挂载在/kk目录下
第四步:cd /kk #进入路径
第五步:ls #查看当前目录下的文件及文件夹
方法二:使用smbclient连接
第一步:apt install smbclient #安装测试工具
第二步:smbclient -U demo //192.168.10.1/public #-U指定用户
第三步:ls
方法三:Linux桌面连接
```
![1][1]
![2][2]
![3][3]
![4][4]
![5][5]
方法四:Windows连接
![6][6]
[1]: https://panfeng-biji.oss-cn-beijing.aliyuncs.com/oss/20211007145325.jpeg
[2]: https://panfeng-biji.oss-cn-beijing.aliyuncs.com/oss/20211007145356.jpeg
[3]: https://panfeng-biji.oss-cn-beijing.aliyuncs.com/oss/20211007145412.jpeg
[4]: https://panfeng-biji.oss-cn-beijing.aliyuncs.com/oss/20211007145430.jpeg
[5]: https://panfeng-biji.oss-cn-beijing.aliyuncs.com/oss/20211007145446.jpeg
[6]: https://panfeng-biji.oss-cn-beijing.aliyuncs.com/oss/20211007145515.jpeg
### 2.1 创建匿名可写的smb共享
#### server端
```
第一步:apt install samba #安装服务
第二步:systemctl status smbd #查看服务状态信息
第三步:vim /etc/samba/smb.conf
[public]
path = /share/yu #指定共享路径
read only = no #只允许读
或者writable = yes
public = yes #是否隐藏目录
#退出保存
第四步:mkdir -p /share/yu #创建文件夹
第五步:cd /share/yu #进入路径
第六步:touch 1.txt #创建文件
第七步:systecmt restart smbd #重启服务
第八步:systecmt status smbd #查看服务状态信息
第九步:chmod 777 /share/yu #赋予权限
```
#### client端
```
方法一:使用mount挂载
第一步:apt install cifs-utils -y #安装所需格式
第二步:mkdir /kk #创建文件夹
第三步:mount -t cifs //192.168.10.1/public /kk #挂载在/kk目录下
第四步:cd /kk #进入路径
第五步:touch 2.txt #创建文件
第六步:ls -lh #查看是否创建成功
方法二:使用smbclient连接
第一步:apt install smbclient #安装测试工具
第二步:touch 3.txt #创建文件
第三步:smbclient -U demo //192.168.10.1/public #-U指定用户
第四步:ls #查看文件及文件夹
第五步:put 3.txt #上传文件
第六步:ls #查看上传文件是否成功
```
### 2.2 基于用户验证的共享
#### server端
```
第一步:apt install samba #安装服务
第二步:adduser user01 #添加用户
第三步:adduser user02 #添加用户
第四步:vim /etc/samba/smb.conf #打开配置文件
[share]
path = /share/yu #共享路径
write list = user01 #只允许user01写入数据
valid users = user01,user02 #允许user01、user02进行读
#退出保存
第五步:mkdir -p /share/yu #递归创建文件夹
第六步:chown user01 /share/yu #更改拥有者
第七步:smbpasswd -a user01 #创建smb user01用户 赋予密码
第八步:smbpasswd -a user02 #创建smb user02用户 赋予密码
第九步:systemctl restart smbd #重启服务
```
#### client端
```
方法一:使用mount挂载
第一步:apt install cifs-utils -y #安装所需格式
第二步:mkdir /kk #创建文件夹
第三步:mount -t cifs -o user=user01 //192.168.10.1/share /kk #挂载在/kk目录下
第四步:cd /kk #进入路径
第五步:ls #查看当前目录下的文件及文件夹
第六步:touch user01.txt #创建文件
第七步:ls -lh #查看文件是否创建成功
第八步:umount /kk #取消挂载
第九步:mount -t cifs -o user=user02 //192.168.10.1/share /kk #使用user02进行挂载
第十步:cd /kk #进入路径
第十一步:ls -lh #查看当前文件及文件夹
第十二步:touch user02.txt #创建文件
touch: cannot touch 'user02.txt': Permission denied #报错提示,没有权限
第十三步:ls -lh #查看文件是否创建成功
方法二:使用smbclient连接
第一步:apt install smbclient #安装测试工具
第二步:touch user01.txt.1 #创建文件
第三步:smbclient -U user01 //192.168.10.1/share #-U指定用户
第四步:ls #查看当前文件及文件夹
第五步:put user01.txt.1 #上传文件
第六步:ls #查看上传文件成功
第七步:exit
第八步:touch user02.txt.1 #创建文件
第九步:smbclient -U user02 //192.168.10.1/share #使用user02登录用户
第十步:ls #查看当前文件及文件夹
第十一步:put user02.txt.1 #上传文件
NT_STATUS_ACCESS_DENIED opening remote file \user02.txt.1 #报错提示,没有权限
第十二步:ls #查看文件上传是否成功
```
#### 技能实践
```
1.共享/samba/public目录,支持匿名用户读写共享
2.共享/samb/doc目录,需要用户zhangsan,密码123456登录后,支持读写共享
3.在Linux系统下访问zhangsan用户家目录(默认已共享,访问时使用smb://192.168.10.1/zhangsan)
```
#### 扩展指引
```
共享目录/samba/exam 有如下需求:
1.user01用户对exam目录有读写的权限,并且可以查看,修改,删除所有目录上传的文件或文件夹。
2.user02、user03用户可以对exam目录有读写的权限,但只能查看,修改,删除自己的文件或文件夹。
3.user04用户对exam目录有只读的权限,对目录下文件没有任何权限。
4.所有用户的密码统一为123456
```
最后修改:2021 年 10 月 08 日
© 允许规范转载