Linux如何详细搭建samba服务

1.samba简介
samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,有服务器及客户端程序构成
进过我们了解了NFS服务后,其实NFS和samba一样的,就是在网络中实现文件共享的一种实现,但二者有着略微不同,NFS服务其不支持windows平台,而本章介绍的是samba服务是能够在任何SMB协议的主机之间共享文件的一种实现,当然包括windows。
SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。



2.samba监听端口有:

TCP UDP
139 137
445 138

TCP端口相对应的服务是samba服务,其作用是提供对服务器中文件、打印资源的共享访问。
UDP端口相对应的服务是nmbad服务,其作用是提供基于NetBIOS主机名称的解析



3.samba进程:

进程 对应的协议
nmbd 对应netbios协议
smbd 对应cifs协议
winbindd + ldap 对应Windows AD 活动目录


4.samba用户:

账号 密码
都是系统用户 samba服务自有密码文件
/etc/passwd 通过smbpasswd -a USERNAME命令设置


5.samba安全级别
samba服务器的安全级别有三个,分别是user, server, domain

安全级别 作用
user 基于本地的验证
server 由另一台指定的服务器对用户身份进行认证
domain 由域控进行身份验证

以前的samba版本支持的安全级别有四个,分别是share,user,server,domain
share是用来设置匿名访问的,但现在的版本已经不支持share了,但是还是可以实现匿名访问的,只是配置方式变了。



6.samba 配置文件
/etc/samba/smb.conf (主配置文件)

samba三大组成 作用
【global】 全局配置,此处的设置项对整个samba服务器都有效
【homes】 宿主目录共享设置,此处用来设置Linux用户的默认共享,对应用户的宿主目录。当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将会自动映射到该用户的宿主目录中
【printers】 打印机共享设置

常用配置文件参数:

参数 作用
workgroup 表示设置工作组名称
server string 表示描述samba服务器
security 表示设置安全级别,其值可为share、user、server、domain
passdbackend 表示设置共享账户文件的类型,其值可为tdbsam (tbd数据库文件)、ldapsam(LDAP目录认证)、smbpasswd(兼容旧版本samba密码文件)
comment 表示设置对应共享目录的注释,说明信息,即文件共享名
browseable 表示设置共享是否可见
writable 表示设置目录是否可写
path 表示共享目录的路径
guest ok 表示设置是否所有人均可访问共享目录
public 表示设置是否允许匿名用户访问
write list 表示设置允许写的用户和组,组要用@表示,例如 write = root,@root
valid users 设置可以访问的用户和组,例如 valid users = root,@root
hosts deny 设置拒绝哪台主机访问,例如 hosts deny = 192.168.209.12
hosts allow 设置允许哪台主机访问,例如 hosts deny = 192.168.209.13
printable 表示设置是否为打印机

//测试配置文件是否有语法错误,以及显示最终生效的配置:使用testparm命令

[[email protected] ~]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Processing section "[lan]"
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions


7.samba访问
环境说明:

服务器IP 客户机IP
192.168.209.12 192.168.209.13

//交互式数据访问 (有两种访问模式),查看samba服务器有哪些共享资源

smbclient  -L  HOST  -U   USERNAME
            例如:[[email protected] ~]# smbclient -L 192.168.209.12 -U lan
Enter SAMBA\lan‘s password:
Domain=[LANZHIYONG] OS=[Windows 6.1] Server=[Samba 4.6.2]

        Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Drivers
        lan             Disk      lan
        IPC$            IPC       IPC Service (Samba 4.6.2)
Domain=[LANZHIYONG] OS=[Windows 6.1] Server=[Samba 4.6.2]

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------  

smbclient    //SERVER/share_name   -U  USARENAME
            例如:[[email protected] ~]# smbclient //192.168.209.12/lan  -U lan
Enter SAMBA\lan‘s password:
Domain=[LANZHIYONG] OS=[Windows 6.1] Server=[Samba 4.6.2]
smb: \> ls
  .                                   D        0  Mon Aug  6 16:10:26 2018
  ..                                  D        0  Mon Aug  6 15:53:39 2018
  9999                                D        0  Mon Aug  6 16:10:22 2018
  8888                                D        0  Mon Aug  6 16:10:26 2018

                17811456 blocks of size 1024. 8041628 blocks available
