Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。SMB后来也被微软称为CIFS,即公共internet文件系统。
SMB不仅被用于linux与windows之间的文件共享和打印共享,也可以用户linux与linux之间的在资源共享,由于NFS(网络文件系统),可以更好的完成LINUX与LINUX之间的数据共享。
组成Samba运行的有两个服务,一个是SMB,另一个是NMB;SMB是Samba 的核心启动服务,主要负责建立 Linux Samba服务器与Samba客户机之间的对话,验证用户身份并提供对文件和打印系统的访问,只有SMB服务启动,才能实现文件的共享,监听139 TCP端口;而NMB服务是负责解析用的,类似与DNS实现的功能,NMB可以把Linux系统共享的工作组名称与其IP对应起来,如果NMB服务没有启动,就只能通过IP来访问共享文件,监听137和138 UDP端口
[root@server ~]# yum install samba samba-common samba-client -y #安装samba服务,
samba:这个套件主要包含了 SAMBA 的主要 daemon档案 ( smbd 及 nmbd )、 SAMBA 的文件档 ( document )、以及其它与 SAMBA 相关的logrotate 设定文件及开机预设选项档案等;
samba-common:这个套件则主要提供了 SAMBA 的主要设定档(smb.conf) 、 smb.conf 语法检验的测试程序 ( testparm )等等;
samba-client:这个套件则提供了当 Linux 做为SAMBA Client 端时,所需要的工具指令,例如挂载 SAMBA 档案格式的执行档 smbmount等等。
已加载插件:langpacks
软件包 samba-common-4.1.1-31.el7.x86_64 已安装并且是最新版本
正在解决依赖关系
--> 正在检查事务
---> 软件包 samba.x86_64.0.4.1.1-31.el7 将被 安装
---> 软件包 samba-client.x86_64.0.4.1.1-31.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
................此处省略
完毕!
[root@server ~]# systemctl start smb #打开samba服务
[root@server ~]# systemctl enable smb #开机时自动重启samba服务
ln -s '/usr/lib/systemd/system/smb.service' '/etc/systemd/system/multi-user.target.wants/smb.service'
[root@server ~]# rpm -qa | grep samba #查看有关samba服务的安装包
samba-client-4.1.1-31.el7.x86_64 #客户端软件,主要提供linux主机作为客户端时,所需要的工具指令
samba-4.1.1-31.el7.x86_64 #服务器端软件,主要提供samba服务器的守护程序,共享文档,日志的轮替,开机默认选项
samba-common-4.1.1-31.el7.x86_64 #主要提供samba服务器的设置文件与设置文件语法检验程序
samba-libs-4.1.1-31.el7.x86_64
如果出现上面四个安装包,说明配置完成,否则,需要重新安装,执行命令:yum install samba samba-common samba-client -y (-y的意思是直接安装,不需要进行交互式)
[root@server ~]# systemctl stop firewalld #关闭防火墙
[root@server ~]# systemctl disable firewalld #重启时自动关闭防火墙
rm '/etc/systemd/system/basic.target.wants/firewalld.service'
rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'
使用Samba服务器需要防火墙开放以下端口
UDP 137
UDP 138
TCP 139
TCP 445
[root@server ~]# netstat -antlupe | grep smb #查看年samba服务的网络端口
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 0 49797 2753/smbd
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 0 49798 2753/smbd
tcp6 0 0 :::445 :::* LISTEN 0 49795 2753/smbd
tcp6 0 0 :::139 :::* LISTEN 0 49796 2753/smbd
安装samba服务
开启samba服务
关闭防火墙
检测,匿名用户登陆samba服务的信息进行查看,不能进行其他的操作
当Linux 主机想要藉由『网络上的芳邻』的功能来查看别台计算机所分享出来的目录与装置时,就可以使用smbclient 来查看啦!这个指令也可以使用在 SAMBA 主机上面,用来查看是否设定成功。
[root@client ~]# smbclient -L //172.25.254.218
Enter root's password:
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server Version 4.1.1)
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
Server Comment
--------- -------
Workgroup Master
--------- -------
smbpasswd:如果SAMBA 设定的较为严格,需要规定使用者的账号与密码,那么那个密码档案的建立就需要使用smbpasswd 来建置才可以,所以这个指令与建立 SAMBA 的密码有关
smbpasswd [options] [username] #smbpasswd的使用格式
-a 添加用户
-d 永久关闭用户
-e 永久开启用户
-i 信任网域帐号
-m 信任计算机帐号
-n 没有密码设置
-W 使用stdin ldap管理密码
-w PASSWORD ldap管理员密码
-x 删除用户
-R ORDER 名字解析顺序
添加用户
[root@server ~]# smbpasswd -a student #添加sam用户student
New SMB password: #输入密码
Retype new SMB password: #请再次输入密码
Added user student. #sam用户student添加成功
[root@server ~]# pdbedit -L #查看sam用户的信息
student:1000:Student User
[root@server ~]# useradd westos #建立westos用户
[root@server ~]# smbpasswd -a westos #添加westos用户为sam用户
New SMB password: #请输入密码
Retype new SMB password: #请再次输入密码
Added user westos.
[root@server ~]# pdbedit -x student #删除sam下的student用户
[root@server ~]# pdbedit -L #查看sam用户的信息,pdbedit 管理SAM数据库(Samba用户数据库)
#-a 用户名 建立 Samba 账户
#-x 用户名 删除 Samba 账户
#-L 列出账户列表
#-Lv 列出账户详细信息的列表
westos:1001: #由此可以看出student用户已经从sam用户中被删除
添加sam用户student
查看sam用户的信息
在本机上添加westos用户
添加sam用户westos
从sam用户中删除student用户
查看sam用户的相关信息
重新添加student用户到sam用户中
查看student用户是否已经成功添加到sam用户中去
在客户端进行登陆samba服务中的student用户,查看是否添加student成功,
[root@client ~]# smbclient -L //172.25.254.218 -U student #-U :指定具体的用户
Enter student's password: #请输入密码
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server Version 4.1.1)
student Disk Home Directories #由这一行我们可以看出samba服务添加student用户成功
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
Server Comment
--------- -------
Workgroup Master
--------- -------
[root@server ~]# getsebool -a | grep smb #查看smb的相关信息
smbd_anon_write --> off #sam匿名用户可写服务关闭
[root@server ~]# getsebool -a | grep samba #查看有关samba的布尔值
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_sandbox_use_samba --> off
virt_use_samba --> off
[root@server ~]# setsebool -P samba_enable_home_dirs on #打开sam用户可以访问自己的家目录的端口
[root@server ~]# getsebool -a | grep samba #查看是否已经打开
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> on #on代表已经打开
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_sandbox_use_samba --> off
virt_use_samba --> off
查看有关smb的布尔值
查看有关samba的布尔值
设定sam用户访问自己加目录的端口开启
查看允许访问用户家目录的端口是否已经打开
在客户端进行查看
[root@client ~]# smbclient //172.25.254.218/student -U student #登陆 samba服务的student用户,进行查看家目录下的信息
Enter student's password: #请输入密码
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls #查看家目录下的信息,可以进行下载,但不能进行创建,删除等操作
. D 0 Mon Jun 4 08:32:19 2018
.. D 0 Mon Jun 4 07:22:38 2018
.bash_logout H 18 Wed Jan 29 07:45:18 2014
.bash_profile H 193 Wed Jan 29 07:45:18 2014
.bashrc H 231 Wed Jan 29 07:45:18 2014
.ssh DH 0 Thu Jul 10 18:19:10 2014
.config DH 0 Thu Jul 10 40913 blocks of size 262144. 28585 blocks available
smb: \>
19:06:53 2014
[root@server ~]# vim /etc/samba/smb.conf #编辑samba服务的配置文件
89 workgroup = WESTOS #修改工作组即域名为westos
99 hosts allow = 172.25.254.118 #只允许172.25.254.218这台主机进行登陆samba服务
[root@server ~]# systemctl restart smb #重新启动samba服务
验证
在172.25.254.218这台主机上进行测试
在172.25.254.118这台主机上进行测试
在172.25.254.60这台主机上进行测试
[root@server ~]# vim /etc/samba/smb.conf #编辑配置文件
99 hosts deny = 172.25.254.118 #不允许172.25.254.118这台主机进行访问,其他主机都可以进行访问,
[root@server ~]# systemctl restart smb #重启服务
测试
(1)在172.25.254.228这台主机上进行测试
在172.25.254.118这台主机上进行测试
在172.25.254.60这台主机上进行测试
[root@server ~]# vim /etc/samba/smb.conf #编辑samba服务的配置文件
99 hosts deny = 172.25.254.118 #黑名单里有172.25.254.118这台主机
100
101 hosts allow = 172.25.254.118 #白名单里有172.25.254.118这台主机
[root@server ~]# systemctl restart smb #重新启动服务
测试
(1)在172.25.254.118这台主机上进行测试
(2)在172.25.254.60这台主机上进行测试
[root@server ~]# mkdir /westos #建立目录/westos
[root@server ~]# touch /westos/file /在/westos目录下建立文件file
[root@server ~]# vim /etc/samba/smb.conf #编辑samba服务的配置文件
321 [DIR] ##指定共享目录
322 comment = westos dir ##注释
323 path = /westos #路径
[root@server ~]# systemctl restart smb #重启服务
在172.25.254.118这台主机上进行测试
[root@client ~]# smbclient -L //172.25.254.218 #登陆172.25.254.218这台主机
Enter root's password: #请输入密码
Anonymous login successful
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]
Sharename Type Comment
--------- ---- -------
DIR Disk westos dir #目录已经被分享
IPC$ IPC IPC Service (Samba Server Version 4.1.1)
Anonymous login successful
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]
Server Comment
--------- -------
Workgroup Master
--------- -------
[root@server ~]# vim /etc/samba/smb.conf # 编辑配置文件
293 guest ok = yes #匿名用户可以登陆
296 map to guest = bad user
[root@server ~]# systemctl restart smb #重启服务
root@server ~]# semanage fcontext -a -t samba_share_t '/westos(/.*)?' #将/smbshare 的安全上下文修改为 samba_share_t
[root@server ~]# restorecon -FvvR /westos/ #更新目录安全上下文
检测
[root@client ~]# smbclient //172.25.254.218/DIR -U student
Enter student's password:
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
. D 0 Wed Jun 6 09:25:14 2018
.. D 0 Wed Jun 6 09:25:05 2018
file N 0 Wed Jun 6 09:25:14 2018
40913 blocks of size 262144. 28458 blocks available
[root@server ~]# vim /etc/samba/smb.conf #编辑samba服务的配置文家
325 browseable = no #设置不允许访问DIR
[root@server ~]# systemctl restart smb #重启服务
测试:不允许访问DIR目录
[root@client ~]# smbclient -L //172.25.254.218/DIR
Enter root's password:
Anonymous login successful
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server Version 4.1.1)
Anonymous login successful
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]
Server Comment
--------- -------
Workgroup Master
--------- -------
若配置文件/etc/samba/smb.conf中修改为下图的样子,那么可以访问DIR目录
325 browseable = yes #设置允许访问DIR
测试
[root@client ~]# smbclient -L //172.25.254.218/DIR
Enter root's password:
Anonymous login successful
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]
Sharename Type Comment
--------- ---- -------
DIR Disk westos dir
IPC$ IPC IPC Service (Samba Server Version 4.1.1)
Anonymous login successful
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]
Server Comment
--------- -------
Workgroup Master
--------- -------
(4)samba服务的其他的权限
324 browseable = yes #此权限若为no 则无法访问 DIR
325 writable = yes #允许所有人可写(前提是对DIR有写的权限)
326 #write list = +staff
#允许指定用户或用户组可写(前提是该用户或者用户组对DIR有写的权限)
#后直接跟用户名称,若有+(@) 表示用户组
327 admin users = student #指定 smb 服务的访问管理用户
临时挂载samba服务中的student到/mnt目录下,那么在登陆时samba服务的student用户时,可以访问到家目录下会出现/mnt下所有内容
[root@client ~]# mount //172.25.254.218/student /mnt/ -o username=student,password=lee #临时挂载samba服务的student用户下到/mnt下
[root@client ~]# df #查看是否已经挂载
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/vda1 10473900 3186732 7287168 31% /
devtmpfs 469344 0 469344 0% /dev
tmpfs 484932 80 484852 1% /dev/shm
tmpfs 484932 12764 472168 3% /run
tmpfs 484932 0 484932 0% /sys/fs/cgroup
/dev/mapper/vg0-vo 483670 2356 451823 1% /home
//172.25.254.218/student 10473900 3156092 7317808 31% /mnt #由这一行我们可以看出//172.25.254.218/student这台主机已经挂载在/mnt下,
创建文件,并进行验证上述的结论是否为正确的
[root@client ~]# touch /mnt/file{1..5} 在/mnt下创建file1-5个文件,此时创建的真实路径并不是在/mnt下
[root@client ~]# ls /mnt #查看创建的文件是否存在
file1 file2 file3 file4 file5
登陆samba服务中的student用户,并进行查看刚才创建的文件是否存在。由下图可以看出/mnt下创建的文件自动的传送到student用户的家目录下
[root@client ~]# smbclient //172.25.254.218/student -U student #登陆samba服务中的student用户
Enter student's password: #请输入密阿曼
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
. D 0 Tue Jun 5 06:15:35 2018
.. D 0 Mon Jun 4 07:22:38 2018
.bash_logout H 18 Wed Jan 29 07:45:18 2014
.bash_profile H 193 Wed Jan 29 07:45:18 2014
.bashrc H 231 Wed Jan 29 07:45:18 2014
.ssh DH 0 Thu Jul 10 18:19:10 2014
.config DH 0 Thu Jul 10 19:06:53 2014
file1 N 0 Tue Jun 5 06:15:35 2018
file2 N 0 Tue Jun 5 06:15:36 2018
file3 N 0 Tue Jun 5 06:15:36 2018
file4 N 0 Tue Jun 5 06:15:36 2018
file5 N 0 Tue Jun 5 06:15:36 2018
40913 blocks of size 262144. 28583 blocks available
smb: \>
在server这台主机上进行,查找创建的文件的真实路径
[root@server ~]# cd /home/student/ #切换到家目录下的student用户中
[root@server student]# ls #查询创建的文件是否存在
file1 file2 file3 file4 file5 #由此可以看出我们刚才在/mnt下创建的文件,通过挂载的方式,实现了CIFS文件的共享
[root@client ~]# vim /etc/fstab #编辑挂载的配置文件
**编辑的内容**
//172.25.254.218/student /mnt cifs defaults,username=student,password=lee 0 0
[root@client ~]# mount -a #挂载
[root@client ~]# df #查看挂载的状态
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/vda1 10473900 3186752 7287148 31% /
devtmpfs 469344 0 469344 0% /dev
tmpfs 484932 80 484852 1% /dev/shm
tmpfs 484932 12764 472168 3% /run
tmpfs 484932 0 484932 0% /sys/fs/cgroup
/dev/mapper/vg0-vo 483670 2356 451823 1% /home
//172.25.254.218/student 10473900 3156720 7317180 31% /mnt #由这一行我们可以看出挂载成功
[root@client ~]# getenforce #查看SELINUX的状态
Enforcing #由这一行我们可以看出SELINUX的状态处于强制模式
进行验证是否通过挂载的方式实现文件共享
[root@client ~]# touch /mnt/test #创建文件test
[root@client ~]# ls /mnt #查看/mnt下是否由文件test
test
未挂载前
[root@client ~]# smbclient //172.25.254.218/student -U student #登陆student用户
Enter student's password: #请输入密码
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls #进行查看student用户的家目录下的相关信息
. D 0 Wed Jun 6 05:59:03 2018
.. D 0 Mon Jun 4 07:22:38 2018
.bash_logout H 18 Wed Jan 29 07:45:18 2014
.bash_profile H 193 Wed Jan 29 07:45:18 2014
.bashrc H 231 Wed Jan 29 07:45:18 2014
.ssh DH 0 Thu Jul 10 18:19:10 2014
.config DH 0 Thu Jul 10 19:06:53 2014
40913 blocks of size 262144. 28580 blocks available
smb: \> ^C
挂载后
[root@client ~]# smbclient //172.25.254.218/student -U student #登陆用户
Enter student's password: #请输入密码
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls #查看west文件是否成功共享
. D 0 Wed Jun 6 05:59:57 2018
.. D 0 Mon Jun 4 07:22:38 2018
.bash_logout H 18 Wed Jan 29 07:45:18 2014
.bash_profile H 193 Wed Jan 29 07:45:18 2014
.bashrc H 231 Wed Jan 29 07:45:18 2014
.ssh DH 0 Thu Jul 10 18:19:10 2014
.config DH 0 Thu Jul 10 19:06:53 2014
test N 0 Wed Jun 6 05:59:57 2018 #由这一行可以看出文件共享成功
40913 blocks of size 262144. 28580 blocks available
smb: \>
[root@client ~]# yum install cifs-utils -y #安装软件
Loaded plugins: langpacks
Resolving Dependencies
--> Running transaction check
---> Package cifs-utils.x86_64 0:6.2-6.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
cifs-utils x86_64 6.2-6.el7 rhel_dvd 83 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 83 k
Installed size: 174 k
Downloading packages:
cifs-utils-6.2-6.el7.x86_64.rpm | 83 kB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : cifs-utils-6.2-6.el7.x86_64 1/1
Verifying : cifs-utils-6.2-6.el7.x86_64 1/1
Installed:
cifs-utils.x86_64 0:6.2-6.el7
Complete!
[root@client ~]# vim /root/smbpass #编辑smbpass文件
编辑内容
username=student #samba服务的student用户
passwd=lee #student用户密码
[root@client ~]# umount /mnt/ 卸载/mnt
[root@client ~]# df #查看挂载的状态
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10473900 3196652 7277248 31% /
devtmpfs 469344 0 469344 0% /dev
tmpfs 484932 140 484792 1% /dev/shm
tmpfs 484932 12792 472140 3% /run
tmpfs 484932 0 484932 0% /sys/fs/cgroup
/dev/mapper/vg0-vo 483670 2339 451840 1% /home
[root@client ~]# mount -o credentials=/root /smbpass,sec=ntlmssp,multiuser //172.25.254.218/DIR /mnt #为了全起见,设置sam多用户挂载加密。 指定包含用户名和/或密码以及可选工作组名称的文件。该文件的格式为:
username=value #用户名
password=value #密码
domain=value #域名
这比在共享文件(如/etc/ fstabst)中使用明文密码要好。确保正确地保护任何凭证文件。
sec=ntlmssp
安全模式设置为 ntlmssp ,此模式选择看版本,
在v3.8之前,主线内核版本的默认值是sec=ntlm。在v3.8中,默认设置为sec=ntlmssp。
multiuser 多用户模式
[root@client ~]# df #查看是否已经挂载
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10473900 3196652 7277248 31% /
devtmpfs 469344 0 469344 0% /dev
tmpfs 484932 140 484792 1% /dev/shm
tmpfs 484932 12792 472140 3% /run
tmpfs 484932 0 484932 0% /sys/fs/cgroup
/dev/mapper/vg0-vo 483670 2339 451840 1% /home
//172.25.254.218/DIR 10473900 3153380 7320520 31% /mnt #由这一行可以看出已经挂载成功
[root@client ~]# cd /mnt #切换到/mnt目录下
[root@client ~]# touch /mnt/file{1..4} #在/mnt目录下创建文件file1到file4
[root@client ~]# ls /mnt/ #查看是否已经创建成功
file1 file2 file3 file4
[root@client mnt]# useradd linux #添加用户linux
[linux@client ~]$ cd /mnt #切换到/mnt目录下
[linux@client mnt]$ ls #此时没有权限查看
ls: reading directory .: Permission denied
[linux@client mnt]$ cifscreds add -u westos 172.25.254.218 #此后切换用户后,无法对smb进行查看,需要进行认证,通过 cifscreds
cifscreds 在内核密钥环中管理NTLM凭据
在另一用用户下执行:
cifscreds add [-u 用户名] smb主机IP
Password: 输入密码
[linux@client mnt]$ ls #然后 再进行/mnt的内容
file1 file2 file3 file4
[root@localhost ~]# vim /etc/samba/smb.conf #编辑samba服务的配置文件
guest ok = yes #允许匿名用户可以访问,
125 map to guest = bad user # #即让系统识别guest用户身份,为匿名用户
[DIR]
comment= westos dir #指定共享目录
path =/westos #注释
browseable = no #是否允许浏览
# writable = yes #是否可写
write list = @student ##允许写的名单
admin users = westos #指定 smb 超级用户
[root@localhost ~]# systemctl restart smb.service #重启服务
客户端
[root@client ~]# umount /mnt/ #卸载/mnt
[root@client ~]# df #查看挂载的状态
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10473900 3196672 7277228 31% /
devtmpfs 469344 0 469344 0% /dev
tmpfs 484932 140 484792 1% /dev/shm
tmpfs 484932 12792 472140 3% /run
tmpfs 484932 0 484932 0% /sys/fs/cgroup
/dev/mapper/vg0-vo 483670 2356 451823 1% /home
[root@client ~]# mount //172.25.254.218/DIR /mnt -o username=guest,password="" #挂载//172.25.254.218/DIR到/mnt 目录下,指定用户和密码
[root@client ~]# df #查看挂载的状态
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10473900 3196672 7277228 31% /
devtmpfs 469344 0 469344 0% /dev
tmpfs 484932 140 484792 1% /dev/shm
tmpfs 484932 12792 472140 3% /run
tmpfs 484932 0 484932 0% /sys/fs/cgroup
/dev/mapper/vg0-vo 483670 2356 451823 1% /home
//172.25.254.218/DIR 10473900 3157396 7316504 31% /mnt #已经成功挂载
[root@client ~]# ls /mnt
file1 file2 file3 file4
[root@client ~]# touch /mnt/file5 #创建文件没有权限
touch: cannot touch ‘/mnt/file5’: Permission denied
服务端
此时修改smb的配置文件
[root@localhost ~]# vim /etc/samba/smb.conf
327 # write list = @student
客户端
[root@client ~]# touch /mnt/file5 #重新创建文件
[root@client ~]# ls /mnt
file1 file2 file3 file4 file5
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
[root@localhost ~]# yum install nfs #安装nfs的安装包
Loaded plugins: langpacks
No Match for argument: nfs
Error: Nothing to do
[root@localhost ~]# systemctl start nfs #打开nfs服务
[root@localhost ~]# systemctl status nfs #查看nfs服务的状
[root@localhost ~]# systemctl stop firewalld #关闭防火墙
[root@localhost ~]# vim /etc/exports #编辑配置文件
/mnt *(sync,ro) #对/mnt下的所有内容同步并且只读(ro)
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
[root@localhost ~]# exportfs -rv #进行刷新
exporting *:/mnt
客户端
[root@client ~]# umount /mnt/ 卸载/mnt
[root@client ~]# mount 172.25.254.218:/mnt/ /mnt/ #挂载172.25.254.218:/mnt到/mnt目录下
[root@client ~]# cd /mnt/ #切换到/mnt下
[root@client mnt]# ls #查看目录下是否由文件
[root@client mnt]# touch file1 #创建file1文件
touch: cannot touch ‘file1’: Read-only file system #由这一行可以看出文件系统处于只读模式
安装nfs文件系统安装包
打开nfs服务,并显示nfs服务的状态,
由下图绿色部分可以看出,nfs服务已经打开
编辑exports文件
进行刷新
在客户端进行挂载
修改主机名称
查看挂载的状态,由下图可以看出挂载成功
测试:文件系统是否只读同步
由下图可以看出,无法在/mnt下创建文件,因为nfs是一个只读文件系统
服务端
[root@localhost ~]# vim /etc/exports #编辑文件内容
/mnt *(sync,rw) #/mnt下的所有内容进行同步并且读写
[root@localhost ~]# exportfs -rv #进行刷新
exporting *:/mnt
客户端
[root@client mnt]# touch file1 #创建文件
[root@client mnt]# ll /mnt #查看是否创建成功
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jun 2 04:47 file1 #表示创建成功
测试:
在我第一次创建文件时,显示权限不够,原因是在server这台主机里,只有自己才能在/mnt下的执行其他操作,其他人是不允许创建的,此时我们应考虑修改server这台主机里/mnt目录的权限
修改权限
重新创建文件测试是否成功
查看/mnt下的文件,由下图可以看文件file1所属的用户组都为nfs文件系统默认的组和用户
服务端
[root@localhost ~]# vim /etc/exports #编辑配置文件
/mnt *(sync,rw,no_root_squash) #/mnt下的所有内容进行同步读写,no_root_squash 当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的 root 管理员
[root@localhost ~]# exportfs -rv #刷新
exporting *:/mnt
客户端
[root@client mnt]# touch /mnt/file2 #创建文件file2
[root@client mnt]# ll
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jun 2 04:47 file1
-rw-r--r-- 1 root root 0 Jun 2 04:51 file2 #由此可以看出文件所属的用户和组都为root
服务端
[root@localhost ~]# vim /etc/exports #编辑配置文件
/mnt *(sync,rw,anonuid=1000,anongid=1000)
#共享目录 对所有用户共享(同步数据,读写权限,允许用户的用户ID,组ID)
[root@localhost ~]# exportfs -rv #进行刷新
exporting *:/mnt
客户端
[root@client mnt]# touch file3 #在/mnt目录下创建文件file3
[root@client mnt]# ll #查看是否已经存在file3文家
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jun 2 04:47 file1
-rw-r--r-- 1 root root 0 Jun 2 04:51 file2
-rw-r--r-- 1 student student 0 Jun 2 04:57 file3 #此时文件所属的组和用户已经被修改成uid=1000,gid=1000的student用户和student组
对172.25.254.118主机只赋予同步的权限,
对172.25.254.60主机赋予同步和读写的权限
[root@localhost ~]# vim /etc/exports #编辑配置文件
/mnt *(sync,rw,anonuid=1000,anongid=1000)
/westos 172.25.254.0/24(sync) 172.25.254.48(sync,rw)
# /westos 172.25.254.0/24(sync),对/westos目录下,只要是在172.25.254.0的网段,只允许同步,对172.25.254.48这台主机赋予文件同步并且读写的权限
[root@localhost ~]# exportfs -rv #刷新
exporting 172.25.254.48:/westos
exporting 172.25.254.0/24:/westos
exporting *:/mnt
172.25.254.118这台主机进行测试
[root@client ~]# umount /mnt/ #卸载/mnt下的东西
[root@client ~]# mount 172.25.254.218:/westos/ /mnt/ #挂载172.25.254.218:/westos目录到/mnt下
[root@client ~]# df #查看挂载的状态
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10473900 3196688 7277212 31% /
devtmpfs 469344 0 469344 0% /dev
tmpfs 484932 140 484792 1% /dev/shm
tmpfs 484932 12796 472136 3% /run
tmpfs 484932 0 484932 0% /sys/fs/cgroup
/dev/mapper/vg0-vo 483670 2356 451823 1% /home
172.25.254.218:/westos 10473984 3157248 7316736 31% /mnt #由这一行可以看出挂载成功
[root@client ~]# touch /mnt/file7 #创建文件时,没有权限
touch: cannot touch ‘/mnt/file7’: Read-only file system
在172.25.254.48这台主机上进行测试
[root@foundation48 ~]# mount 172.25.254.218:/westos/ /mnt/ #挂载172.25.254.218这台 主机的/westos目录到 /mnt 下
[root@foundation48 ~]# df #查看是否挂载成功
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 307974224 5878160 302096064 2% /
devtmpfs 1868076 0 1868076 0% /dev
tmpfs 1881152 488 1880664 1% /dev/shm
tmpfs 1881152 9012 1872140 1% /run
tmpfs 1881152 0 1881152 0% /sys/fs/cgroup
/dev/sda1 505580 149360 356220 30% /boot
tmpfs 376232 20 376212 1% /run/user/1000
172.25.254.218:/westos 10473984 3157248 7316736 31% /mnt #此时挂载成功
[root@foundation48 ~]# touch /mnt/file7 #创建file7文件
[root@foundation48 ~]# ll /mnt/ #查看是否已经创建
total 0
-rw-r--r-- 1 kiosk kiosk 0 Jun 2 15:41 file1
-rw-r--r-- 1 kiosk kiosk 0 Jun 2 15:41 file2
-rw-r--r-- 1 kiosk kiosk 0 Jun 2 15:41 file3
-rw-r--r-- 1 kiosk kiosk 0 Jun 2 15:41 file4
-rw-r--r-- 1 nobody nobody 0 Jun 2 16:34 file5
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jun 2 17:06 file7
服务端:重新启动nfs服务
[root@localhost ~]# vim /etc/exports #编辑配置文件
编辑内容
westos 172.25.254.0/24(sync,rw,no_root_squash) #在172.25.254这个网段对westos目录进行同步 ,可写,修改组为root
root_squash 当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的匿名用户
all_squash 同时将数据写入到内存与硬盘中,保证不丢失数据
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
/westos 172.25.254.0/24(sync)
[root@localhost ~]# exportfs -rv #刷新
exporting 172.25.254.0/24:/westos
[root@localhost ~]# getenforce #查看selinux的状态
Enforcing
[root@localhost ~]# systemctl start nfs #开启nfs服务
[root@localhost ~]# systemctl status nfs #查看nfs服务 是否开启
nfs-server.service - NFS Server
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled)
Active: active (exited) since Sat 2018-06-02 21:30:47 EDT; 1s ago
.............
[root@client mnt]# yum install autofs -y #首先安装autofs自动挂载的安装包
[root@client ~]# vim /etc/sysconfig/autofs #编辑配置文件,设定挂载的时间
13 TIMEOUT=5 #自动挂载时间设置为5s,默认情况下为300s
[root@client ~]# systemctl restart autofs.service #重新启动服务
[root@client ~]# cd /net/ #切换到/net下
[root@client net]# ls #查看,此时net目录下没有任何内容
[root@client net]# cd 172.25.254.218 #此时切换到172.25.254.218
[root@client 172.25.254.218]# ls
westos #此时在172.25.254.218目录下查看有westos目录
[root@client 172.25.254.218]# cd westos/ #切换到westos目录下
[root@client westos]# ls #查看westos目录下的文件
file1 file2 file3 file4 file5
[root@client westos]# pwd #显示当前路径
/net/172.25.254.218/westos
[root@client westos]# df #查看挂载的状态
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10473900 3200892 7273008 31% /
devtmpfs 469344 0 469344 0% /dev
tmpfs 484932 80 484852 1% /dev/shm
tmpfs 484932 12768 472164 3% /run
tmpfs 484932 0 484932 0% /sys/fs/cgroup
/dev/mapper/vg0-vo 483670 2356 451823 1% /home
172.25.254.218:/westos 10473984 3155840 7318144 31% /net/172.25.254.218/westos #已经成功i挂载
[root@client ~]# df #切换到跟目录下时,查看挂载的状态,由下面信息可以看出,刚才挂载的内容已经自动卸载
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10473900 3200900 7273000 31% /
devtmpfs 469344 0 469344 0% /dev
tmpfs 484932 80 484852 1% /dev/shm
tmpfs 484932 12768 472164 3% /run
tmpfs 484932 0 484932 0% /sys/fs/cgroup
/dev/mapper/vg0-vo 483670 2356 451823 1% /home
如果不能用showmount 挂在,并且切换到cd 172.25.254.218服务端的,目录下时报错,没有文件或目录,此时应考虑nfs服务是否重启动,
showmount #显示NFS服务器的挂载信息
-e #显示 NFS 服务器的共享列表
-a #显示本机挂载的文件资源的情况
-v #显示版本
创建目录westos及其file文件
编辑配置文件并且刷新
编辑的内容如下
查看SELINUX的布尔值即SELINUX的状态
安装nfs自动挂载的安装包
编辑自动挂载的配置文件
13 TIMEOUT=5
重新启动服务
进行临时自动挂载,这里要注意的是只要我们在使用westos目录,那么它就会一直挂载,
westos的真实路径
查看挂载的状态
[root@client ~]# vim /etc/auto.master
8 /nfs /etc/auto.westos
#/nfs 挂载的上一层目录
#auto.westos名字任意
[root@client ~]# vim /etc/auto.westos 编辑auto.westos文件
westos -ro 172.25.254.218:/westos
#挂载的具体位置 参数 id:/具体目录下的文件
[root@client ~]# systemctl restart autofs.service #重新启动服务
[root@client ~]# cd /nfs/ #进入上层目录
[root@client nfs]# ls 查看nfs目录下是否有文件或目录
[root@client nfs]# cd westos #进入挂载目录
[root@client westos]# df #查看是否已经进行挂在,由下面信息可以看出
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10473900 3200904 7272996 31% /
devtmpfs 469344 0 469344 0% /dev
tmpfs 484932 80 484852 1% /dev/shm
tmpfs 484932 12768 472164 3% /run
tmpfs 484932 0 484932 0% /sys/fs/cgroup
/dev/mapper/vg0-vo 483670 2356 451823 1% /home
172.25.254.218:/westos 10473984 3155840 7318144 31% /nfs/westos #由这一行可以看出已经成功挂载
[root@client ~]# mount #查看挂载的信息
....此处省略
172.25.254.218:/westos on /nfs/westos type nfs4 (ro,relatime,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.25.254.118,local_lock=none,addr=172.25.254.218)
实例
编辑/etc/auto.westos文件,并编辑文件内容
8 /nfs /etc/auto.westos
编辑/etc/auto.westos文件
westos -ro 172.25.254.218:/westos
查看磁盘的挂载状态
重新启动服务
切换到/nfs/westos目录下,进行使用时自动挂载,由下图可以看出/westos目录下有5个文件
查看磁盘的挂载状态//172.25.254.218:/westos挂载到/nfs/westos目录下
查看磁盘的挂载状态
磁盘的信息如下
创建文件file6时,此时报错,说file6无法创建,因为nfs是一个只读的文件系统
[root@client ~]# vim /etc/auto.westos #编辑自动挂载的文件
westos -rw 172.25.254.218:/westos #对westos目录及其目录里的内容进行读写,在172.25.254.218这台主机上的/westos目录下
[root@client ~]# systemctl restart autofs.service #重新启动服务
[root@client ~]# cd /nfs #切换到nfs服务的目录下
[root@client nfs]# ls #查看目录下的信息,此时nfs目录下没有任何东西
[root@client nfs]# cd westos #切换到westos目录下,另一曾含义就是挂载
[root@client westos]# ls #查看westos目录下的文件内容
file1 file2 file3 file4 file5
[root@client westos]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vda1 10473900 3200904 7272996 31% /
devtmpfs 469344 0 469344 0% /dev
tmpfs 484932 80 484852 1% /dev/shm
tmpfs 484932 12768 472164 3% /run
tmpfs 484932 0 484932 0% /sys/fs/cgroup
/dev/mapper/vg0-vo 483670 2356 451823 1% /home
172.25.254.218:/westos 10473984 3155840 7318144 31% /nfs/westos
[root@client ~]# mount #查看挂载的信息
.............
172.25.254.218:/westos on /nfs/westos type nfs4 (rw,relatime,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.25.254.118,local_lock=none,addr=172.25.254.218)
验证测试