Linux学习 samba协议

SAMBA协议

一、定义

1.samba协议用来提供cifs协议,实现linux和windows系统的文件共享

2.yum install  samba  samba-common samba-client  -y

 ##samba 提供samba服务的主命令;samba-common 提供管理命令;samba-client 提供测试服务

3.systemctl start  smb  nmb  ##开启smaba,nmb服务

 systemctl  enable  smb nmb  ##开机时自动开启服务

Linux学习 samba协议_第1张图片

二、测试--测试主机有samba-client服务软件

<1>匿名用户登录

 smbclient  -L  //172.25.254.109    ##匿名登录

Linux学习 samba协议_第2张图片

<2>本机用户登录

1.smbclient -L  //172.25.254.109  -U student   ##本机用户登录,显示内容如下:

[kiosk@foundation9 Desktop]$ smbclient -L//172.25.254.109 -U student

Enter student's password:    ##应输入本机用户在samba协议中的密码

session setup failed:NT_STATUS_LOGON_FAILURE    ##登录失败,未输入在smb中的密码

当不输入密码时,相当于匿名登录:

Linux学习 samba协议_第3张图片

2.在服务端查看

 pdbedit  -L      ##查看允许登录的用户,显示内容中无student用户

(1)添加smb用户--必须是本机用户

 smbpasswd  -a  用户名     ##添加smb用户,此用户必须是本机用户

[root@localhost ~]# smbpasswd -a student

New SMB password:          ##设置用户student在samba中的密码

Retype new SMB password:   ##确认密码

Added user student.

 pdbedit  -L      ##再次查看

[root@localhost ~]# pdbedit -L

student:1000:Student User

Linux学习 samba协议_第4张图片

(2)测试

 smbclient  -L  //172.25.254.109  -U student

Linux学习 samba协议_第5张图片

三、共享目录

[root@localhost mnt]# getsebool -a | grepsamba    ##查看samba在selinu中的服务状态

samba_create_home_dirs --> off

samba_domain_controller --> off

samba_enable_home_dirs --> off              ##共享目录

samba_export_all_ro --> off                  ##只读文件共享

samba_export_all_rw --> off                  ##读写文件共享

samba_portmapper --> off

samba_run_unconfined --> off

samba_share_fusefs --> off

samba_share_nfs --> off

sanlock_use_samba --> off

use_samba_home_dirs --> off

virt_sandbox_use_samba --> off

virt_use_samba --> off

<1>共享用户家目录

[kiosk@foundation9 Desktop]$ smbclient//172.25.254.109/student -U student

 ##未开启共享功能前,可以登录但不能访问家目录

Enter student's password:

Domain=[MYGROUP] OS=[Windows 6.1]Server=[Samba 4.2.3]

smb: \> ls

NT_STATUS_ACCESS_DENIED listing \*

Linux学习 samba协议_第6张图片

1.服务端

 setsebool  -P  samba_enable_home_dirs  on 

 setsebool  -P  samba_enable_home_dirs  1

  ##在selinux中永久设定smb用户可以访问家目录

 Linux学习 samba协议_第7张图片

2.测试端

 smbclient  //172.25.254.109/student  -U  student  

  ##smb用户student访问其家目录/student

Linux学习 samba协议_第8张图片

<2>共享自建的目录

(1)服务端--172.25.254.109

 setsebool  -P  samba_enable_home_dirs  0    ##关闭共享家目录服务

 mkdir  /smbshare     ##建立共享目录

Linux学习 samba协议_第9张图片

(2)vim /etc/samba/smb.conf          ##编辑主配置文件

       89  workgroup = MYGROUP      ##设置工作组

在文件结尾出编辑内容如下:

      [hello]        ##设置共享文件名称,可任意设定         

       comment= local  directory  ##添加说明,可任意

       path= /smbshare            ##共享文件

  :wq

(3)systemctl  restart smb           ##重启服务

(4)再次在客户端访问,仍被拒绝,因为存在安全上下文问题

Linux学习 samba协议_第10张图片

 semanage  fcontext  -a -t  samba_share_t  '/smbshare(/.*)?'    ##永久设置

 restorecon  -RvvF  /smbshare      ##刷新