smb: \> quit     //quit退出
-----

8.实例 (配置用户认证共享,就是指定用户登入密码才能访问共享资源)
       前提是在服务器端和客户端在关闭防火墙的情况下才能实现共享目录。服务器端IP:192.168.209.12      客户端IP:192.168.209.13

    在服务器端做以下操作:
//使用yum命令安装samba-*
    [[email protected] ~]# yum install -y samba-*
    //映射共享目录
    //创建用lan
    [[email protected] ~]# useradd -M lan 

    //为lan用户创建smb共享密码:
    [[email protected] ~]# smbpasswd -a lan
    New SMB password:           //设置密码
Retype new SMB password:
    ```
    //假设这里映射lan 用户为share 用户,那么就要在/etc/samba/smbusers文件中添加如下内容:
    ```
    [[email protected] ~]# echo ‘lan = share‘ > /etc/samba/smbusers

    //在全局配置中添加如下内容:
        [[email protected] ~]# vim /etc/samba/smb.conf
        [global]
    workgroup = SAMBA
    security = user
    username map = /etc/samba/smbusers      //添加此行内容
    passdb backend = tdbsam

      //创建一个共享目录lanzhiyong
    [[email protected] ~]# mkdir /opt/lanzhiyong
    [[email protected] ~]# chown -R lan.lan /opt/lanzhiyong/
      [[email protected] ~]# ls -ld /opt/lanzhiyong/
    drwxr-xr-x. 4 lan lan 30 8月   6 16:10 /opt/lanzhiyong/
    ```
        //配置共享
            ```
   [[email protected] ~]# cat >> /etc/samba/smb.conf <<EOF
     [lan]
   comment = lan
   path = /opt/lanzhiyong
   browseable = yes
   guest ok = yes
   writable = yes
   write list = share
   public = yes

   [[email protected] ~]# tail -8 /etc/samba/smb.conf
       [lan]
   comment = lan
   path = /opt/lanzhiyong
   browseable = yes
   guest ok = yes
   writable = yes
   write list = share
   public = yes
    ```
    ```
  //启动smb服务
    [[email protected] ~]# systemctl start smb 

    //重启smb服务
    [[email protected] ~]# systemctl restart smb   

    //重新加载smb服务
    [[email protected] ~]# systemctl reload smb

  //设置smb服务随系统启动而启动
    [[email protected] ~]# systemctl enable smbc
    ```

    ***     //在客户端先安装samba-smbclient
    [[email protected] ~]# yum install -y samba-client 

    //在客户端查看samba服务器有哪些共享资源
  [[email protected] ~]# smbclient -L 192.168.209.12 -U share
 Enter SAMBA\share‘s password:
     ```
 Domain=[LANZHIYONG] OS=[Windows 6.1] Server=[Samba 4.6.2]

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    lan             Disk      lan
    IPC$            IPC       IPC Service (Samba 4.6.2)
   Domain=[LANZHIYONG] OS=[Windows 6.1] Server=[Samba 4.6.2]

    Server               Comment
    ---------            -------

    Workgroup            Master
    ---------            -------

//创建需要在客户端挂载到哪个目录下
[[email protected] ~]# mkdir /opt/smb

