LINUX文件服务器之一:SAMBA服务器

如果局域网中既有Windows也有Linux,并且想要共享文件系统的话,我们该怎么办呢???

答案就是:使用SAMBA服务器!!!!SAMBA可以让Linux加入Windows的网上邻居支持,让不同的平台可以共享文件,非常好用!!!

那么,什么是SAMBA呢????

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成,提供CIFS协议实现文件共享通用internet文件系统,也称为SMB。

SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议, 它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。

SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、 打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

 

 

如何在LINUX下搭建SAMBA服务,并模拟Windows客户端访问呢????

首先我们要先配置好我们的实验环境:
我们用两台虚拟机模拟搭建服务器和客户端,设置服务端ip=172.25.254.222,客户端ip=172.25.254.122,并配置好yum源,方便我们接下来搭建服务时,安装各种安装包。

配置好实验环境,接下来就开始搭建SAMBA服务吧!!

 

配置服务端


第一步:安装samba服务,samba客户端以及samba-common

yum install samba samba-common samba-client -y

##samba 这个软件主要提供SMB服务器所需要的各项服务程序
##samba-common 主要提供服务器和客户端都会用到的一些数据,比如说smb.conf以及语法检测命令等。

注意:我们可以不在服务端安装samba-client,但是为了方便作后面的实验,我们最好把它也安装上

 

第二步:启动服务,并查看服务状态

systemctl start smb
systemctl status smb

 

第三步:将本地用户添加到smb用户,并查看

useradd westos
smbpasswd -a westos    ##添加smb用户
pdbedit -L    ##查看smb用户



第四步:设置selinux为警告模式并关闭火墙

getenforce       ##查看selinux的模式
setenforce  0    ##设置为警告模式
systemctl status firewalld
systemctl stop firewalld
systemctl status firewalld


 


 

 

配置客户端

第一步:安装samba客户端

yum install samba-client -y

 查看服务器提供的目录资源

smbclient -L //172.25.254.222    ##匿名查看服务器锁提供的共享的目录资源
smbclient -L //172.25.254.222 -U westos     ##查看SMB用户能够尝试访问的资源

 

第二步:登陆samba服务器,实现共享共享目录/home/westos
注意:  不能匿名登陆,会报错

smbclient //172.25.254.222/westos 

 

如何实现文件系统共享???

第一种方式:

smbclient //172.25.254.222/westos -U westos      ##登陆samba服务器


 

第二种方式:

mount -o username=westos,password=lee //172.25.254.122/westos /mnt


 

 


测试:在客户端的/mnt下创建文件,在服务端查看客户端上传的文件

touch file{1..5}   ##上传文件,可以在samba服务端看到

 

 

 

到此,我们的samba服务就搭建完成了,但是现在的服务是步安全的,任何主机都能够通过smb用户登录上我们的服务,这是很不安全的,那么问题来落,我们该怎样设置samba服务的权限,使我们的服务器变得安全呢????

 

samba权限设置

 

1.如何设置哪些主机能够访问服务?


服务端

1.权限设置,编辑  /etc/samba/smb.conf  文件   

;       interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
;       hosts allow = 127. 192.168.12. 192.168.13.
        hosts allow = 172.25.254.222      ##允许哪些ip访问samba
;       hosts deny =172.25.254.222       ##不允许哪些ip访问


重启服务,进行测试:
1.172.25.254.222测试

在文件中我们给172.25.254.222这个ip对应的主机设置的权限是可以访问,我们的实验结果也符合我们的预想!!

[root@shareserver yum.repos.d]# smbclient //172.25.254.222/westos -U westos
Enter westos's password:
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
  .                                   D        0  Fri Nov 23 22:54:29 2018
  ..                                  D        0  Fri Nov 23 22:54:29 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
  .mozilla                           DH        0  Thu Jul 10 18:29:32 2014
  .config                            DH        0  Thu Jul 10 19:06:52 2014

        40913 blocks of size 262144. 28459 blocks available
