Samba

Samba,是用来让Linux系列的操作系统与Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协议做连结的自由软件,最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享(Linux与Linux之间的资源共享更多用NFS实现)。
组成Samba运行的有两个服务,一个是SMB,另一个是NetBIOS。SMB是Samba的核心启动服务,主要负责建立Samba服务器与Samba客户机之间的对话,验证用户身份并提供对文件和打印系统的访问,监听139 TCP端口(增强版SMB协议CIFS直接监听445端口,CIFS不需要NetBIOS协议);而NetBIOS服务是负责解析,提供浏览网络上的共享资源列表,监听UDP端口137和138。

实现Samba

  • 安装Samba:
[root@smaba ~]# lsb_release -r
Release: 7.2.1511
[root@smaba ~]# yum -y install samba
[root@smaba ~]# rpm -qi samba
Name : samba
Epoch : 0
Version : 4.7.1
Release : 6.el7
Architecture: x86_64
[root@smaba ~]# systemctl stop firewalld.service
[root@smaba ~]# setenforce 0
  • Samba相关配置:
  主配置文件:/etc/samba/smb.conf
  主程序:nmbd(NetBIOS Name Server Daemon)、smbd(SMB/CIFS Daemon)
  Unit文件:smb.service和nmb.service
其中/etc/samba/smb.conf文件常见参数:
  全局配置:
[global]
workgroup=MYGROUP #工作组名
server string=Samba Server Version %v #服务器信息介绍
netbios name=MYSERVER #用netbios名来指定服务
interfaces=[interface1 interface2...|address1 address2...] #用于让samba服务监听多个网络接口或IP
hosts allow=[address1 address2...] #指定允许访问的主机IP
log file=/var/log/samba/log.%m #指定日志存放路径,%m为来访的主机名
max log size=50 #定义日志文件最大容量为50K
security=user #设置samba服务的安全认证方式为user
passdb backend=tdbsam #定义用户后台的类型为tdbsam,其他类型还有smbpasswd、ldapsam
load prints=yes #设置是否共享打印机
cups options=raw #打印机选项
  其它配置:
[homes]:为每个samba用户定义其是否能够通过samba服务访问自己的家目录
[printers]:定义打印服务
[自定义共享目录]:定义共享的文件系统
  常用指令:
comment=STRING:注释
path=/PATH/TO/FILENAME:当前共享所映射的文件系统路径
browseable=YES:是否可浏览,指是否可被所有用户查看
pulibc=YES:是否允许匿名访问
browseable=No:是否公开目录
writable=YES:是否可写
read only=no|yes:是否为只读
write list=/PATH/TO/user_list|USERNAME:拥有写权限的用户列表
directory mask=MASK:新建目录的权限值
force directory mode=MASK:配合directory mask使用,使得目录权限值生效
create mask=MASK:新建文件的权限值
force create mode=MASK:配合create mask使用,使得文件权限值生效
  更多参数可通过命令 man smb.conf 查看。
  • 自定义共享目录:
[root@samba ~]# vim /etc/samba/smb.conf
[shared_dir]
comment=shared dir through samba
path=/samba_dir
writable=yes

[root@samba ~]# mkdir /samba_dir #创建共享文件
[root@samba ~]# 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 "[shared_dir]"
Loaded services file OK.
Server role: ROLE_STANDALONE
  • samba服务默认的验证模式为user,因此需要创建samba用户数据库:
samba帐号必须存在于Linux系统中(/etc/passwd),而其密码却需要单独维护。创建samba用户数据库有专门的命令:pdbedit 和 smbpasswd。
  pdbedit [options] account
  options:
   -a USERNAME:创建samba用户
   -x:删除samba用户
  -L:列出samba用户列表
  -Lv:列出用户详细信息列表
  smbpasswd [options] USERNAME
  options:
   -a:添加账号
   -x:删除账号
   -d:禁用账号
   -e:启用账号
