zoukankan      html  css  js  c++  java
  • Samba简介与配置(匿名&本地用户验证)

    Samba简介

    Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。

    在此之前我们已经了解了NFS,NFS与samba一样,也是在网络中实现文件共享的一种实现,但不幸的是,其不支持windows平台,而本章要提到的samba是能够在任何支持SMB协议的主机之间共享文件的一种实现,当然也包括windows。

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

    SMB协议是C/S型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。

    Samba监听端口:

    • TCP:相对应的服务是smbd服务,其作用是提供对服务器中文件、打印资源的共享访问。
      • 139
      • 445
    • UDP:相对应的服务是nmbd服务,其作用是提供基于NetBIOS主机名称的解析。
      • 137
      • 138

    samba进程:

    • nmbd:对应netBIOS
    • smbd:对应cifs协议
    • winbindd+ldap:对应Windows AD活动目录

    samba用户:

    • 账户:都是系统用户/etc/passwd
    • 密码:Samba服务自有密码文件,通过smbpasswd -a USERNAME命令设置
    #smbpasswd命令:
        -a Sys_User #添加系统用户为samba用户并为其设置密码
        -d          #禁用用户帐号
        -e          #启用用户帐号
        -x          #删除用户帐号
    

    Samba安全级别:

    • user:基于本地的验证
    • server:由另一台指定的服务器对用户身份进行认证
    • domain:由域控进行身份验证
    • share:匿名访问(现版本已取消这个安全级别,匿名访问配置方式发生了改变)

    Samba配置文件:

    • /etc/samba/smb.conf
      • [global]:全局配置,此处的设置项对整个samba服务器都有效
      • [homes]:宿主目录共享设置,此处用来设置Linux用户的默认共享,对应用户的宿主目录。当用户访问服务器中与自己用户名同名的共享目录时,通过验证后将会自动映射到该用户的宿主目录中
      • [printers]:打印机共享设置

    常用配置文件参数:

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

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

    配置Samba

    配置匿名共享

    #安装Samba
    [root@lynkser ~]# yum -y install samba
    
    #编辑配置文件
    [root@lynkser ~]# vim /etc/samba/smb.conf
    [global]
            map to guest = Bad_User
    
    #创建共享目录
    [root@lynkser ~]# mkdir /share
    [root@lynkser ~]# chmod 777 /share/
    
    #添加共享配置
    [root@lynkser ~]# vim /etc/samba/smb.conf
    [lynk]
            comment = lynk
            path = /opt/share
            browseable = yes
            guest ok = yes
            writable = yes
            public = yes
    
    #检查下配置有没有问题
    [root@lynkser ~]# testparm /etc/samba/smb.conf
    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 "[lynk]"
    Loaded services file OK.
    Server role: ROLE_STANDALONE
    
    #启动服务
    [root@lynkser ~]# systemctl start smb 
    [root@lynkser ~]# systemctl enable smb
    
    #添加用户
    [root@Lynkser ~]# useradd Bad_User
    [root@Lynkser ~]# smbpasswd -a Bad_User
    New SMB password:
    Retype new SMB password:
    Added user BadUser.
    
    
    #配置防火墙富规则
    [root@lynkser ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.26.0/24 service name=samba accept' --permanent
    success
    [root@lynkser ~]# firewall-cmd --reload
    success
    
    #配置SElinux
    [root@lynkser ~]# setsebool -P samba_enable_home_dirs on
    [root@lynkser ~]# chcon -Rt samba_share_t /opt/share
    

    在客户端验证服务

    #安装Samba客户端
    [root@lynk ~]# yum install -y samba-client
    
    #配置防火墙富规则
    [root@lynk ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.26.129 service name=samba accept' --permanent
    success
    [root@lynk ~]# firewall-cmd --reload
    success
    
    #查看共享的资源
    [root@lynk ~]# smbclient -L 192.168.26.129 -U "Bad User"
    Enter SAMBABad User's password: 
    OS=[Windows 6.1] Server=[Samba 4.6.2]
    
    	Sharename       Type      Comment
    	---------       ----      -------
    	print$          Disk      Printer Drivers
    	lynk            Disk      lynk
    	IPC$            IPC       IPC Service (Samba 4.6.2)
    OS=[Windows 6.1] Server=[Samba 4.6.2]
    
    	Server               Comment
    	---------            -------
    
    	Workgroup            Master
    	---------            -------
    
    #挂载Samba服务端共享文件到本地
    [root@lynk ~]# mkdir /opt/share
    [root@lynk ~]# mount -t cifs //192.168.26.129/lynk /opt/share -o username='Bad User'
    [root@lynk ~]# df -h
    Filesystem             Size  Used Avail Use% Mounted on
    /dev/sda3               18G  1.4G   17G   8% /
    devtmpfs               479M     0  479M   0% /dev
    tmpfs                  489M     0  489M   0% /dev/shm
    tmpfs                  489M  6.7M  482M   2% /run
    tmpfs                  489M     0  489M   0% /sys/fs/cgroup
    /dev/sda1              297M  108M  190M  37% /boot
    tmpfs                   98M     0   98M   0% /run/user/0
    /dev/sr0               3.8G  3.8G     0 100% /cdrom
    //192.168.26.129/lynk   18G  1.4G   17G   8% /opt/share
    
    #测试文件权限
    [root@lynk ~]# cd /opt/share
    [root@lynk share]# touch a
    [root@lynk share]# mkdir b
    [root@lynk share]# ll
    total 0
    -rw-r--r--. 1 nobody nobody 0 Jan 14 18:23 a
    drwxr-xr-x. 2 nobody nobody 0 Jan 14 18:23 b
    

    配置用户认证共享

    #安装samba
    [root@lynkser ~]# yum -y install samba
    
    #新建samba用户并设置密码
    [root@lynkser ~]# useradd -M lynksmb
    [root@lynkser ~]# smbpasswd -a lynksmb
    New SMB password:
    Retype new SMB password:
    Added user lynksmb.
    
    #将lynksmb映射为share用户
    [root@lynkser ~]# echo 'lynksmb = share' >> /etc/samba/smbusers
    
    #编辑配置文件
    [root@lynkser ~]# vim /etc/samba/smb.conf
            username map = /etc/samba/smbusers
    
    #创建共享文件并更改属主
    [root@lynkser ~]# mkdir /opt/share
    [root@lynkser ~]# chown -R lynk.lynk /opt/share
    
    #添加一个共享配置
    [lynk]
            comment = lynk
            path = /opt/share
            browseable = yes
            guest ok = yes
            writable = yes
            write list = share
            public = yes
    
    #检查配置文件
    [root@lynkser ~]# testparm /etc/samba/smb.conf
    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 "[lynk]"
    Loaded services file OK.
    Server role: ROLE_STANDALONE
    
    #启动服务
    [root@lynkser ~]# systemctl start smb 
    [root@lynkser ~]# systemctl enable smb
    
    #配置防火墙富规则
    [root@lynkser ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.26.0/24 service name=samba accept' --permanent
    success
    [root@lynkser ~]# firewall-cmd --reload
    success
    
    #配置SElinux
    [root@lynkser ~]# setsebool -P samba_enable_home_dirs on
    [root@lynkser ~]# chcon -Rt samba_share_t /opt/share
    

    在客户端验证服务

    #安装Samba客户端
    [root@lynk ~]# yum install -y samba-client
    
    #配置防火墙富规则
    [root@lynk ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.26.129 service name=samba accept' --permanent
    success
    [root@lynk ~]# firewall-cmd --reload
    success
    
    #查看共享资源
    [root@lynk ~]# smbclient -L 192.168.26.129 -U share
    Enter SAMBAshare's password: 
    Domain=[LYNKSER] OS=[Windows 6.1] Server=[Samba 4.6.2]
    
    	Sharename       Type      Comment
    	---------       ----      -------
    	print$          Disk      Printer Drivers
    	lynk            Disk      lynk
    	IPC$            IPC       IPC Service (Samba 4.6.2)
    	lynksmb         Disk      Home Directories
    Domain=[LYNKSER] OS=[Windows 6.1] Server=[Samba 4.6.2]
    
    	Server               Comment
    	---------            -------
    
    	Workgroup            Master
    	---------            -------
    
    #挂载Samba服务端共享文件到本地
    [root@lynk ~]# mkdir /opt/share
    [root@lynk ~]# mount -t cifs //192.168.26.129/lynk /opt/share/ -o username=share,password=wasdjkl
    [root@lynk ~]# df -h
    Filesystem             Size  Used Avail Use% Mounted on
    /dev/sda3               18G  1.4G   17G   8% /
    devtmpfs               479M     0  479M   0% /dev
    tmpfs                  489M     0  489M   0% /dev/shm
    tmpfs                  489M  6.7M  482M   2% /run
    tmpfs                  489M     0  489M   0% /sys/fs/cgroup
    /dev/sda1              297M  108M  190M  37% /boot
    tmpfs                   98M     0   98M   0% /run/user/0
    /dev/sr0               3.8G  3.8G     0 100% /cdrom
    //192.168.26.129/lynk   18G  1.4G   17G   8% /opt/share
    
    #测试文件权限
    [root@lynk ~]# cd /opt/share
    [root@lynk share]# touch a
    [root@lynk share]# mkdir b
    

    实例

    需求:

    1. 在server上配置SAMBA服务
    2. SAMBA服务器必须是STAFF工作组的一个成员
    3. 共享/common目录,共享名为common
    4. 只有192.168.26.0/24域内的客户端可以访问common共享
    5. common共享必须是可以浏览的
    6. natasha可以浏览共享中的内容,验证密码为tangkai
    [root@lynkser ~]# yum install -y samba-*
    [root@lynkser ~]# vim /etc/samba/smb.conf
            workgroup = STAFF
    [common]
            path = /common
            browseable = yes
    
    [root@lynkser samba]# mkdir /common
    [root@lynkser samba]# systemctl mask iptables.service ebtables.service 
    Created symlink from /etc/systemd/system/iptables.service to /dev/null.
    Created symlink from /etc/systemd/system/ebtables.service to /dev/null.
    [root@lynkser samba]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.26.0/24 service
     name=samba accept' --permanent 
    success
    [root@lynkser samba]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.26.0/24 service name=samba-client accept' --permanent 
    success
    [root@lynkser samba]# firewall-cmd --reload
    success
    [root@lynkser samba]# useradd natasha
    [root@lynkser samba]# smbpasswd -a natasha
    New SMB password:
    Retype new SMB password:
    Added user natasha.
    [root@lynkser samba]# setfacl -m u:natasha:r-x /common
    [root@lynkser samba]# setsebool -P samba_enable_home_dirs 1
    [root@lynkser samba]# chcon -Rt samba_share_t /common
    [root@lynkser samba]# systemctl start smb nmb
    [root@lynkser samba]# systemctl enable smb nmb
    Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.
    Created symlink from /etc/systemd/system/multi-user.target.wants/nmb.service to /usr/lib/systemd/system/nmb.service.
    
    [root@lynk ~]# yum install -y samba-client*
    [root@lynk ~]# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=192.168.26.129 service name=samba-client accept' --permanent 
    success
    [root@lynk ~]# firewall-cmd --reload
    success
    [root@lynk ~]# mount -t cifs -o username=natasha,password=tangkai //192.168.26.129/common /mnt
    [root@lynk ~]# df -h
    Filesystem               Size  Used Avail Use% Mounted on
    /dev/sda3                 18G  1.4G   17G   8% /
    devtmpfs                 479M     0  479M   0% /dev
    tmpfs                    489M     0  489M   0% /dev/shm
    tmpfs                    489M  6.7M  482M   2% /run
    tmpfs                    489M     0  489M   0% /sys/fs/cgroup
    /dev/sda1                297M  108M  190M  37% /boot
    tmpfs                     98M     0   98M   0% /run/user/0
    /dev/sr0                 3.8G  3.8G     0 100% /cdrom
    //192.168.26.129/common   18G  1.4G   17G   8% /mnt
    [root@lynk ~]# cd /mnt
    [root@lynk mnt]# ll
    total 0
    -rw-r--r--. 1 root root 0 Jan 15 00:04 aa
    
    1. 在server通过samba共享目录/storage
    2. 共享名为share
    3. 共享目录只能被192.168.26.0/24内的用户使用
    4. 共享目录share可以浏览
    5. 用户sarah能以读的方式访问此共享,密码为tangkai
    6. 用户kitty能以读写的方式访问此共享,密码为tangkai
    7. 此共享永久挂载在客户机的/mnt/dev目录,并使用用户sarah进行认证,任何用户可以临时通过kitty获得读写权限
    [root@lynkser common]# mkdir /storage
    [root@lynkser common]# chcon -Rt samba_share_t /storage
    [root@lynkser common]# adduser sarah
    [root@lynkser common]# adduser kitty
    [root@lynkser common]# smbpasswd -a sarah
    New SMB password:
    Retype new SMB password:
    Added user sarah.
    [root@lynkser common]# smbpasswd -a kitty
    New SMB password:
    Retype new SMB password:
    Added user kitty.
    [root@lynkser common]# setfacl -m u:sarah:r-x /storage
    [root@lynkser common]# setfacl -m u:kitty:rwx /storage
    [root@lynkser common]# vim /etc/samba/smb.conf
    [common]
            path = /common
            browseable = yes
            valid user = natasha
    [share]
            path = /storage
            browseable = yes
            valid user = sarah,kitty
            writable = no
            write list = kitty
    
    [root@lynkser common]# systemctl reload smb nmb
    
    [root@lynk /]# umount /mnt
    [root@lynk /]# mkdir /mnt/dev
    [root@lynk /]# vim /etc/fstab
    //192.168.26.129/share /mnt/dev cifs multiuser,username=sarah,password=tangkai,sec=ntlmssp 0 0
    
    [root@lynk /]# vim /etc/fstab
    [root@lynk /]# yum -y install cifs-utils*
    [root@lynk /]# ls /home
    lynk
    [root@lynk /]# su - lynk
    [lynk@lynk ~]$ cifscreds add -u kitty 192.168.26.129
    Password: 
    
  • 相关阅读:
    个人作业二-举例分析流程图与活动图的区别与联系
    四则运算
    实验四 决策树算法及应用
    实验三 朴素贝叶斯算法及应用
    实验二 K-近邻算法及应用
    实验一 感知器及其应用
    实验三 面向对象分析与设计
    实验二 结构化分析与设计
    实验一 软件开发文档与工具的安装与使用
    ATM管理系统
  • 原文地址:https://www.cnblogs.com/lynk/p/10270813.html
Copyright © 2011-2022 走看看