smb: \> quit

 

 

若我们在文件中我们给172.25.254.222这个ip对应的主机设置的权限是不可以访问,我们的实验中访问将会被拒绝!!

[root@client yum.repos.d]# smbclient  //172.25.254.222/westos -U westos
Enter westos's password:
protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE

 

 


2.如何使客户端访问服务端自己创建的目录????

编辑/etc/samba/smb.conf文件

 [linux]    []中的内容表示客户端能看到的名称
 comment = westos dir share
 path = /westos     ##客户端访问的绝对路径

注意:要先建立这个/westos目录,否则会出现报错

此时测试,会出现访问被拒绝的错误

 

 这个时候我们去查看selinux,会发现selinux=enforcing 

在selinux=enforcing的情况下,修改安全上下文

semanage fcontext -a -t samba_share_t '/westos(/.*)?'
restorecon -RvvF /westos      ##逐层刷新安全上下文

 

 

再次测试:登录成功!!

smbclient //172.25.254.222/linux -U westos

 

 

3.如何使客户端访问服务端的系统目录?????


注意:如果设定的目录为系统目录,不能更改安全上下文
编辑/etc/samba/smb.conf文件

[opt]
comment=opt directory
path = /mnt

 开启samba_export_all_ro on

setsebool -P samba_export_all_ro on


测试:
smbclient //172.25.254.122/opt -U westos

[root@shareserver yum.repos.d]# smbclient //172.25.254.222/opt -U westos
Enter westos's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
  .                                   D        0  Fri Nov 23 23:49:55 2018
  ..                                  D        0  Fri Nov 23 23:00:54 2018
  file1                               N        0  Fri Nov 23 23:49:55 2018

        40913 blocks of size 262144. 28459 blocks available

smb: \> quit

 

 

4.其他权限设定

[linux]    []中的内容表示客户能看到的名称
comment = westos dir share
path = /westos     ##客户端访问的绝对路径
writable = yes     ##允许所有人写
       注意:put上传时,只能上传当前路径下的
write list = westos    ##允许谁写 ##+/@westos  对组可写
valid users  = westos          ##允许谁访问服务
browseable=yes         ##是否可以看见linux,no时不能看见
admin users = student  ##student上传文件,文件的用户是root
guest ok = yes     ##允许匿名登陆
还要设定map to guest = bad user   ##将不合法的用户定义为guest

 

注意:一定要更改权限,否则会出现报错

chmod 777 /westos 

测试结果如下:

(一)writable = yes     ##允许所有人写

322         [linux]
323         comment = westos dir share
324         path = /westos
325         writable = yes

 

 

 

注意:put上传时,只能上传当前路径下的

 

(二)write list = westos    ##允许谁写 ##+/@westos  对组可写

322         [linux]
323         comment = westos dir share
324         path = /westos
325 ;       writable = yes
326         write list = westos

我们在文件中设置允许以westos身份登录共享时可写

以lee身份进行登录共享时,不可写



(三)valid users  = westos        ##允许谁访问服务

322         [linux]
323         comment = westos dir share
324         path = /westos
325 ;       writable = yes
326         write list = westos
327         valid users = westos

 

 

(四)browseable=yes         ##是否可以看见linux,no时不能看见

322         [linux]
323         comment = westos dir share
324         path = /westos
325 ;       writable = yes
326         write list = westos
327         valid users = westos
328         browseable = yes

 

 

[root@shareserver ~]# vim /etc/samba/smb.conf    改为no 看不见

[root@shareserver ~]# vim /etc/samba/smb.conf    ###改为no

322         [linux]
323         comment = westos dir share
324         path = /westos
325 ;       writable = yes
326         write list = westos
327         valid users = westos
328         browseable = no

 


(五)admin users = westos ##westos上传文件,文件的用户是root

322         [linux]
323         comment = westos dir share
324         path = /westos
325 ;       writable = yes
326         write list = westos
327         valid users = westos
328         browseable = no
329         admin users = westos


 

 上传文件,并查看文件的所属用户

 

 