[root@samba ~]# useradd samba_user1
[root@samba ~]# pdbedit -a samba_user1
new password:
retype new password:
Unix username: samba_user1
[root@samba ~]# useradd samba_user2
[root@samba ~]# smbpasswd -a samba_user2
New SMB password:
Retype new SMB password:
Added user samba_user2.
  • windows主机测试:
# 启动服务
[root@samba ~]# systemctl start smb.service
[root@samba ~]# systemctl start nmb.service
# 客户端测试
  • 可以看到,用户登录后无法在/samba_dir下创建目录,明明已经设置了 writable=yes。这是因/samba_dir目录的属主和属组均为root,其他用户没有写权限。进行如下修改:
[root@samba ~]# groupadd samba
[root@samba ~]# usermod -G samba samba_user1
[root@samba ~]# usermod -G samba samba_user2
[root@samba ~]# id samba_user1
uid=1005(samba_user1) gid=1005(samba_user1) groups=1005(samba_user1),1007(samba)
[root@samba ~]# id samba_user2
uid=1006(samba_user2) gid=1006(samba_user2) groups=1006(samba_user2),1007(samba)
[root@samba ~]# ll -d /samba_dir
drwxr-xr-x. 2 root root 6 Jun 29 17:19 /samba_dir
[root@samba ~]# chown :samba /samba_dir
[root@samba ~]# chmod g+w /samba_dir
[root@samba ~]# ll -d /samba_dir
drwxrwxr-x. 2 root samba 6 Jun 29 17:19 /samba_dir
  • windows主机重新测试:

linux主机进行测试:

# 挂载访问。注意,此处访问的是/shared_dir,配置文件/etc/samba/smb.conf中 [] 定义的名称。
[root@client ~]# mount -t cifs //192.168.4.119/shared_dir /mnt -o username=samba_user1
Password for samba_user1@//192.168.4.119/shared_dir: ******
[root@client ~]# ls /mnt
hello.txt test
[root@client ~]# touch /mnt/hello
[root@client ~]# ls /mnt
hello hello.txt test
# 使用smbclient客户端访问
[root@client ~]# yum install -y samba-client
[root@client ~]# smbclient //192.168.4.119/shared_dir -U samba_user2 #交互式访问
Enter SAMBA\samba_user2's password:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Tue Jul 3 17:07:35 2018
.. DR 0 Fri Jun 29 17:19:56 2018
test D 0 Tue Jul 3 15:42:01 2018
hello.txt A 0 Tue Jul 3 17:07:31 2018
hello N 0 Tue Jul 3 17:07:35 2018 121055488 blocks of size 1024. 116173648 blocks available
smb: \>
[root@client ~]# smbclient -L //192.168.4.119/shared_dir -U samba_user1 #查看共享情况
Enter SAMBA\samba_user1's password: Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
shared_dir Disk shared dir through samba
IPC$ IPC IPC Service (Samba 4.7.1)
samba_user1 Disk Home Directories
Reconnecting with SMB1 for workgroup listing. Server Comment
--------- ------- Workgroup Master
--------- -------
SAMBA HAPPINESS
WORKGROUP DESKTOP-L064DV0