//将samba服务器的共享资源lan挂载到客户机本地
[[email protected] ~]# mount -t cifs //192.168.209.12/lan /opt/smb/ -o         username=share,password=redhat
[[email protected] ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
    /dev/mapper/centos-root   17G  9.4G  7.7G   55% /
    devtmpfs                 478M     0  478M    0% /dev
    tmpfs                    489M     0  489M    0% /dev/shm
    tmpfs                    489M  6.8M  482M    2% /run
    tmpfs                    489M     0  489M    0% /sys/fs/cgroup
    /dev/sda1               1014M  125M  890M   13% /boot
    tmpfs                     98M     0   98M    0% /run/user/0
 //192.168.209.12/lan      17G  9.4G  7.7G   55% /opt/smb

   //在客户机上进行共享目录创建新文件
   [[email protected] ~]# cd /opt/smb/
   [[email protected] smb]# touch 8888
   [[email protected] smb]# mkdir 9999
   [[email protected] smb]# ls
   8888  9999

    //最后到服务器端上验证:
      [[email protected] lan]# cd /opt/lanzhiyong/
      [[email protected] lanzhiyong]# ls
      8888  9999

9.实例 (配置匿名共享,就是不需要密码都可以访问共享资源)
前提是在服务器端和客户端在关闭防火墙的情况下才能实现共享目录。服务器端IP:192.168.209.12 客户端IP:192.168.209.13
先在服务器端:

    //使用yum命令安装samba服务器
    [[email protected] ~]# yum install -y samba-* 

    //在全局配置中添加如下内容:
    [[email protected] ~]# vim /etc/samba/smb.conf
    [global]
    workgroup = SAMBA
    security = user
    map to guest =  Bad User      //添加此行内容

    //创建一个共享目录lanzhiyong
     [[email protected] ~]# mkdir /opt/lanzhiyong
     [[email protected] ~]# chmod -R 777 /opt/lanzhiyong/
     [[email protected] ~]# ll -ld /opt/lanzhiyong/
    drwxrwxrwx. 4 lan lan 30 8月   6 16:10 /opt/lanzhiyong/

    //配置共享
  [[email protected] ~]# cat >> /etc/samba/smb.conf <<EOF
  [lanzhiyong]
  comment = lanzhiyong
  path = /opt/lanzhiyong
  browseable = yes
  guest ok = yes
  writable = yes
  public = yes
  EOF
  [[email protected] ~]# tail -7 /etc/samba/smb.conf
  [lanzhiyong]
  comment = lanzhiyong
  path = /opt/lanzhiyong
  browseable = yes
  guest ok = yes
  writable = yes
  public = yes

//启动smb服务
  [[email protected] ~]# systemctl start smb 

    在客户端做以下操作:
    //在客户端先安装samba-smbclient
     [[email protected] ~]#yum install -y samba-client 

    //在客户端查看samba服务器有哪些共享资源
    [[email protected] ~]#smbclient -L 192.168.209.12 -U ‘Bad User‘
     Enter SAMBA\Bad User‘s password:
     Anonymous login successful
    OS=[Windows 6.1] Server=[Samba 4.6.2]

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    lan             Disk      lan
    IPC$            IPC       IPC Service (Samba 4.6.2)
    Anonymous login successful
   OS=[Windows 6.1] Server=[Samba 4.6.2]

    Server               Comment
    ---------            -------

    Workgroup            Master
    ---------            -------

//将samba服务器的共享资源lan挂载到客户机本地

[[email protected] ~]# mount -t cifs //192.168.209.12/lanzhiyong /opt/smb/ -o username=share,password=redhat
[[email protected] ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   17G  9.4G  7.7G   55% /
devtmpfs                 478M     0  478M    0% /dev
tmpfs                    489M     0  489M    0% /dev/shm
tmpfs                    489M  6.8M  482M    2% /run
tmpfs                    489M     0  489M    0% /sys/fs/cgroup
/dev/sda1               1014M  125M  890M   13% /boot
tmpfs                     98M     0   98M    0% /run/user/0
//192.168.209.12/lanzhiyong     17G  9.4G  7.7G   55% /opt/smb

    //在客户机上进行共享目录创建新文件
    [[email protected] ~]# cd /opt/smb/
    [[email protected] smb]# touch 123
    [[email protected] smb]# mkdir 123123123
    [[email protected] smb]# ls
    123  123123123

    //到服务器端上验证:
   [[email protected] ~]# cd /opt/lanzhiyong/
   [[email protected] lanzhiyong]# ls
   123  123123123

原文地址:http://blog.51cto.com/13833047/2155470

时间: 2024-08-11 07:49:52

Linux如何详细搭建samba服务的相关文章

Ubuntu Linux下快速搭建Samba服务

引用:http://www.linuxidc.com/Linux/2016-03/129195.htm Samba服务对于从事Linux开发从业人员来说并不陌生,现在也有Windows版本了,当我们在开发Linux驱动或者应用的时候,一般都输需要个Linux开发环境.对于大公司来说有个服务器可供程序员们公共使用,但对于小公司来说一般是在虚拟机里转个Linux开发环境,也很少用实体机来装Linux的,当然也有例外.这是时候往往涉及到Windows和Linux之间文件交互的问题,我现在用的最多的就是

Linux服务器上搭建samba服务实现文件共享

实验 实验环境: 一台虚拟机上的linux服务器和一台真机 实验要求: 一,客户机能够匿名访问linux服务器文件: 二,客户机需要用户验证访问linux文件: 三,创建共享账号的别名实现登陆: 四,访问地址的限制: 五,linux主机查询目标主机共享资源列表和登陆并访问共享文件夹: 六,使用mount挂载共享文件夹: 实验步骤: 一,匿名访问linux服务器文件 安装samba服务程序: 查看samba是否安装完整 过滤"#"和":"符号在导入smb.conf配置

Linux中详细搭建NFS服务

1.nfs简介 NFS (Network File System)即网络文件系统.由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法. nfs适用于Linux与Unix之间实现文件共享,不能实现Linux与Windows间的文件共享功能 nfs是运行在应用层的协议,其监听与2049/tcp和2049/udp套接字上 nfs服务只能基于IP进行

Linux中详细搭建监控服务zabbix部署

1.Linux服务器安装zabbix监控平台 zabbix是基于web界面的开源分布式监控平台,可以监控各种服务器的配置参数,支持自定义配置和自定义告警,并且可以实现邮件.短信等方式的告警,zabbix基本组件如下: zabbix_server:zabbix服务端守护进程,所有的监控数据都会统一汇总给server zabbix_agentd:客户端守护进程,负责执行server命令,收集客户端各种参数,如cpu负载,内存,硬盘io等 zabbix_get:zabbix的一个工具,通常用于从ser

Linux中详细搭建rsync服务

1.rsync简介 rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了--remote sync.rsync是Linux系统下的文件同步和数据传输工具,它采用"rsync"算法,可以将一个客户机和远程文件服务器之间的文件同步,也可以在本地系统中将数据从一个分区备份到另一个分区上.如果rsync在备份过程中出现了数据传输中断,恢复后可以继续传输不一致的部分.rsync可以执行完整备份或增量备份.它的主要特点有: 1.可以镜像保存整个目录树和文件系统: 2.可以很

在Linux上搭建samba服务后,到Windos上访问不了共享目录的问题排障

今天在linux下搭建samba服务时,出现了几个问题,经过多次努力尝试,终于顺利解决问题:在linux上搭建samba服务,编译 vim /etc/samba/smb.conf完成后:1>在Windos上测试访问共享的目录时,错误提示如下 2>在浏览器上输入:file://192.168.1.103/sanshi,访问后还是同样的错误3>在linux上访问,如下提示[[email protected] ~]# smbclient //192.168.1.103/sanshiWARNIN

如何在RHEL7上搭建Samba服务实现Windows与Linux之间的文件共享

如何在RHEL7上搭建Samba服务实现Windows与Linux之间的文件共享 实现环境:VMware workstations.RHEL7.0 第一步:配置网卡IP及yum软件仓库 命令:vim /etc/sysconfig/network-scripts/ifcfg-eno16777736 命令:vim /etc/yum.repos.d/aria.repo(这里的yum.repo是需要自己创建的,文件名自定即可) 第二步:设置挂载点并挂载本地ISO文件 将ISO文件连接上线 创建挂载点并挂

liunx系统上搭建samba服务,实现局域网文件共享

实验项目:搭建samba服务,实现三个功能:1,匿名访问:2,身份验证访问:3,账号映射访问.我们用两台虚拟机作为实验对象;一台Windows7系统的客户机,一台redhat6系统提供samba服务.两台实验对象都使用同一个虚拟网卡,并能够相互ping通1,匿名访问首先在redhat6系统的虚拟机上搭建samba服务,挂载光盘到/mnt目录,安装samba软件包然后进入/etc/samba/目录找到samba配置文件,备份配置文件,并过滤掉"#"开头的注释行,进入配置文件进行编辑设定设

快速搭建samba服务

如何在UNIX主机和windows主机共享数据呢?搭建FTP服务是一种,但是FTP能够很方便的上传下载数据,但是如果想修改数据就会比较麻烦了,这时你需要先把文件下载下来,修改以后再上传上去,这种办法很麻烦,不符合我们的需要. 使用NFS服务呢?NFS服务器共享一个目录,然后NFS客户端挂载此目录,若客户端有rwx权限,很轻松的便可以修改数据,而且修改后数据在各主机之间同时可以看到.但遗憾的是NFS只能在类UNIX主机之间使用,不能跨平台.而windows上的CIFS(Common Interne