客户端的性能控制


在客户端没有进行多用户认证之前,在root用户下,以samba用户westos的身份进行登陆,可以进行上传下载,切换到student用户时也可以进行创建文件,虽然会出现被拒绝的报错,这样很显然是不合理的,我们要在客户端也能够不通用户的权限。

[root@client yum.repos.d]# mount //172.25.254.122/linux /mnt/ -o username=westos,password=lee
[root@client yum.repos.d]# cd /mnt
[root@client mnt]# ls
anaconda-ks.cfg  file1  file2
[root@client mnt]# su - student
Last login: Thu May 11 20:23:54 EDT 2017 on pts/0
[student@client ~]$ cd /mnt
[student@client mnt]$ ls
anaconda-ks.cfg  file1  file2
[student@client mnt]$ touch file3
touch: cannot touch ‘file3’: Permission denied
[student@client mnt]$ ls
anaconda-ks.cfg  file1  file2  file3
[student@client mnt]$ ll          ##实际上看到的是服务端/westos下的文件
total 1024
-rwxr--r-- 1 root student 8619 Nov 24 01:18 anaconda-ks.cfg
-rw-r--r-- 1 root root       0 Nov 23 23:00 file1
-rw-r--r-- 1 root root       0 Nov 23 23:00 file2
-rw-r--r-- 1 1001    1001    0 Nov 24 02:05 file3

切换到student用户下,

 

在服务端允许客户端访问samba服务后,客户端并不想让所有的用户都可以访问共享下来的目录中的文件,这个时候就需要在客户端进行性能控制,即增加安全锁,
samba安全锁,限制没有通过认证的客户对samba服务的权限,使得通过认证的用户才能访问共享目录


注意:实验之前先把匿名登录屏蔽掉,关闭匿名可访问

第一步:安装CIFS,模拟windows场景

yum install cifs-utils -y

CIFS 是一个新提出的协议,它使程序可以访问远程Internet计算机上的文件并要求此计算机提供服务。CIFS 使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS是公共的或开放的SMB协议版本,并由Microsoft使用。SMB协议在局域网上用于服务器文件访问和打印的协议。像SMB协议一样,CIFS在高层运行,而不像TCP/IP协议那样运行在底层。CIFS可以看做是应用程序协议如文件传输协议超文本传输协议的一个实现。

 

第二步:解挂载

[root@client mnt]# df
Filesystem             1K-blocks    Used Available Use% Mounted on
/dev/vda1               10473900 3216184   7257716  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    2340    451839   1% /home
/dev/sr0                 3947824 3947824         0 100% /run/media/root/RHEL-7.2 Server.x86_64
//172.25.254.122/linux  10473900 3188616   7285284  31% /mnt

[root@client mnt]# cd ..
[root@client /]# umount /mnt
[root@client /]# df
Filesystem         1K-blocks    Used Available Use% Mounted on
/dev/vda1           10473900 3215924   7257976  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    2340    451839   1% /home
/dev/sr0             3947824 3947824         0 100% /run/media/root/RHEL-7.2 Server.x86_64

第三步:编辑认证文件/root/smbpass

[root@client /]# vim /root/smbpass
username=westos
password=lee

 

更改文件权限为600,只有超级用户具有读写权限

[root@client /]# chmod 600 /root/smbpass

挂载服务端samba用户westos到客户端root用户/mnt上

[root@client /]# mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.122/linux /mnt

credentials=/root/smbpass/   ##指定本次root用户挂载时候的认证文件
sec=ntlmssp                  ##其他用户做认证用到的认证策略程序
multiuser                    ##多用户挂载模式

注意:root挂载的samba用户westos

 

切换到student用户下,挂载被拒绝,因为student用户没有经过认证,不能访问共享目录

认证用户,student挂载amba用户lee

 

注意:
如果想更换samba用户,则解挂之后重新挂载

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值