Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

实验准备

  • 两台虚拟机,Windows7和linux(Red Hat Enterprise 6.5)
  • Linux作为服务器,Windows 7 作为客户端
  • 为Linux虚拟机安装samba软件(rpm安装)
  • 配置网络使得两台虚拟机实现互ping

实验开始

本次实验包含三个部分,匿名用户访问,本地用户访问,虚拟用户访问。

匿名用户访问

配置文件在修改的过程中有可能会出错,我们能在对配置文件修改之前可以为其创建一个备份文件,避免后顾之忧。

mv smb.conf smb.conf.bak                     //mv用来对文件或目录重命名,或者移动文件从一个目录到另一个目录,此处为重命名
grep -v "#" smb.conf.bak > smb.conf    //反向过滤配置文件中带有“#“的注释内容,重定向到smb.conf中

过滤掉无用的注释文件之后,对配置文件做更改就方便多了。

security = share           //由于是匿名匿名用户访问,我们将user改为share

在文件的末尾有针对不同访问模式的模板可供使用。
在进行共享之前我们先创建一个用于共享的文件夹,并更改文件夹的属性,使所有人都能对其做操作。
Samba文件共享
下面就是我写的一个匿名用户的文件

[share]
path=/opt/abc                       //共享文件路径
public=yes                            //公共共享文件
browseable=yes                  //允许读取
writable=yes                         //允许写入
create mask=0644              //上传权限
directory mask=0755          //下载权限

Samba文件共享
Samba文件共享_第1张图片
设置完成之后,开启服务,关闭防火墙和selinux防火墙

service smb start
service iptables stop
setenforce 0

匿名帐户测试

Samba文件共享_第2张图片
Samba文件共享

本地用户访问

同样修改smb.conf文件
同样的在创建共享文件夹的同时,也要将文件夹的权限放到最大,以便普通用户可以写入。

security = user //本地用户访问改为user

再写入一个本地用户访问的权限文件到配置文件中

[bendi]
path=/opt/bendi
browseable=yes
create mask=0644
directory mask=0755
valid users=zhangsan,lisi  //允许zhangsan,lisi用户登录
write list=lisi   //只允许lisi用户写入

这里有一条命令需要单独说一下“writable=yes//允许写入”,当我们需要限制只有被允许用户有写入权限时,这条命令就要删除,因为该条命令权限大于你对单个用户的限制。所以要删除,你对单个用户的限制才会生效。
Samba文件共享_第3张图片
本地用户访问时使用的密码不是系统的登陆密码,而是smb密码,所以我们在这里还要为用户创建smb密码

 smbpasswd -a zhangsan

Samba文件共享_第4张图片
重启服务

本地用户测试

Samba文件共享_第5张图片
Samba文件共享_第6张图片
Samba文件共享_第7张图片
在使用本地用户登陆之后,再次输入地址登陆我们会发现还在前一个用户的状态中没有退出,这是Windows的缓存机制,所以这里我们需要清理缓存
Samba文件共享_第8张图片

虚拟用户访问

在该 /etc/samba/smbusers 下创建帐户名映射文件
Samba文件共享_第9张图片
同样的还是之前的那个配置文件,在security = user下面插入一行内容username map=/etc/samba/smbusers
Samba文件共享
再写入一个针对虚拟账户的限制文件,同样的共享文件夹的权限不要忘记改。

[username]
path=/opt/username
browseable=yes
create mask=0644
directory mask=0755
valid users=zhangsan 
write list=zhangsan

Samba文件共享_第10张图片
开启服务,即可使用虚拟的名称和原有的密码登陆系统了。

虚拟账户测试

Samba文件共享_第11张图片
Samba文件共享_第12张图片