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 SAMBA\Bad 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 SAMBA\share'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:

Samba简介与配置(匿名&本地用户验证)的更多相关文章

  1. CentOS 6.8 ftp服务安装配置 基于本地用户和虚拟用户

    CentOS 6.8 ftp服务安装配置 基于本地用户和虚拟用户 一.安装ftp服务 1.检查是否已经安装 # rpm -qa | grep ftp ftp-0.17-54.el6.x86_64 vs ...

  2. 疑难问题解决备忘录(3)——ubuntu12.04配置vsftp本地用户登录

    vsftpd.conf相关项设置 local_enabled = YES write_enable=YES pam_service_name=ftp pam_service_name按默认的vsftp ...

  3. Samba服务的配置总结

    之前介绍了Linux下Samba服务器部署,这里简单总结下Samba服务参数的配置说明: Samba服务的主配置文件是smb.conf,默认在/etc/samba/目录下.smb.conf含有多个段, ...

  4. Linux:FTP服务匿名用户,本地用户,虚拟用户配置

    匿名用户  FTP协议占用两个端口号: 21端口:命令控制,用于接收客户端执行的FTP命令. 20端口:数据传输,用于上传.下载文件数据. 实验:匿名访问,服务器192.168.10.10    客户 ...

  5. 演示vsftpd服务匿名访问模式、本地用户模式的配置

    文件传输协议(FTP,File Transfer Protocol) 即能够让用户在互联网中上传.下载文件的文件协议,而FTP服务器就是支持FTP传输协议的主机,要想完成文件传输则需要FTP服务端和F ...

  6. 记录一次centos6.4版本的VSFTP本地用户登陆的配置

    其实vsftp是一个非常常用而且简单的服务,但是假如服务不是你配置的前者没有留下参考档案,的确是件头疼的事儿,特此记录下. 首先是vsftp的安装当然安装有源码的编译和yum等 这里我选择rpm包的y ...

  7. Linux:ftp服务本地用户,虚拟用户配置

    本地用户 1. 修改ftp配置文件,  anonymous_enable=NO   默认为YES,修改为NO,禁止匿名访问, 监听端口,可以根据自己的需求修改,为了安全起见自定义为好 2. /etc/ ...

  8. CentOS6.5下搭建ftp服务器(三种认证模式:匿名用户、本地用户、虚拟用户)

    CentOS 6.5下搭建ftp服务器 vsftpd(very secure ftp daemon,非常安全的FTP守护进程)是一款运行在Linux操作系统上的FTP服务程序,不仅完全开源而且免费,此 ...

  9. centos7 配置 ftp 服务器(本地用户)

    2021-09-02 1. 安装 # 安装 vsftpd yum -y install vsftpd 2. 启动服务并添加到开机自启 # 启动 vsftpd systemctl start vsftp ...

随机推荐

  1. percona-toolkit(pt-online-schema-change)工具包的安装和使用

    1.下载和安装percona toolkit的包 #yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/ ...

  2. [ExcelHome]15个常用的Excel函数公式,拿来即用

    微软最有价值专家(MVP)祝洪忠分享15个模式化的表格公式,大家有类似问题可以直接套用. 首先声明,我这个可称不上是什么公式大全,就是给各位新人朋友们入门学习的,高手请按返回键. 1.查找重复内容 = ...

  3. U3D学习12-黑暗之光实例

    1.static勾选后,在scene场景操作后,导致不断烘焙,cpu占用高? 取消自动烘焙 2.UI操作事件 //监听事件增加         mainInputField.onValueChange ...

  4. C语言 链表(Dev C++/分文件版)

    头文件:quechain.h struct Question { int _id; struct Question* pre; struct Question* next; }; void chain ...

  5. JavaWeb——XML转义符字

    被<![CDATA[]]>这个标记所包含的内容将表示为纯文本,比如<![CDATA[<]]>表示文本内容“<”.  此标记用于xml文档中,我们先来看看使用转义符的 ...

  6. scrapy-pipeline的方法

    scrapy中多个pipeline作用: 一个项目可能需要爬取多个网站,根据每个网站的数据量(处理方式)不同,可创建多个管道 pipeline class SpideranythingPipeline ...

  7. win7+win10系统使用日常经验集锦

    请保留此份 Cmd Markdown 的欢迎稿兼使用说明, 当然你也可以使用彩色字体. 或者使用小体字. 或者使用大体字. 如需撰写新稿件,点击顶部工具栏右侧的 新文稿 或者使用快捷键 Ctrl+Al ...

  8. Windows操作系统的版本

    Windows操作系统的版本号一览 操作系统 PlatformID 主版本号 副版本号 Windows95 1 4 0 Windows98 1 4 10 WindowsMe 1 4 90 Window ...

  9. jquery与原生JS实现增加、减小字号功能

    预览效果: 实现代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  10. IntelliJ IDEA2017 激活方法 最新的(亲测可用)

    IntelliJ IDEA2017 激活方法(亲测可用): 搭建自己的授权服务器,对大佬来说也很简单,我作为菜鸟就不说了,网上有教程. 我主要说第二种,现在,直接写入注册码,是不能成功激活的(如果你成 ...