通过Samba实现Linux与Windows间的文件共享的更多相关文章

  1. 在Ubuntu14.04下配置Samba 完成linux和windows之间的文件共享

    在Windows和Linux之间传递文件可以使用Samba服务.下面是安装步骤: 1. 安装Samba. sudo apt-get install samba 2. 修改配置文件 sudo gedit ...

  2. 树莓派上安装Samba实现树莓派与Windows间的文件共享

    我是参考这篇文章的: https://www.jianshu.com/p/ead92b06318e 安装samba和common-bin库(具有smbpasswd效用) sudo apt-get in ...

  3. Linux与Windows间使用git

    Linux与Windows间使用git Linux上架设git服务器,windows可以使用git从Linux上拉取/上传数据 windows使用工具:Git for Windows Linux上的用 ...

  4. [转载]【转】教你如何实现linux和Windows之间的文件共享,samba的安

    原文地址:[转]教你如何实现linux和Windows之间的文件共享,samba的安装与配置作者:铅笔小蜡 本人在虚拟机下装fedora13,已经实现.1. 首先检查os是否安装好了samba. [r ...

  5. 使用samba实现linux与windows共享(测试成功)

    samba服务器搭建    实现linux与windows文件共享有很多种方法,诸如wpc,vmtools等,今天我来介绍我在rehat系统中实验成功并且现在在用的的方法,直接给出操作步骤:     ...

  6. NO1:安装VMLinux虚拟机,安装配置Samba实现Linux与Windows文件共享

    离开技术好些年,仅凭记忆开始学习.同时决定在Linux系统学习C语言. 一.下午安装了VM 8.0,安装RedHat Enterpris Server 6.4虚拟操作系统,都还比较顺利. 二.要实现L ...

  7. Samba搭建Linux和Windows文件共享服务

    一.Samba简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享 ...

  8. WLS中Linux与Windows间的环境共享

    Reference 更多cmd.exe帮助参考 (cmd_helps)[https://ss64.com/nt/cmd.html] (WSL备份,windows Docker安装)[https://w ...

  9. Ubuntu 下配置Samba 实现Linux和windows之间文件共享

    一 Samba 的安装: sudo apt-get insall sambasudo apt-get install smbfs 二 在Ubuntu中创建共享目录: mkdir  /home/shar ...

随机推荐

  1. Spring课程 Spring入门篇 3-5 Spring bean装配(上)之Resource

    课程链接: 1 resource简析 2 resource代码演练 1 resource简析 urlsource:url对应的资源 classpath:获取类路径下的资源文件 filesystemre ...

  2. maven课程 项目管理利器-maven 3-7 maven依赖范围 2星

    本节主要讲了maven的依赖范围: 在pom.xml   dependency标签的scope中.eclipse中有编译的路径,maven中有编译,运行,测试的路径. 1 scope为test,为测试 ...

  3. css 两大特性:继承性和层叠性

    css 有两大特性: 继承性和层叠性, 继承性 面向对象语言都会存在继承的概念,在面向对象的语言中,继承的特点:继承了父类的属性和方法.那么我们现在主要研究css,css中没有方法,所以我们仅仅继承属 ...

  4. BZOJ4503: 两个串(bitset字符串匹配)

    题意 题目链接 Sol Orz xudyh F个毛T啊..直接bitset一波就赢了啊...(虽然复杂度很假) 就是记录匹配串中每个元素出现的位置,将第\(i\)个位置的bitset右移\(i\)位后 ...

  5. vue-计算属性不能直接修改

    今天在开发的时候,遇到一个问题: 数据如下: data(){ queryCouponList : [] // 通过接口,会更新该数据 } , computed : { couponList () { ...

  6. 处理移动端自适应布局的方法- calc()与vw

    在处理移动端自适应布局时,目前前端最流行的方法应该就是使用媒体查询,来设置HTML的字体大小,然后用rem为单位对Dom的宽高进行设置,这个方法的优势在于兼容性方面很好,劣势则在于当前市场上不同的机型 ...

  7. CommonJS 的实现原理

    CommonJS 使用 Node.js 的四个环境变量moduleexportsrequireglobal 只要能够提供这四个变量,浏览器就能加载 CommonJS 模块. Browserify 是目 ...

  8. Active Sync与IIS7 Classic&Integrated模式,Exchange 2007&2010的关系

    上周开始一项工作,起因是因为QA同事发现我们开发的EAS hook不能在Exchange 2007 server上工作,而在Exchange 2010上可以正常工作. 环境对比如下: 1. Windo ...

  9. StringBuffer和StringBuilder区别?

    1. String是不可变类,改变String变量中的值,相当于开辟了新的空间存放新的string变量 2. StringBuffer 可变的类,可以通过append方法改变变量的值,且StringB ...

  10. Sublime Text 3预览Markdown

    Sublime Text 3预览Markdown 安装控制器 按下按下ctrl+`出现小控制台 输入import urllib.request,os; pf = 'Package Control.su ...