Samba简介

  • Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
  • Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享。
  • Samba由两个主要程序组成,它们是smbd和nmbd。这两个守护进程在服务器启动到停止期间持续运行,功能各异。Smbd和nmbd使用的全部配置信息全都保存在smb.conf文件中。Smb.conf向smbd和nmbd两个守护进程说明输出什么以便共享,共享输出给谁及如何进行输出。
    • nmbd :这个 daemon 是用来管理工作组啦、NetBIOS name 啦等等的解析。主要利用 UDP 协议开启 port 137, 138 来负责名称解析的任务;
    • smbd :这个 daemon 的主要功能就是用来管理 SAMBA 主机分享的目录、档案与打印机等等。 主要利用可靠的 TCP 协议来传输数据,开放的端口为 139 及 445(不一定存在) 。
  • Samba提供了基于CIFS的四个服务:文件和打印服务、授权与被授权、名称解析、浏览服务。前两项服务由smbd提供,后两项服务则由nmbd提供。 简单地说,smbd进程的作用是处理到来的SMB软件包,为使用该软件包的资源与Linux进行协商,nmbd进程使主机(或工作站)能浏览Linux服务器。

在本教程中,将展示如何在CentOS 7上安装Samba并将其配置为独立服务器,以通过网络在不同操作系统之间提供文件共享。

环境准备

属性 Samba服务端 Samba客户端
节点 wencheng-smb windows10
系统 CentOS Linux release 7.5.1804 (Minimal) windows10 企业版
内核 3.10.0-862.el7.x86_64 windows10 企业版2019 x64
IP地址 172.16.70.185 172.16.70.50
SELinux setenforce 0 | disabled  

检查安装Samba

[root@wencheng-smb ~]# rpm -qa | grep samba
[root@wencheng-smb ~]# yum install -y samba
[root@wencheng-smb ~]# smbd -V
Version 4.10.16

设置防火墙允许Samba策略

