• SAMBA服务


    SAMBA服务简介

    SMB:Server Message Block服务器消息块,IBM发布,最早是DOS网络文件共享协议

    Cifs:common internet file system,微软基于SMB发布

    SAMBA:1991年Andrew Tridgell,实现windows和UNIX相通

    SAMBA的功能:

    •共享文件和打印,实现在线编辑
    •实现登录SAMBA用户的身份认证
    •可以进行NetBIOS名称解析
    •外围设备共享

    计算机网络管理模式:

    •工作组WORKGROUP:计算机对等关系,帐号信息各自管理
    •域DOMAIN:C/S结构,帐号信息集中管理,DC,AD
    

    SAMBA介绍

    相关包:

    Samba 提供smb服务
    Samba-client 客户端软件
    samba-common 通用软件
    cifs-utils smb客户端工具
    samba-winbind 和AD相关

    相关服务进程:

    smbd 提供smb(cifs)服务 TCP:139,445
    nmbd NetBIOS名称解析 UDP:137,138
    

    主配置文件:/etc/samba/smb.conf

    帮助参看:man smb.conf

    语法检查: testparm [-v] [/etc/samba/smb.conf]

    客户端工具:smbclient,mount.cifs  

    SAMBA服务器配置

    smb.conf继承了.ini文件的格式,用[ ] 分成不同的部分
    全局设置:

    [global] 服务器通用或全局设置的部分

    特定共享设置:

    [homes] 用户的家目录共享
    [printers] 定义打印机资源和服务
    [sharename] 自定义的共享目录配置

    其中:#和;开头的语句为注释,大小写不敏感
    宏定义:

    %m 客户端主机的NetBIOS名      %M 客户端主机的FQDN
    %H 当前用户家目录路径         %U 当前用户用户名
    %g 当前用户所属组            %h samba服务器的主机名
    %L samba服务器的NetBIOS名   %I 客户端主机的IP
    %T 当前日期和时间            %S 可登录的用户名
    

    SAMBA服务器全局配置

    workgroup 指定工作组名称
    server string 主机注释信息
    netbios name 指定NetBIOS名
    interfaces 指定服务侦听接口和IP

    hosts allow 可用“,” ,空格,或tab分隔,默认允许所有主机访问,也可在每个共享独立配置,如在[global]设置,将应用并覆盖所有共享设置

    IPv4 network/prefix: 172.25.0.0/24 IPv4前缀: 172.25.0.
    IPv4 network/netmask: 172.25.0.0/255.255.255.0
    主机名: desktop.example.com
    以example.com后缀的主机名: .example.com

    示例:
    hosts allow = 172.25.

    hosts allow = 172.25. .example.com

    hosts deny 拒绝指定主机访问

      config file=/etc/samba/conf.d/%U 用户独立的配置文件
    Log file=/var/log/samba/log.%m 不同客户机采用不同日志
    log level = 2 日志级别,默认为0,不记录日志
    max log size=50 日志文件达到50K,将轮循rotate,单位KB

    Security三种认证方式:

    share:匿名(CentOS7不再支持)
    user:samba用户(采有linux用户,samba的独立口令)
    domain:使用DC(DOMAIN CONTROLLER)认证

     passdb backend = tdbsam 密码数据库格式

    实现samba用户:

    包: samba-common-tools
    工具:smbpasswd pdbedit
    samba用户须是Linux用户,建议使用/sbin/nologin

    指定工作组名称

    (1)在samba服务端修改配置文件

    [root@centos7~]#vim /etc/samba/smb.conf   修改samba服务
    [global]                                                                                                                                         
            workgroup = WORKGROUP       修改组名为WORKGROUP
    [root@centos7~]#systemctl restart smb   重启smb服务
    

    (2)在客户端查看此时的samba修改后的组名

    [root@centos6~]#smbclient -L 192.168.34.100
    Enter root's password: 
    Anonymous login successful
    Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.8.3]
    
    	Sharename       Type      Comment
    	---------       ----      -------
    	print$          Disk      Printer Drivers
    	IPC$            IPC       IPC Service (Samba 4.8.3)
    Anonymous login successful
    Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.8.3]
    
    	Server               Comment
    	---------            -------
    	CENTOS7              Samba 4.8.3
    	LPJ-PC               
    
    	Workgroup            Master
    	---------            -------
    	WORKGROUP            LPJ-PC    组名已经修改为WORDGROUP
    

     管理SAMBA用户

        添加samba用户

    smbpasswd -a <user>
    pdbedit -a -u <user>

    修改用户密码

    smbpasswd <user>

    删除用户和密码:

    smbpasswd –x <user>
    pdbedit –x –u <user>

    查看samba用户列表:

    /var/lib/samba/private/passdb.tdb
    pdbedit –L –v

    查看samba服务器状态

    smbstatus

    (1)添加两个linux系统账号,并加入到samba服务器中,作为samba服务器的账号

    [root@centos7~]#useradd -s /sbin/nologin  smbuser1
    [root@centos7~]#useradd -s /sbin/nologin  smbuser2
    [root@centos7~]#smbpasswd -a smbuser1    将linux系统的用户账号添加到samba服务器中
    New SMB password:
    Retype new SMB password:
    Added user smbuser1.
    [root@centos7~]#smbpasswd -a smbuser2   将linux系统用户账号添加到samba服务器中
    New SMB password:
    Retype new SMB password:
    Added user smbuser2.
    

    (2)通过pdbedit命令查看当前samba服务器的用户账号

    [root@centos7~]#pdbedit -L
    smbuser1:1002:
    smbuser2:1003:
    

     利用samba服务共享目录

    (1)在samba服务端新建一个samba目录

    [root@centos7data]#ls
    f1  ftproot  ftproot2  nfsdir1  nfsdir2  www
    [root@centos7data]#mkdir smbshare   新建一个smbshare目录
    [root@centos7data]#cp /etc/fstab  /data/smbshare/f1   复制的文件重命名为f1
    [root@centos7data]#cp /etc/fstab  /data/smbshare/f2   复制的文件重命名为f2
    

    (2)修改samba服务配置文件

    [root@centos7data]#vim /etc/samba/smb.conf
    [share]  指定共享的文件名
    path=/data/smbshare  指定共享目录路径
    read only=YES    默认为只读文件
    write list = smbuser1   只允许smbuser1进行写

     在客户端也可以直接挂载共享的文件(此方法会暴露历史密码)

    [root@centos6~]#mount  -o username=smbuser1,password=centos  //192.168.34.100/share  /mnt 

    (3)重启samba服务

    [root@centos7data]#systemctl restart smb
    

    (4)将共享的目录加上写权限

    [root@centos7data]#chmod 777 smbshare
    [root@centos7data]#ll -d smbshare
    drwxrwxrwx 2 root root 26 Dec  4 20:18 smbshare
    

     在linux客户端可以看到当前共享的文件

    [root@centos6~]#smbclient //192.168.34.100/share  -U smbuser1%centos
    Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.8.3]
    smb: > pwd
    Current directory is \192.168.34.100share
    smb: > ls
      .                                   D        0  Wed Dec  4 20:18:32 2019
      ..                                  D        0  Wed Dec  4 20:18:25 2019
      f1                                         595  Wed Dec  4 20:18:27 2019
      f2                                         595  Wed Dec  4 20:18:32 2019
    
    		51175 blocks of size 1048576. 51142 blocks available
    

     (5)此时在windows上开始栏输入运行,然后用smbuser1用户登陆共享目录,可以在共享目录中新建文件(即写文件)

    登陆smbuser1账号

    在共享目录中新建文件

    之前登陆的账号已经被记录到windows系统中,此时需要将文件删除,删除之前需要将之前的共享文件关掉 

     此时再登陆smbuser2账号

    由于smbuser2账号只有只读权限,没有写权限,此时就无法创建文件

     

    每个共享目录应该有独立的[ ]部分

    [共享名称] 远程网络看到的共享名称
    comment 注释信息
    path 所共享的目录路径
    public 能否被guest访问的共享,默认no,和guest ok 类似
    browsable 是否允许所有用户浏览此共享,默认为yes,no为隐藏
    writable=yes 可以被所有用户读写,默认为no
    read only=no 和writable=yes等价,如与以上设置冲突,放在后面的设置生效,默认只读
    write list 三种形式:用户,@组名,+组名,用,分隔
        如writable=no,列表中用户或组可读写,不在列表中用户只读
    valid users 特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔
    

    实现用户独立的配置文件  

     (1)在samba服务中修改全局性的配置文件

    [root@centos7data]#vim /etc/samba/smb.conf
    [global]
           
            config file=/etc/samba/conf.d/%U                                                                                                         
        

     (2)新建一个目录(/etc/samba/conf.d)

    [root@centos7data]#mkdir /etc/samba/conf.d
    [root@centos7data]#cd /etc/samba/conf.d
    [root@centos7conf.d]#vim smbuser1
    [share]
    path=/data/smbuser1   指定共享的目录文件
    

    (3)新建一个指定的smbuser1目录,并在共享目录下新建一个文件,重启smb服务

    [root@centos7conf.d]#mkdir /data/smbuser1
    [root@centos7conf.d]#cd /data/smbuser1
    [root@centos7smbuser1]#touch smbuserfile
    [root@centos7smbuser1]#systemctl restart smb
    

     (4)此时在windows登陆smbuser1账号

     共享的目录文件就是新建的smbuserfile文件

     

     不同客户机采用不同日志

    (1)在samba配置文件中指定日志路径

    [root@centos7smbuser1]#vim /etc/samba/smb.conf
    [global]
    
            Log file=/var/log/samba/log.%m
            log level = 2    日志级别,默认为0,不记录日志

     (2)重启samba服务,并查看日志文件信息

    [root@centos7smbuser1]#systemctl restart smb   重启samba服务
    [root@centos7smbuser1]#cat /var/log/samba/log.smbd   查看指定日志路径文件信息
    [2019/12/04 19:36:52.004069,  0] ../lib/util/become_daemon.c:138(daemon_ready)
      daemon_ready: STATUS=daemon 'smbd' finished starting up and ready to serve connections
    [2019/12/04 19:38:26.694305,  0] ../lib/util/become_daemon.c:138(daemon_ready)
      daemon_ready: STATUS=daemon 'smbd' finished starting up and ready to serve connections
    [2019/12/04 19:40:23.463666,  0] ../lib/util/become_daemon.c:138(daemon_ready)
      daemon_ready: STATUS=daemon 'smbd' finished starting up and ready to serve connections
    

    此时客户端登陆samba服务

    查看客户端登陆的log日志信息,最后一行可以看到是通过登录smbuser1账号登录

      

     

     

     

     

      

      

      

      

      

     

  • 相关阅读:
    linux每日命令(31):tar命令
    Django——model基础
    Django——模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)
    Django
    linux每日命令(30):Linux 用户及用户组相关文件、命令详解
    linux每日命令(29):chown命令
    20170430深圳Meetup
    静态库嵌套引用问题
    JD-Store购物网站复盘——20170312
    20170305Meetup Git、heroku drop db
  • 原文地址:https://www.cnblogs.com/struggle-1216/p/11984513.html
Copyright © 2020-2023  润新知