Samba简介与配置(匿名&本地用户验证)

Posted lynk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
[[email protected] ~]# yum -y install samba

#编辑配置文件
[[email protected] ~]# vim /etc/samba/smb.conf
        map to guest = Bad User

#创建共享目录
[[email protected] ~]# mkdir /share
[[email protected] ~]# chmod 777 /opt/share/

#添加共享配置
[[email protected] ~]# vim /etc/samba/smb.conf
[lynk]
        comment = lynk
        path = /opt/share
        browseable = yes
        guest ok = yes
        writable = yes
        public = yes

#检查下配置有没有问题
[[email protected] ~]# 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

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

#配置防火墙富规则
[[email protected] ~]# firewall-cmd --add-rich-rule ‘rule family=ipv4 source address=192.168.26.0/24 service name=samba accept‘ --permanent
success
[[email protected] ~]# firewall-cmd --reload
success

#关闭SElinux
[[email protected] ~]# setenforce 0

在客户端验证服务

#安装Samba客户端
[[email protected] ~]# yum install -y samba-client

#配置防火墙富规则
[[email protected] ~]# firewall-cmd --add-rich-rule ‘rule family=ipv4 source address=192.168.26.129 service name=samba accept‘ --permanent
success
[[email protected] ~]# firewall-cmd --reload
success

#查看共享的资源
[[email protected] ~]# 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服务端共享文件到本地
[[email protected] ~]# mkdir /opt/share
[[email protected] ~]# mount -t cifs //192.168.26.129/lynk /opt/share -o username=‘Bad User‘
[[email protected] ~]# 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

#测试文件权限
[[email protected] ~]# cd /opt/share
[[email protected] share]# touch a
[[email protected] share]# mkdir b
[[email protected] 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
[[email protected] ~]# yum -y install samba

#新建samba用户并设置密码
[[email protected] ~]# useradd -M lynksmb
[[email protected] ~]# smbpasswd -a lynksmb
New SMB password:
Retype new SMB password:
Added user lynksmb.

#将lynksmb映射为share用户
[[email protected] ~]# echo ‘lynksmb = share‘ >> /etc/samba/smbusers

#编辑配置文件
[[email protected] ~]# vim /etc/samba/smb.conf
        username map = /etc/samba/smbusers

#创建共享文件并更改属主
[[email protected] ~]# mkdir /opt/share
[[email protected] ~]# chown -R lynk.lynk /opt/share

#添加一个共享配置
[lynk]
        comment = lynk
        path = /opt/share
        browseable = yes
        guest ok = yes
        writable = yes
        write list = share
        public = yes

#检查配置文件
[[email protected] ~]# 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

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

#配置防火墙富规则
[[email protected] ~]# firewall-cmd --add-rich-rule ‘rule family=ipv4 source address=192.168.26.0/24 service name=samba accept‘ --permanent
success
[[email protected] ~]# firewall-cmd --reload
success

#关闭SElinux
[[email protected] ~]# setenforce 0

在客户端验证服务

#安装Samba客户端
[[email protected] ~]# yum install -y samba-client

#配置防火墙富规则
[[email protected] ~]# firewall-cmd --add-rich-rule ‘rule family=ipv4 source address=192.168.26.129 service name=samba accept‘ --permanent
success
[[email protected] ~]# firewall-cmd --reload
success

#查看共享资源
[[email protected] ~]# 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服务端共享文件到本地
[[email protected] ~]# mkdir /opt/share
[[email protected] ~]# mount -t cifs //192.168.26.129/lynk /opt/share/ -o username=share,password=wasdjkl
[[email protected] ~]# 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

#测试文件权限
[[email protected] ~]# cd /opt/share
[[email protected] share]# touch a
[[email protected] share]# mkdir b

以上是关于Samba简介与配置(匿名&本地用户验证)的主要内容,如果未能解决你的问题,请参考以下文章

Samba文件共享

Samba服务(匿名用户访问本地用户访问虚拟用户访问)

samba服务及配置

samba服务及配置

samba服务本地用户访问共享文件夹

Linux虚拟机设置Samba服务