系列文章目录
RHCE第0章:RHCE开始前的准备
RHCE第1章:Web服务器(上)
RHCE第1章:Web服务器(下)
RHCE第2章:DNS服务
RHCE第3章:DHCP服务器
RHCE第4章:Firewall服务、
RHCE第5章:SELinux
RHCE第6章:nfs网络文件系统
RHCE第7章:samba文件共享
文章目录
前言
这里简单说一些概念,百度来的。
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
简单来说,samba可以实现linux/unix/windows之前的数据传输,所以我在虚拟机上又装了一个win7系统,但可以两台虚拟机就是无法连接,这个博主在想一想。
一、samba的安装于配置
我现在拿chao1作为samba作为服务器端来共享文件。
1.samba安装
yum install samba
启动服务,注意服务名称是smb
systemctl start smb
2.配置防火墙
配置防火墙
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
3.创建共享文件
现在造几个文件夹啊,然后随便写的文件来做实验。
mkdir /share1
mkdir /share2
mkdir /share3
touch /share1/file{1..9}
touch /share2/file{11..19}
touch /share3/file{111..119}
然后创建几个系统用户来进行登陆访问。
useradd user1
useradd user2
useradd user3
4.添加samba用户
这里要使用smbpasswd命令,我们可以用-h来看一下。
说几个常用的。
-a是添加
-x是删除
-d是禁用
-e是解禁
添加的用户必须是已经创建好的系统用户我刚刚已经创建过了。
添加的时候需要设置samba密码,我就和用户名设置成一样的。
可以用以下命令查看结果。
pdbedit -L
5.编辑配置文件
vim /etc/samba/smb.conf
这里有一些写好的配置文件,不建议更改,直接后边追加就可以了。
在后边追加如下内容。
[s1]
comment = this is share1
path=/share1
public=no
browseable=yes
writable=yes
[share2]
comment = this is share2
path=/share2
public=no
browseable=no
writable=no
write list =user1
[share3]
comment = this is share3
path=/share3
public=no
browseable=yes
writable=no
write list = user1
valid users = user1
这里来解释一下,这三段分别是三个文件夹啊的权限控制。
[]里边是名称,随便写,
comment=介绍(随便写)
path=文件路径
public=no 不能匿名访问,要用samba用户
browseable=yes/no 能否看到文件夹
writable=yes/no 能否写入文件
write list = user1 特殊写权限
valid users = user1 特殊访问权限。
这样说还是比较空洞,用实验比较好理解。
重启服务。
本来这里想用win7演示一下,可以不知道什么原因连接不上,直接用chao2吧。
二、客户端的配置的使用
1.客户端安装
如果只要访问samba服务器而不共享自己的数据,只要装两个文件就行。
yum install samba-client cifs-utils
可以用以下命令查看要访问的服务器共享目录
smbclient -L //192.168.100.1
这里没有share2,因为share2的browseable=no,所以无法查看到文件夹。
连接共享文件夹。
用user3
smbclient -U user3 //192.168.100.1/s1
查看一下
可以发现这里无法查看,这是因为selinux对文件有限制,我们现在修改chao1
2.添加权限
getsebool -a | grep samba
查看到需要把指定权限打开.
setsebool -P samba_enable_home_dirs on
这还不够,我们还需要改一下share文件的上下文。将他改成samba的。
semanage fcontext -a -t samba_share_t '/share1(/.*)?'
semanage fcontext -a -t samba_share_t '/share2(/.*)?'
semanage fcontext -a -t samba_share_t '/share3(/.*)?'
restorecon -FRv /share1/
restorecon -FRv /share2/
restorecon -FRv /share3/
然后再用chao2访问
前边对share1的设置时允许所有人读写
尝试上传和下载
在连接前的同一个目录随便写个文件.
然后用put命令上传
上传失败,说明chao1依旧有限制,这是为什么呢?
share1的属主和属组都是root,user3权限不够。
给权限就可以了。
3.上传下载
setfacl -m u:user3:rwx /share1/
这就是添加成功。
然后再用chao1查看一下。
为了这个实验方便,我就一次性把权限都给出去了。
下载文件。
现在我们退出尝试访问share3
直接被拒绝,这是为什么呢。
前别设置share3只有user1有权限访问。
所以咱们现在用user1访问。
可以正常访问。
三、samba远程挂载
samba共享后一些命令和Linux不太一样,那么能不能直接把共享文件直接当作一个磁盘挂载到本机上呢?
1.直接挂载
mkdir /mnt/shar1
mount -t cifs -o username=user1,password=user1 //192.168.100.1/s1 /mnt/shar1/
直接将其当作一个磁盘就可以直接挂载,这样所有Linux命令就都可以使用了。
2.开机挂载
先把他卸载掉。
编写fstable
//192.168.100.1/s1 /mnt/share1 cifs username=user1,password=user1 0 0
这里还是有一些不安全,密码直接写到文件里,不好,现在卸掉,继续编写。
我们可以将密码写到另一个文件里,然后让系统开机去读取文件。
vim /etc/chaofile
挂载检测,没问题。
总结
本次samba分项目就到这里,深入挖掘应该还有多用户分,可惜博主还没搞懂,暂时先放下。