(5)客户端

 smbclient  -L//172.25.254.109  -U  student    ##查看共享文件,显示内容如下:

    Domain=[WESTOS]OS=[Windows 6.1] Server=[Samba 4.2.3]

       Sharename       Type     Comment

       ---------       ----     -------

       hello           Disk      local directory

       IPC$            IPC       IPC Service (Samba Server Version 4.2.3)

       student         Disk      Home Directories

##Domian表示工作组,为WESTOS;

##Sharename表示共享文件名,为hello(上文编辑内容可查看)

Linux学习 samba协议_第11张图片

 smbclient  //172.25.254.109/hello  -U  student   

   ##访问共享文件,实际访问的是/smbshare

Linux学习 samba协议_第12张图片

<3>共享系统目录

1.vim /etc/samba/smb.conf

       89  workgroup = WESTOS      ##设置工作组

在文件结尾出编辑内容如下:

      [hello]        ##设置共享文件名称,可任意设定         

       comment= local  directory  ##添加说明,可任意

       path= /mnt                 ##共享系统文件/mnt

  :wq

2.setsebool  samba_create_home_dirs  0     ##此时可以访问但看不到文件内容

Linux学习 samba协议_第13张图片

3.setsebool  samba_export_all_ro  on       

 ##只读文件共享,此后再共享文件均不需更改安全上下文,因为该命令会忽略安全上下文

4.systemctl restart  smb       ##重启服务

Linux学习 samba协议_第14张图片

5.测试

  smbclient  //172.25.254.109/hello  -U student   

   ##访问共享文件,实际访问的是/mnt,此时可以只读文件内容

Linux学习 samba协议_第15张图片

四、samba中的参数

<1>匿名用户访问家目录

匿名用户默认是不能访问家目录的:

Linux学习 samba协议_第16张图片

1.vim  /etc/samba/smb.conf

编辑内容如下:

[hello]

322         comment = localdirectory

323         path = /mnt

324         guest ok = yes             ##允许匿名用户登录

125         map to guest = baduser     ##匿名用户均指定到guest

Linux学习 samba协议_第17张图片

2.systemctl  restart smb

3.客户端测试:smbclient //172.25.254.109/hello

Linux学习 samba协议_第18张图片

<2>IP访问控制

1.指定IP 禁止访问

  vim  /etc/samba/smb.conf

       89  workgroup = MYGROUP      ##设置工作组

文件结尾处编辑内容如下:

       [hello]        ##设置共享文件名称,可任意设定        

       comment= local  directory  ##添加说明,可任意

       path= /mnt                 ##共享系统文件/mnt

       hosts  deny = 指定IP         ##该IP不被允许访问

  :wq

systemctl restart  smb      ##重启服务

测试结果显示如下:

2.指定IP可以访问

  vim  /etc/samba/smb.conf

       89  workgroup = MYGROUP      ##设置工作组

文件结尾处编辑内容如下:

       [hello]        ##设置共享文件名称,可任意设定        

       comment= local  directory  ##添加说明,可任意

       path= /mnt                 ##共享系统文件/mnt

       hosts  allow= 指定IP         ##只允许该IP主机访问

  :wq

Linux学习 samba协议_第19张图片

systemctl restart  smb      ##重启服务

测试结果显示如下:

Linux学习 samba协议_第20张图片

<3>用户访问控制

1.指定用户可以访问

  vim  /etc/samba/smb.conf

       89  workgroup = MYGROUP      ##设置工作组

文件结尾处编辑内容如下:

       [hello]        ##设置共享文件名称,可任意设定        

       comment= local  directory  ##添加说明,可任意

       path= /mnt                 ##共享系统文件/mnt

       validusers = 用户名        ##指定用户可以访问

  :wq

Linux学习 samba协议_第21张图片

systemctl restart  smb      ##重启服务

测试结果显示如下:

Linux学习 samba协议_第22张图片

2.指定组,属于该组的用户可以访问

  vim  /etc/samba/smb.conf

       89  workgroup = MYGROUP      ##设置工作组

文件结尾处编辑内容如下:

       [hello]        ##设置共享文件名称,可任意设定        

       comment= local  directory  ##添加说明,可任意

       path= /mnt                 ##共享系统文件/mnt

       validusers = +组名        ##属于该组的用户可以访问

       validusers = @组名        ##属于该组的用户可以访问

  :wq

