AMBA文件共享服务
Samba是一款开源的文件共享软件,经过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作。
安装Samba服务程序:yum install -y samba。
Samba服务的主配置文件:/etc/samba/smb.conf。
例1:配置Samba服务前,先删掉Samba服务主配置文件中的注释和空行。
通过grep命令,添加-v参数(反向选择),分别去掉所有以井号(#)和分号(;)开头的注释信息行,对于剩余的空白行可以使用^$参数来表示并进行反选过滤,最后把过滤后的可用参数信息通过重定向符覆盖写入到原始文件名称中。
cd/et/samba
cat smb.conf #过滤注释行和空行前,查看samba主配置文件,有300多行
mv smb.conf smb.conf_bak #将samba主配置文件smb.conf重命名为smb.conf_bak
grep -v "#" smb.conf_bak | grep -v ";" | grep -v "^$" > smb.conf #过滤掉smb.conf_bak文件的注释行和空行,再把剩余的信息重定向到smb.conf
cat smb.conf #查看过滤注释行和空行后的smb.conf文件,只有20行。
编辑smb.conf 留下前七行,删掉其他的,在后面加
[linux]
comment = ni hao
path = /home/laoi
public = no
writable = yes
给用户加密码
给用户读写权限
在物理机win+r写入\192.168.3.10
进去之后创建新文件里放一个新的文档,文档里面写入内容
查看实验是否成功(进入虚拟机)
在home文件下有刚创的新的文件有内容
Linux挂载共享
上面的实验操作可能会误以为Samba服务程序只是为了解决Linux系统和Windows系统的资源共享问题而设计的。其实,Samba服务程序还可以实现Linux系统之间的文件共享。
Linux就该这么学—Thirteen 使用Samba或NFS实现文件共享
木子~忘忧 2019-08-04 11:49:44 150 收藏
分类专栏: Linux
版权
SAMBA文件共享服务
Samba是一款开源的文件共享软件,经过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作。
安装Samba服务程序:yum install -y samba。
Samba服务的主配置文件:/etc/samba/smb.conf。
例1:配置Samba服务前,先删掉Samba服务主配置文件中的注释和空行。
通过grep命令,添加-v参数(反向选择),分别去掉所有以井号(#)和分号(;)开头的注释信息行,对于剩余的空白行可以使用^$参数来表示并进行反选过滤,最后把过滤后的可用参数信息通过重定向符覆盖写入到原始文件名称中。
cd /etc/samba
cat smb.conf #过滤注释行和空行前,查看samba主配置文件,有300多行
mv smb.conf smb.conf_bak #将samba主配置文件smb.conf重命名为smb.conf_bak
grep -v “#” smb.conf_bak | grep -v “;” | grep -v “^$” > smb.conf #过滤掉smb.conf_bak文件的注释行和空行,再把剩余的信息重定向到smb.conf
cat smb.conf #查看过滤注释行和空行后的smb.conf文件,只有20行。
1
2
3
4
5
Samba服务程序中的参数以及作用
[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:需验证来访主机提供的口令后才可以访问;提升了安全性
#server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)
#domain:使用域控制器进行身份验证
passdb backend = tdbsam #定义用户后台的类型,共有3种
#smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码
#tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户
#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
配置共享资源
Samba服务程序的主配置文件与Apache服务很相似,包括全局配置参数和区域配置参数。全局配置参数用于设置整体的资源共享环境,对里面的每一个独立的共享资源都有效。区域配置参数则用于设置单独的共享资源,且仅对该资源有效。创建共享资源的方法很简单,只要将下表中的参数写入到Samba服务程序的主配置文件中,然后重启该服务即可。
用于设置Samba服务程序的参数以及作用
参数 作用
[database] 共享名称为database
comment = Do not arbitrarily modify the database file 警告用户不要随意修改数据库
path = /home/database 共享目录为/home/database
public = no 关闭“所有人可见”
writable = yes 允许写入操作
在RHEL 7系统中,Samba服务程序默认使用的是用户口令认证模式(user)。这种认证模式可以确保仅让有密码且受信任的用户访问共享资源,而且验证过程也十分简单。不过,只有建立账户信息数据库之后,才能使用用户口令认证模式。另外,Samba服务程序的数据库要求账户必须在当前系统中已经存在,否则日后创建文件时将导致文件的权限属性混乱不堪,由此引发错误。
pdbedit命令用于管理SMB服务程序的账户信息数据库,格式为“pdbedit [选项] 账户”。在第一次把账户信息写入到数据库时需要使用-a参数,以后在执行修改密码、删除账户等操作时就不再需要该参数了。pdbedit命令中使用的参数以及作用如表所示。
参数 作用
-a 用户名 建立Samba用户
-x 用户名 删除Samba用户
-L 列出用户列表
-Lv 列出用户详细信息的列表
例2:在例1基础上,配置samba服务共享文件夹
#1.创建用于访问共享资源的账户信息。账户必须在当前系统已经存在
id linuxprobe #确认用户linuxprobe是否存在
pdbedit -a -u linuxprobe #生成账户信息数据库,添加一名用户,以供samba共享文件夹的登录验证
new password:此处输入该账户在Samba服务数据库中的密码
retype new password:再次输入密码进行确认
#2.创建用于共享资源的文件目录。在创建时,不仅要考虑到文件读写权限的问题,还需要考虑应用于该目录的SELinux安全上下文所带来的限制。
mkdir /home/niubi chown -Rf linuxprobe:linuxprobe /home/niubi
semanage fcontext -a -t samba_share_t /home/niubi
restorecon -Rv /home/niubi
#3。设置SELinux服务与策略,使其允许通过Samba服务程序访问普通用户家目录。
getsebool -a | grep samba
setsebool -P samba_enable_home_dirs on
#4.在Samba服务程序的主配置文件中,追加共享文件夹配置参数信息。
vim /etc/samba/smb.conf
…
[share_dir]
comment = heheda
path = /home/niubi
public = no
writable = yes
#5.重启Samba服务并加入开机启动项。为避免防火墙妨碍,清空iptables防火墙。
systemctl restart smb
systemctl enable smb
iptables -F
service iptables save
#1.创建用于访问共享资源的账户信息。账户必须在当前系统已经存在
id linuxprobe #确认用户linuxprobe是否存在
pdbedit -a -u linuxprobe #生成账户信息数据库,添加一名用户,以供samba共享文件夹的登录验证
new password:此处输入该账户在Samba服务数据库中的密码
retype new password:再次输入密码进行确认
#2.创建用于共享资源的文件目录。在创建时,不仅要考虑到文件读写权限的问题,还需要考虑应用于该目录的SELinux安全上下文所带来的限制。
mkdir /home/niubi chown -Rf linuxprobe:linuxprobe /home/niubi
semanage fcontext -a -t samba_share_t /home/niubi
restorecon -Rv /home/niubi
#3。设置SELinux服务与策略,使其允许通过Samba服务程序访问普通用户家目录。
getsebool -a | grep samba
setsebool -P samba_enable_home_dirs on
#4.在Samba服务程序的主配置文件中,追加共享文件夹配置参数信息。
vim /etc/samba/smb.conf
...
[share_dir]
comment = heheda
path = /home/niubi
public = no
writable = yes
#5.重启Samba服务并加入开机启动项。为避免防火墙妨碍,清空iptables防火墙。
systemctl restart smb
systemctl enable smb
iptables -F
service iptables save
Windows挂载共享
无论Samba共享服务是部署Windows系统上还是部署在Linux系统上,通过Windows系统进行访问时,其步骤和方法都是一样的。下面假设Samba共享服务部署在Linux系统上,并通过Windows系统来访问Samba服务。Samba共享服务器和Windows客户端的IP地址可以根据下表来设置。
主机名称 操作系统 IP地址
Samba共享服务器 RHEL 7 192.168.10.10
Linux客户端 RHEL 7 192.168.10.20
Windows客户端 Windows 7 192.168.10.30
要在Windows系统中访问共享资源,只需在Windows的“运行”命令框中输入两个反斜杠,然后再加服务器的IP地址即可,如图所示
在这里插入图片描述
由于Windows系统的缓存原因,有可能在第二次登录时提供了正确的账户和密码,依然会报错,这时只需要重新启动一下Windows客户端就没问题了
Linux挂载共享
上面的实验操作可能会误以为Samba服务程序只是为了解决Linux系统和Windows系统的资源共享问题而设计的。其实,Samba服务程序还可以实现Linux系统之间的文件共享。
Linux客户端需要安装支持文件共享服务的软件包:yum install -y cifs-utils
#1.按照Samba服务的用户名、密码、共享域的顺序将相关信息写入到一个认证文件中,降低文件权限提高安全性。
vim /root/auth.smb
username=linuxprobe #samba账户
password=redhat #samba账户密码
domain=MYGROUP #与samba主配置文件中的对应参数要一致
chmod -Rf 600 auth.smb
#2.创建一个用于挂载Samba服务共享资源的目录,并把挂载信息写入到/etc/fstab文件中以永久挂载。
mkdir /haha
vim /etc/fstab
...
//192.168.10.10/share_dir /muzi cifs credentials=/root/auth.smb 0 0 #把服务端的共享文件夹挂载到客户端的/liwh目录里,共享文件夹格式为cifs,权限设置为以认证文件进行验证
mount -a
客户端成功查看