[root@wencheng-smb ~]# firewall-cmd --add-service samba --permanent
[root@wencheng-smb ~]# firewall-cmd --zone=public --add-port=137/udp --permanent
[root@wencheng-smb ~]# firewall-cmd --zone=public --add-port=138/udpp --permanent
[root@wencheng-smb ~]# firewall-cmd --zone=public --add-port=139/tcp --permanent
[root@wencheng-smb ~]# firewall-cmd --zone=public --add-port=445/tcp --permanent
[root@wencheng-smb ~]# firewall-cmd --reload
[root@wencheng-smb ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh dhcpv6-client samba
ports: 139/tcp 137/tcp 138/tcp 445/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

 情景一:配置匿名访问, 任何人都可以访问的共享目录(允许上传、删除、修改文件)。

[root@wencheng-smb ~]# mv /etc/samba/smb.conf /etc/samba/smb.conf_bak
[root@wencheng-smb ~]# vim /etc/samba/smb.conf
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it. [global]
workgroup = SAMBA    # 设定Samba Server所要加入的工作组或者域
security = user     # 安全性等级share<user<domain
map to guest = Bad User  # 允许匿名用户访问
log file = /var/log/samba/log.%m  # 日志文件路径,宏%m表示客户端主机的Netbios名
max log size = 50   # 每个log日志的最大容量为50K ,单位是kb ,0代表不做限制
display charset = UTF8 [public]
comment = Share Directories  # 共享的描述
path = /data/samba/shares/public  # 共享目录的路径
public = yes    # 开启共享
writeable = yes  # 开启写权限,默认只读权限
create mask = 0640
directory mask = 0755 [root@wencheng-smb ~]# testparm  # 测试smb.conf语法的正确性
Load smb config files from /etc/samba/smb.conf
Unknown parameter encountered: "max log siza"
Ignoring unknown parameter "max log siza"
Loaded services file OK.
Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions  # 直接回车 # Global parameters
[global]
log file = /var/log/samba/log.%m
map to guest = Bad User
max log size = 50
security = USER
workgroup = SAMBA
idmap config * : backend = tdb [public]
comment = Public Directories
create mask = 0640
writeable = yes
path = /data/samba/shares/public
  read only = No
  • 创建共享文件夹,并设置权限。
[root@wencheng-smb ~]# mkdir -p /data/samba/shares/public
[root@wencheng-smb ~]# mkdir /data/samba/shares/public/public{1..3}
[root@wencheng-smb ~]# touch /data/samba/shares/public/public{4..6}
[root@wencheng-smb ~]# ls /data/samba/shares/public/
public1 public2 public3 public4 public5 public6 [root@wencheng-smb ~]# chown nobody.nobody /data/samba/shares/public/
[root@wencheng-smb ~]# ls -ld /data/samba/shares/public/
drwxr-xr-x. 5 nobody nobody 96 May 25 16:07 /data/samba/shares/public/
  • 启动Samba服务。
[root@wencheng-smb ~]# systemctl start smb.service nmb.service
[root@wencheng-smb ~]# systemctl enable smb.service nmb.service [root@wencheng-smb ~]# netstat -nutpl | grep -E 'smbd|nmbd'
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 130587/smbd
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 130587/smbd
tcp6 0 0 :::445 :::* LISTEN 130587/smbd
tcp6 0 0 :::139 :::* LISTEN 130587/smbd
udp 0 0 172.16.70.255:137 0.0.0.0:* 130591/nmbd
udp 0 0 172.16.70.185:137 0.0.0.0:* 130591/nmbd
udp 0 0 0.0.0.0:137 0.0.0.0:* 130591/nmbd
udp 0 0 172.16.70.255:138 0.0.0.0:* 130591/nmbd
udp 0 0 172.16.70.185:138 0.0.0.0:* 130591/nmbd
udp 0 0 0.0.0.0:138 0.0.0.0:* 130591/nmbd

Win10客户端测试连接。

  • Win + R 组合键,调出运行窗口 。

    

  • 输入Samba服务器IP。

    

  • 再次按 Win + R 组合键,调出运行窗口,并输入:gpedit.msc 命令,确定或回车,可以快速打开本地组策略编辑器。

    

  • 本地组策略编辑器窗口中,依次展开到:计算机配置 - 管理模板 - 网络 - Lanman 工作站,找到并双击打开“启用不安全的来宾登录”选项,并启用。

    

  • 再次访问Samba服务器IP。

    

    

  • 可执行写入,删除操作。

    

情景二:配置用户可以访问多个部门的共享目录。

[root@wencheng-smb samba]# cat smb.conf
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it. [global]
workgroup = SAMBA
server string = WenCheng Samba Server Version %v
netbios name = WenChengSamba
security = user
log file = /var/log/samba/log.%m
max log size = 50
map to guest = Bad User
display charset = UTF8 [public]
comment = Public Directories
path = /data/samba/shares/public
public = yes
writeable = no    # 关闭匿名用户写权限
create mask = 0644
directory mask = 0755
     write list = samba   # 只允许samba管理员用户写 [devops]
comment = Devops Directories
path = /data/samba/shares/devops
public = no
writable = yes
create mask = 0640
directory mask = 0750
admin users = devops
valid users = @devops,samba
write list = @devops,samba [market]
comment = Market Directories
path = /data/samba/shares/market
public = no
writable = yes
create make = 0640
directory mask = 0750
admin users = market
valid users = @market,samba
write list = @market,samba 共享目录说明:
  public :所有匿名用户只可读,samba管理员用户可读可写
  devops : 只允许@devops,@samba组用户可读可写
  market : 只允许@devops,@samba组用户可读可写
  • 验证smb.conf配置文件,并重启smb和nmb服务。
[root@wencheng-smb samba]# testparm
Load smb config files from /etc/samba/smb.conf
Unknown parameter encountered: "display charset"
Ignoring unknown parameter "display charset"
Unknown parameter encountered: "create make"
Ignoring unknown parameter "create make"
Loaded services file OK.
Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions # Global parameters
[global]
log file = /var/log/samba/log.%m
map to guest = Bad User
max log size = 50
netbios name = WENCHENGSAMBA
security = USER
server string = WenCheng Samba Server Version %v
workgroup = SAMBA
idmap config * : backend = tdb [public]
comment = Public Directories
create mask = 0640
guest ok = Yes
path = /data/samba/shares/public
write list = samba [devops]
admin users = devops
comment = Devops Directories
create mask = 0644
path = /data/samba/shares/devops
read only = No
valid users = @devops @samba
write list = @devops @samba [market]
admin users = market
comment = Market Directories
path = /data/samba/shares/market
read only = No
valid users = @market @samb [root@wencheng-smb ~]# systemctl restart smb nmb
  • 创建普通用户及管理员账号; 创建共享目录;并分配给目录相关权限。
[root@wencheng-smb ~]# useradd -M -s /sbin/nologin samba      # Samba管理员
[root@wencheng-smb ~]# useradd -M -s /sbin/nologin devops      # devops部门管理员
[root@wencheng-smb ~]# useradd -M -s /sbin/nologin market      # market部门管理员
[root@wencheng-smb ~]# useradd -M -s /sbin/nologin -g devops user1  # devops部门用户
[root@wencheng-smb ~]# useradd -M -s /sbin/nologin -g market user2  # market部门用户 [root@wencheng-smb ~]# id samba
uid=1000(samba) gid=1000(samba) groups=1000(samba)
[root@wencheng-smb ~]# id devops
uid=1001(devops) gid=1001(devops) groups=1001(devops)
[root@wencheng-smb ~]# id market
uid=1002(market) gid=1002(market) groups=1002(market)
[root@wencheng-smb ~]# id user1
uid=1003(user1) gid=1001(devops) groups=1001(devops)
[root@wencheng-smb ~]# id user2
uid=1004(user2) gid=1002(market) groups=1002(market) [root@wencheng-smb ~]# mkdir -p /data/samba/shares/{public,devops,market}
[root@wencheng-smb ~]# mkdir /data/samba/shares/public/public{1..3}
[root@wencheng-smb ~]# mkdir /data/samba/shares/devops/devops{1..3}
[root@wencheng-smb ~]# mkdir /data/samba/shares/market/market{1..3}
[root@wencheng-smb ~]# touch /data/samba/shares/market/market{4..6}
[root@wencheng-smb ~]# touch /data/samba/shares/devops/devops{4..6}
[root@wencheng-smb ~]# touch /data/samba/shares/public/public{4..6}
[root@wencheng-smb ~]# ls /data/samba/shares/*
/data/samba/shares/devops:
devops1 devops2 devops3 devops4 devops5 devops6
/data/samba/shares/market:
market1 market2 market3 market4 market5 market6
/data/samba/shares/public:
public1 public2 public3 public4 public5 public6 # 修改属主属组几权限
[root@wencheng-smb ~]# chown samba.samba /data/samba/shares/
[root@wencheng-smb ~]# chown devops.devops /data/samba/shares/devops/
[root@wencheng-smb ~]# chmod 775 /data/samba/shares/devops/
[root@wencheng-smb ~]# chown market.market /data/samba/shares/market/
[root@wencheng-smb ~]# chmod 775 /data/samba/shares/market/
[root@wencheng-smb ~]# chown nobody.nobody /data/samba/shares/public/
[root@wencheng-smb ~]# chmod 775 /data/samba/shares/public/ [root@wencheng-smb ~]# setfacl -m u:samba:rwx /data/samba/shares/* [[root@wencheng-smb ~]# ls -ld /data/samba/shares/
drwxr-xr-x. 5 samba samba 48 May 28 10:09 /data/samba/shares/
[root@wencheng-smb ~]# ls -ld /data/samba/shares/*
drwxrwxr-x+ 5 devops devops 143 May 28 17:02 /data/samba/shares/devops
drwxrwxr-x+ 5 market market 143 May 28 17:02 /data/samba/shares/market
drwxrwxr-x+ 5 nobody nobody 96 May 28 10:06 /data/samba/shares/public [root@wencheng-smb ~]# getfacl /data/samba/shares/*
getfacl: Removing leading '/' from absolute path names
# file: data/samba/shares/devops
# owner: devops
# group: devops
user::rwx
user:samba:rwx
group::rwx
mask::rwx
other::r-x # file: data/samba/shares/market
# owner: market
# group: market
user::rwx
user:samba:rwx
group::rwx
mask::rwx
other::r-x # file: data/samba/shares/public
# owner: nobody
# group: nobody
user::rwx
user:samba:rwx
group::rwx
mask::rwx
other::r-x 将现有的用户添加到组。
usermod [-G] [GroupName] [UserName]
将现有的用户添加到多个组
usermod [-G] [GroupName1,GroupName2] [UserName] 将现有用户从组中移除。
gpasswd [-d] [UserName] [GroupName]
将现有多个用户添加到组。
gpasswd [-M] [UserName1,UserName2] [GroupName]

pdbedit命令解析

pdbedit 命令用于管理Samba服务的帐户信息数据库,格式为:"pdbedit [选项] 帐户"
第一次把用户信息写入到数据库时需要使用-a参数,以后修改用户密码、删除用户等等操作就不再需要了。  pdbedit -L :查看samba用户
 pdbedit -a -u user:添加samba用户
 pdbedit -r -u user:修改samba用户信息
 pdbedit -x -u user:删除samba用户  samba服务数据库的密码也可以用 smbpasswd 命令 操作
 smbpasswd -a user:添加一个samba用户
 smbpasswd -d user:禁用一个samba用户
 smbpasswd -e user:恢复一个samba用户
 smbpasswd -x user:删除一个samba用户
  • 将用户添加为Samba用户,这里以samba用户为例,其他用户类同,不再赘述。
[root@wencheng-smb ~]# pdbedit -a -u samba
Unknown parameter encountered: "display charset"
Ignoring unknown parameter "display charset"
new password:              # 登录samba密码
retype new password:          # 再次确认输入
Unix username: samba
NT username:
Account Flags: [U ]
User SID: S-1-5-21-2219792021-1567261761-1612575661-1000
Primary Group SID: S-1-5-21-2219792021-1567261761-1612575661-513
Full Name:
Home Directory: \\wenchengsamba\samba
HomeDir Drive:
Logon Script:
Profile Path: \\wenchengsamba\samba\profile
Domain: WENCHENGSAMBA
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Wed, 06 Feb 2036 23:06:39 CST
Kickoff time: Wed, 06 Feb 2036 23:06:39 CST
Password last set: Fri, 28 May 2021 12:24:14 CST
Password can change: Fri, 28 May 2021 12:24:14 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF [root@wencheng-smb ~]# pdbedit -L    # 查看samba用户
Unknown parameter encountered: "display charset"
Ignoring unknown parameter "display charset"
samba:1000:
devops:1001:
market:1002:
user1:1003:
user2:1004:
  • Win10测试连接Samba共享目录。

    

  • “public”文件夹允许所有用户可直接打开,但无法上传,删除操作。

    

  • 访问“devops”文件夹需账号密码。

    

Win10本机访问samba时用切换另一个用户登录。

方法如下:
1)按键ctrl+r,打开"运行",输入"cmd"
2)输入命令"net use * /delete",接着输入"Y",即先取消所有的net 连接

    

  • “devops”文件夹只允许devops用户及其组的用户(user1),samba管理员上传,删除操作。

    

  • “market”文件夹只允许market用户及其组的用户(user2),samba管理员上传,删除操作。

    

  • “pbulic”文件夹只允许samba管理员上传,删除操作。

    