Linux学习 samba协议_第23张图片

给用westos添加附加组student,访问结果如下:

Linux学习 samba协议_第24张图片

<4>读写访问

1.setsebool -P  samba_export_all_rw  on  

  ##在selinux中允许samba读写功能

2.vim /etc/samba/smb.conf

       89  workgroup = MYGROUP      ##设置工作组

文件结尾处编辑内容如下:

       [hello]        ##设置共享文件名称,可任意设定        

       comment= local  directory  ##添加说明,可任意

       path= /mnt                 ##共享系统文件/mnt

       writable= yes            ##允许写操作

  :wq

另外一种格式如下示

 vim  /etc/samba/smb.conf

       89  workgroup = MYGROUP      ##设置工作组

文件结尾处编辑内容如下:

       [hello]        ##设置共享文件名称,可任意设定        

       comment= local  directory  ##添加说明,可任意

       path= /mnt                 ##共享系统文件/mnt

       writable= no            

       write  list = 用户名       ##仅允许指定用户可以写

       write  list = +用户名      ##仅允许指定组中的用户可以写

       write  list = @用户名      ##仅允许指定组中的用户可以写

  :wq

Linux学习 samba协议_第25张图片

3.chmod  o+w /mnt           ##添加访问权限

4.systemctl  restart smb      ##重启服务

Linux学习 samba协议_第26张图片

5.测试

(1)挂载

mount -o   username=用户名,password=smb用户的密码  //172.25.254.109/hello  /mnt

##使用通过smb认证的用户将服务端的共享目录挂载至客户端的/mnt下,便可以对其进行操作

(2)访问

cd /mnt        ##若切换成功,并可以进行文件建立、删除更操作,则设置成功

Linux学习 samba协议_第27张图片

 

若是允许属于westos组的用户访问时:

Linux学习 samba协议_第28张图片

Linux学习 samba协议_第29张图片

 Linux学习 samba协议_第30张图片

只允许student用户进行读写,显示内容如下:

Linux学习 samba协议_第31张图片


<5>.共享的超级用户指定

(1)chmod   o-w  /mnt

Linux学习 samba协议_第32张图片

/mnt对other有可写权限

(2)vim /etc/samba/smb.conf

       89  workgroup = MYGROUP      ##设置工作组

文件结尾处编辑内容如下:

[hello]

       comment = local directory

       path = /mnt

       writable = yes

       admin users = westos    

##指定共享文件的超级用户为westos,即在客户端通过smb用户在共享目录中新建的文件,实际上是共享文件的超级用户身份建立的

Linux学习 samba协议_第33张图片 

:wq

Linux学习 samba协议_第34张图片

(3)systemctl  restart smb      ##重启服务

(4)测试

Linux学习 samba协议_第35张图片

注:超级用户的设置,即只能以超级用户身份访问,因为此时/mnt的权限

如下:设置超级用户为student,只有smb认证的超级用户即student可以访问/mnt

Linux学习 samba协议_第36张图片

<6>smb多用户挂载

一一般在root用户下挂载共享文件后,再切换到普通用户,仍是可以访问共享文件的,这样是极不安全的。因此,需要使用多用户挂载,示现普通用户访问时需要通过认证

Linux学习 samba协议_第37张图片

1.在客户端--172.25.254.209

(1)vim /root/文件名     ##用户认证文件

如:vim  /etc/haha

       username=student

       password=stu    ##通过smb认证的用户

(2)chmod 600  /root/haha               ##设置权限

(3)yum install  cifs-utils  -y    ##多用户挂载服务

(4)mount -o credentials=/root/haha,multiuser,sec=ntlmassp  //172.25.254.109/hello

##超级用户下挂载

##credentials=/root/haha 指定挂载时所用到的用户文件

##multiuser 支持多用户认证

##sec=ntlmassp 认证方式为标准smb认证方式

(5)再切换至普通用户,将不能直接访问共享目录

Linux学习 samba协议_第38张图片

(6)普通用户环境执行如下命令:

cifscreds add  -u  student 172.25.254.109

##可以实现普通用户使用smb上的student用户去访问共享目录


你可能感兴趣的:(Linux学习<三>,Linux,学习,虚拟机,终端,防火墙)