SAMBA、NFS共享区别
NFS开源文件共享程序:NFS(NetworkFile System)是一个能够将多台Linux的远程主机数据挂载到本地目录的服务,属于轻量级的文件共享服务,不支持Linux与 Windows系统间的文件共享。
Samba服务程序是一款基于SMB协议并由服务端和客户端组成的开源文件共享软件,实现了Linux与Windows系统间的文件共享。也可以实现Linux与Linux之间的共享服务。
SMB(Server Messages Block)协议:实现局域网内文件或打印机等资源共享服务的协议。
SAMBA共享服务配置
samba服务器:192.168.10.10 Linux客户端:192.168.10.20 Windows客户端:192.168.10.30
Samba配置文件说明:
服务器端安装Samba服务:yum install samba -y
浏览配置文件:cat/etc/samba/smb.conf 过滤掉注释
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
cat /etc/samba/smb.conf.bak | grep -v "#" | grep -v ";" | grep -v "^$" > /etc/samba/smb.conf
[global] | #全局参数。 | |
workgroup = MYGROUP | #工作组名称。 | |
server string = Samba Server Version %v | #服务器介绍信息,参数%v为显示SMB版本号。 | |
log file = /var/log/samba/log.%m | #定义日志文件存放位置与名称,参数%m为来访的主机名。 | |
max log size = 50 | #定义日志文件最大容量为50Kb。 | |
security = user | #安全验证的方式,总共有4种。 | |
#share:来访主机无需验证口令,更加方便,但安全性很差。 | ||
#user:需由SMB服务验证来访主机提供的口令后才可建立访问,更加的安全。 | ||
#server:使用独立的远程主机验证来访主机提供的口令(集中管理帐号)。 | ||
#domain:使用PDC来完成验证 | ||
passdb backend = tdbsam | #定义用户后台的类型,共有3种。 | |
#smbpasswd:使用SMB服务的smbpasswd命令给系统用户设置SMB密码。 | ||
#tdbsam:创建数据库文件并使用pdbedit建立SMB独立的用户。 | ||
#ldapsam:基于LDAP服务进行帐户验证。 | ||
load printers = yes | #设置是否当Samba服务启动时共享打印机设备。 | |
cups options = raw | #打印机的选项 | |
[homes] | #共享参数 | |
comment = Home Directories | #描述信息 | |
browseable = no | #指定共享是否在“网上邻居”中可见。 | |
writable = yes | #定义是否可写入操作,与"read only"相反。 | |
[printers] | #打印机共享参数 | |
comment = All Printers | ||
path = /var/spool/samba | #共享文件的实际路径(重要)。 | |
browseable = no | ||
guest ok = no | #是否所有人可见,等同于"public"参数。 | |
writable = no | ||
printable = yes |
参数 | 作用 |
[linuxprobe] | 共享名称为linuxprobe |
comment = Do not arbitrarily modify the database file | 警告用户不要随意修改数据库 |
path = /home/database | 共享文件夹在/home/database |
public = no | 关闭所有人可见 |
writable = yes | 允许写入操作 |
----------------------------------------------Linux服务器与Windows之间的共享实验(user口令验证)-------------------------------------
第1步:更改为user验证模式,后台用户类型为tdbsam
security = user
passdb backend = tdbsam
第2步:创建共享文件夹:
mkdir /database
第2步:描述共享文件夹信息。
在SMB服务主配置文件的最下面追加共享文件夹的配置参数:
[database]
comment = Do not arbitrarily modify the database file
path = /database
public = no
writable = yes
第3步:创建SMB服务独立的帐号。
SMB服务配置文件中密码数据库后台类型为"tdbsam",所以这个帐户和口令是Samba服务的独立帐号信息,我们需要使用pdbedit命令来创建SMB服务的用户数据库
pdbedit命令用于管理SMB服务的帐户信息数据库,格式为:“pdbedit [选项] 帐户”。
参数 | 作用 |
-a 用户名 | 建立Samba用户 |
-x 用户名 | 删除Samba用户 |
-L | 列出用户列表 |
-Lv | 列出用户详细信息的列表 |
先建立系统用户smbuser,再samba用户映射到系统用户:
useradd smbuser
此系统用户提升为SMB用户:
[root@linuxprobe ~]# pdbedit -a -u smbuser
new password:设置SMB服务独立的密码
retype new password:
Unix username: smbuser
NT username:
Account Flags: [U ]
User SID: S-1-5-21-4146456071-3435711857-2069708454-1000
Primary Group SID: S-1-5-21-4146456071-3435711857-2069708454-513
Full Name:
Home Directory: \linuxprobesmbuser
HomeDir Drive:
Logon Script:
Profile Path: \linuxprobesmbuserprofile
Domain: LINUXPROBE
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Wed, 06 Feb 2036 23:06:39 CST
Kickoff time: Wed, 06 Feb 2036 23:06:39 CST
Password last set: Sat, 11 Jul 2015 18:27:04 CST
Password can change: Sat, 11 Jul 2015 18:27:04 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
第4步:允许防火墙和SELinux设置:命令
iptables -F
service iptables save
chown -Rf smbuser:smbuser /database
setsebool -P samba_enable_home_dirs on
semanage fcontext -a -t samba_share_t /database
restorecon -Rv /database/
第5步:验证
-------------------------------------------------------------Linux与Linux之间的共享---------------------------------------------------------------
第3步:在root家目录创建认证文件(依次为SMB用户名、SMB用户密码、SMB共享域):
第6步:验证
NFS共享
第1步:创建NFS服务端的共享目录。
清空iptables iptables -F service iptables save
创建nfsfile共享目录:mkdir /nfsfile
为共享目录设置权限(让其他人可以有写入权限):chmod -Rf 777 /nfsfile
写入一个文件,用于NFS客户端读取:echo "welcome to linuxprobe.com" > /nfsfile/readme
NFS服务端配置文件是"/etc/exports"
[root@linuxprobe ~]# vim /etc/exports
//格式为:共享目录的绝对路径 允许访问NFS资源的客户端(权限参数)
/nfsfile 192.168.10.*(rw,sync,root_squash)
NFS配置共享的参数有:
参数 | 作用 |
ro | 只读默认 |
rw | 读写模式 |
root_squash | 当NFS客户端使用root用户访问时,映射为NFS服务端的匿名用户。 |
no_root_squash | 当NFS客户端使用root用户访问时,映射为NFS服务端的root用户。 |
all_squash | 不论NFS客户端使用任何帐户,均映射为NFS服务端的匿名用户。 |
sync | 同时将数据写入到内存与硬盘中,保证不丢失数据。 |
async | 优先将数据保存到内存,然后再写入硬盘,效率更高,但可能造成数据丢失。 |
第2步:启动NFS服务端
红帽RHEL7系统中RPC服务已经默认运行(active)了,所以无需再配置RPC服务啦
直接启动NFS服务端
systemctl start nfs-server
systemctl enable nfs-server
第3步:配置NFS客户端
查询远程NFS服务端中可用的共享资源:(showmount命令用于查询NFS服务端共享信息,格式为:“showmount [参数] [远程主机])
参数 | 作用 |
-e | 显示NFS服务端的共享列表 |
-a | 显示本机挂载NFS资源的情况 |
-v | 显示版本号 |
[root@linuxprobe ~]# showmount -e 192.168.10.10
Export list for 192.168.10.10:
/nfsfile (everyone)
创建本地挂载目录: mkdir /nfsfile
挂载: mount -t nfs 192.168.10.10:/nfsfile /nfsfile
查看到刚刚写入文件内容:cat /nfsfile/readme
开机后自动将NFS资源挂载到本地,可以通过修改fstab文件来实现
[root@linuxprobe ~]# vim /etc/fstab
192.168.10.10:/nfsfile /nfsfile nfs defaults 0 0
Autofs自动挂载
5、重启autofs服务:
6、验证:
进入自动挂载目录中: