文件共享-samba

smb:服务器消息块(server  message  block),此协议可实现文件共享和打印机共享。windows系统中默认采用smb协议来实现共享。工作端口是445(data  share)和139(netbios主机名解析)
netbios:网络基本输入输出系统,主要实现的功能是通过主机名来实现计算机之间的互访问。目前被直接捆绑在IP协议簇中。

samba服务的作用:

   1.主要实现不同平台间的文件共享(linux/unix和windows)
   2.实现名称解析
   3.隔离windows病毒
   4.丰富的权限管理机制


samba服务软件的安装说明:

   samba是服务器端软件

   samba-client是端客户软件

   samba-common是samba的公用程序文件


samba服务的部署流程:实验环境是centos7.6 IP为192.168.11.12,物理机为192.168.11.1

1.关闭selinux和防火墙功能。
  setenforce  0
  getenforce
  systemctl  stop  firewalld
  systemctl  status  firewallld

2.查软件是否已安装,未安装就进行安装。
  rpm   -qa | grep  samba
  yum   search   samba
  yum  install  -y   samba   samba-client   samba-common

3.启动服务,允许开机自动启动服务,查服务状态。
  systemctl  restart  smb
  systemctl  status   smb   或  lsof  -i:445   或  netstat  -atunlp |  grep  :445
  systemctl  enable   smb

netstat选项:是查看网络进程状态(net  stat)的命令。

-a  即all,显示所有网络进程

-t  即tcp,显示TCP协议的网络进程

-u  即udp,显示UDP协议的网络进程

-n  即number,以数字方式显示协议的端口号,例 ftp 21、http  80、ssh 22、vnc 5900等

-l  即listen,只显示状态为listen监听的网络进程

-p  即PID进程号,显示网络进程的PID号

网络进程状态(用man  netstat可查):listen监听      ESTABLISHED已连接      CLOSE_WAIT等待关闭


4.查服务的配置文件,根据需求对服务的配置文件进行设置。
  rpm  -ql   samba       查所有文件列表
  rpm  -qc   samba-common    查配置文件列表

Linux文件共享之samba_第1张图片

  /etc/openldap/schema/samba.schema     samba的openldap认证配置文件

  /etc/pam.d/samba            samba的pam认证文件

  /etc/logrotate.d/samba       日志轮滚策略文件

  /etc/samba/lmhosts         本地主机配置文件

  /etc/samba/smb.conf        samba的主配置文件,用于实现samba的环境设置和自定义共享目录

  /etc/sysconfig/samba        samba的系统配置文件


samba的默认共享目录(默认功能):

普通用户可访问共享,账号名称是用useradd创建的且用pdbedit  -a命令设置密码的用户,访问共享的目录是用户自己的家目录(/home/用户名),默认可读可写和上传。

自定义共享目录:需要在/etc/samba/smb.conf主配置文件中设置共享参数


5.检测配置文件语法,重启服务(最好用reload平滑重启)。
  testparm      检测配置文件语法
  systemctl   reload   smb     平滑重启samba服务


 5.1.创建访问共享的用户账号,设置登录密码:
   useradd  lucy
   useradd  lily

   pdbedit  lucy  -a  或  smbpasswd  lucy  -a
   pdbedit  lily  -a  或  smbpasswd  lily  -a

   pdbedit  -L   显示samba用户名列表

 5.2 将/etc目录用samba服务进行只读共享。
   vim   /etc/samba/smb.conf  添加如下内容
   [etck]   共享名称(商标)
   comment=share  etc  directory     描述信息,可随意定义
   path=/etc     共享目录路径
   public=yes    允许匿名访问共享
   browseable=yes   允许在网上邻居中显示(浏览)
   writeable=yes    开启可写权限

Linux文件共享之samba_第2张图片

重启服务:systemctl   reload   smb

6.做内测(在服务器端用客户端软件进行本地测试127.1),做公测(即用另一台客户机来访问服务器)
做内测(查共享资源):  smbclient  -L  127.1
做公测(smb登录测试):  smbclient  //192.168.11.12/etck   -U  lucy%01    (01是给lucy设置的密码) 

Linux文件共享之samba_第3张图片

smbclient软件的内部命令:

help或?   显示命令帮助

ls         显示共享目录的文件名列表

!命令   执行客户端本地的shell命令。如 !date  、  !ls  、!pwd

lcd 切换本地(local)的工作目录路径。如 lcd  /etc  

pwd 显示共享目录的工作路径

prompt 关闭或开启交互式操作模式,即是否提示Yes/No

mkdir 在共享目录中新建目录,如 mkdir  ak

mput 上传多个本地当前目录下的文件到远程服务器的的当前工作目录下。如mput  host*

mget 从共享目录中下载多个文件到本地当前目录下。如 mget  hosts

rm 删除文件

rmdir 删除目录

exit 退出smbclient软件


用资源管理器非匿名访问共享: Win+E ----> \\192.168.11.12\lucy ----> 下载或上传文件

Linux文件共享之samba_第4张图片


Linux文件共享之samba_第5张图片

windows中清除samba共享访问缓存:Win+R  ---> cmd 后执行如下命令---> net  use  *  /del  /y  和 gpupdate  /force

Linux文件共享之samba_第6张图片


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

smb.conf主配置文件的其他功能选项:man  smb.conf

smb.conf配置文件内容由global全局环境设置、共享目录设置两部分组成。


smb.conf的默认设置选项:

[global]   全局环境设置

        printcap name = cups       跟打印机有关的选项

        security = USER         安全等级设置为USER用户级,即需要用户名和密码验证。还可以是什么呢,请查man手册。

        username map = /etc/samba/vuser      (自己添加的)虚拟用户账号文件

        workgroup = SAMBA          计算机所在的局域网的工作组名

        idmap config * : backend = tdb      samba的用户账号数据库文件         

        cups options = raw      跟打印机有关的选项


[homes]   用户家目录的共享设置

        browseable = No    不显示在网上邻居中

        comment = Home Directories    注释说明信息

        inherit acls = Yes     允许继承ACL权限

        read only = No         禁止只读操作,即可读可写,等同于writable=Yes

        valid users = %S %D%w%S     有效用户账号。%S是samba服务中的用户账号,%D当前域或当前工作组中的用户账号,

smb.conf中基于用户访问控制的选项:

  browseable=yes    允许在网上邻居中显示共享名称

  public=yes  或 guest ok=yes     允许匿名用户访问

  writable=yes 或 readonly=no      允许写操作,即可写权限

  #valid  users=用户1,用户n,@组名       指定允许访问共享的用户账号(即白名单)

  #invalid  users=s3,@组名             只禁止s3用户访问共享(即黑名单)

技巧:只允许少数人能访问共享时用白名单。只禁止少数人能访问共享时用黑名单。

  write list=用户1,用户n,@组名     指定有可写权限的用户账号(即白名单)


smb.conf中基于IP访问控制的选项:man  smb.conf  进入后执行/150就可以查到例子  

  hosts allow = 192.168.  EXCEPT 192.168.11.1   允许192.168.*.*的所有主机访问共享,除了192.168.11.1之外

  hosts deny = 192.168.  EXCEPT 192.168.11.1    不允许192.168.*.*的所有主机访问共享,除了192.168.11.1之外

说明:hosts  allow设置可以放在[global]全局环境设置中(限制访问所有共享目录),也可以放在自定义共享目录的设置中(仅限制访问此目录)。