至此,已实现Samba + Windows 文件共享。

如何在Linux下部署Samba服务?的更多相关文章

  1. Linux下部署Samba服务环境的操作记录

    关于Linux和Windows系统之间的文件传输,很多人选择使用FTP,相对较安全,但是有时还是会出现一些问题,比如上传文件时,文件名莫名出现乱码,文件大小改变等问题.相比较来说,使用Samba作为文 ...

  2. 如何在linux下开启FTP服务

    如何在linux下开启FTP服务 1. 首先服务器要安装ftp软件,查看是否已经安装ftp软件下:   #which vsftpd   如果看到有vsftpd的目录说明服务器已经安装了ftp软件 2. ...

  3. 如何在linux下搭建svn服务

    • 安装svn 使用命令 yum install subversion 如果提示上述错误,请以管理员身份运行 使用命令su root 再执行 yum install subversion 2,查看sv ...

  4. Linux系统部署samba服务记录

    Samba(Server Messages Block)是一种linux系统和windws系统之间依靠网络协议共享文件的服务程序,(Samba has provided secure, stable ...

  5. linux下部署monogoDB服务(以及安装php mogodb扩展)

    这两天网站转移到新的服务器后,登录时出现一个问题,会等待几分钟服务器才响应. 开始以为是nginx服务器的问题,后面经过排查发现是php一个登陆验证的函数的问题,每次跑到这个函数就会迟钝几分钟. 经过 ...

  6. linux下部署tomcat服务器之安装tomcat

    下载tomcat压缩包 apache-tomcat-7.0.82.tar.gz 在把包放到linux 的softwore文件夹下  自己选择文件夹 tar -zxvf apache-tomcat-7. ...

  7. linux下部署tomcat服务器之安装jdk

    如果一开始安装过jdk的可以卸载 rpm -qa | grep java rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x8 ...

  8. linux下部署nginx服务

    1.安装依赖包  yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 2.下载并解压安装包  cd /usr/loc ...

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

    如何在RHEL7上搭建Samba服务实现Windows与Linux之间的文件共享 实现环境:VMware workstations.RHEL7.0 第一步:配置网卡IP及yum软件仓库 命令:vim ...

随机推荐

  1. 大量客户名片如何轻松导入到CRM系统里?

    当您组织或参与了一次线下活动或展会,肯定会收集到非常多的潜在客户的名片.这个时候您是不是在发愁如何将这些信息导入到CRM系统中? 可以想到,您肯定会将这些名片分发给销售人员,让他们手动录入--这也确实 ...

  2. Tomcat的使用和配置

    Tomcat的使用 安装 在tomcat官网找到你需要用的 Tomcat 版本对应的 zip 压缩包,解压到需要安装的目录即可 目录介绍 bin : 专门用来存放Tomcat服务器的可执行文件 con ...

  3. MySQL配置HeartBeat实现心跳监控和浮动IP

    1. 初始化环境配置 /sbin/chkconfig --add mysqld /sbin/chkconfig mysqld on ln -s /usr/local/mysql/bin/mysql / ...

  4. Spring AOP 框架

    引言 要掌握 Spring AOP 框架,需要弄明白 AOP 的概念. AOP 概念 AOP(Aspect Oriented Programming的缩写,翻译为面向方面或面向切面编程),通过预编译方 ...

  5. IIC通信时遇到问题的解决

    如果遇到问题,反复查不到 就DEBUG  下单点运行,执行每一个SCK 和SDA的拉高拉低 看看是否能正常的拉高拉低 先解决掉底层的GPIO的控制问题, 有的时候可能数据引脚为特殊功能引脚

  6. MySQL之数据操纵语言(DML)

    数据操纵语言(DML) 数据操纵语(Data Manipulation Language),简称DML. DML主要有四个常用功能. 增 删 改 查 insert delete update sele ...

  7. 大作!webpack详细配置

    webpack学习之旅 好好学习 天天向上!遇到bug,不要慌! 文章目录 webpack学习之旅 大一统的模块化规范--ES6模块化 1.node.js中通过babel体验ES6模块化 2.ES6模 ...

  8. 树莓派 PICO基础教程(基于MicroPython)

    目录 1 树莓派 PICO 简介 1.1 简介 1.2 配置 [^2] 1.3 引脚图 1.4 尺寸 2 安装 2.1 烧录固件 2.2 安装IDE(Thonny IDE) 2.3 离线运行程序 3 ...

  9. 十二、.net core(.NET 6)添加通用的访问webapi的方法(包括HttpClient和HttpWebRequest)

    开发通用的访问webapi方法. 在common工具文件夹下,新建一个类库项目:Wsk.Core.WebHelper,并引用Package包项目,然后新建一个类HttpClientHelper,用于使 ...

  10. Spring Cloud Alibaba(13)---Sleuth概述

    Sleuth概述 前言 在微服务架构中,众多的微服务之间互相调用,如何清晰地记录服务的调用链路是一个需要解决的问题.同时,由于各种原因,跨进程的服务调用失败时,运维人员希望能够通过 查看日志和查看服务 ...