跳至主要内容

实战 之 samba共享服务器搭建

参考:http://www.labelzhou.com/2019/04/14/%E5%9C%A8-centos-%E4%B8%AD%E4%BD%BF%E7%94%A8-Samba-%E5%85%B1%E4%BA%AB/

https://www.cnblogs.com/muscleape/p/6385583.html

https://www.cnblogs.com/ldm1989/p/9229921.html

https://www.cnblogs.com/victorbu/p/8549794.html

https://www.tecmint.com/install-samba4-on-centos-7-for-file-sharing-on-windows/





Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux 之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因 而 Samba较多的用在了Linux与windows之间的数据共享上面。

SMB是基于客户机/服务器型的协议,因而一台Samba服务器既可以充当文件共享服务器,也可以充当一个Samba的客户端,例如,一台在Linux 下已经架设好的Samba服务器,windows客户端就可以通过SMB协议共享Samba服务器上的资源文件,同时,Samba服务器也可以访问网络中 其它windows系统或者Linux系统共享出来的文件。

Samba在windows下使用的是NetBIOS协议,如果你要使用Linux下共享出来的文件,请确认你的windows系统下是否安装了NetBIOS协议。

组成Samba运行的有两个服务,一个是SMB,另一个是NMB;SMB是Samba 的核心启动服务,主要负责建立 Linux Samba服务器与Samba客户机之间的对话, 验证用户身份并提供对文件和打印系统的访问,只有SMB服务启动,才能实现文件的共享,监听139 TCP端口;而NMB服务是负责解析用的,类似与DNS实现的功能,NMB可以把Linux系统共享的工作组名称与其IP对应起来,如果NMB服务没有启动,就只能通过IP来访问共享文件,监听137和138 UDP端口。

  例如,某台Samba服务器的IP地址为192.168.152.128,对应的工作组名称为MYWORKGROUP,那么在Windows的IE浏览器输入下面两条指令都可以访问共享文件。其实这就是Windows下查看Linux Samba服务器共享文件的方法。
  \\192.168.152.128\共享目录名称
  \\MYWORKGROUP\共享目录名称

在Linux下访问Samba服务器的共享文件(需要安装Client端)
smbclient //192.168.152.128/Anonymous
根据提示输入密码,登录成功后用ls列出资源

查看Samba服务器的共享资料
smbclient  –L  //Samba服务器的ip地址  -U  Samba用户名
“-L”即为list的含义,“-U”是user的意思,如果Samba服务器是无密码访问的话,可以省略“-U  Samba用户名”。
smbclient -L //192.168.152.128

需关闭 SELIUNX 和 firewalld


#查看系统信息
cat /etc/system-release
cat /etc/redhat-release


#查看CentOS7 IP地址
ifconfig
ip address


#通过yum程序安装samba、samba-client、samba-common服务
yum install samba samba-client samba-common


#查看安装状况
rpm -qa | grep samba


#Samba服务器安装完毕,会生成配置文件目录/etc/samba,其中/etc/samba/smb.conf是samba的核心配置文件


#备份原始smb.conf
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak0


在windows客户端cmd命令中打net config workstation查看工作站域(WORKGROUP)名称


#编辑smb.conf文件
vi /etc/samba/smb.conf


#在[global]中修改全局配置参数,该设置都是与Samba服务整体运行环境有关的选项,它的设置项目是针对所有共享资源的。
[global]

#设定 Samba Server 所要加入的工作组或者域
workgroup = WORKGROUP

#设定 Samba Server 的注释,可以是任何字符串,也可以不填,其中%v表示显示Samba的版本号
server string  = Samba Server Version %v   

#windows系统在网络显示的名字
#设置Samba Server的NetBIOS名称。如果不填,则默认会使用该服务器的DNS名称的第一部分(uanme -a)。netbios name和workgroup名字不要设置成一样了
netbios name = SAMBASERVER  

#unix 系统中的中文字符
unix charset = utf8

#Windows系统中的中文字符
dos charset = GB2312



#设置Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址。
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24

#表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。hosts deny 与hosts allow 刚好相反。
hosts allow = 127. 192.168.1. 192.168.10.1

#表示容许来自172.17.2.*的主机连接,但排除172.17.2.50
例如:hosts allow=172.17.2.EXCEPT172.17.2.50

#表示容许来自172.17.2.0/255.255.0.0子网中的所有主机连接
hosts allow=172.17.2.0/255.255.0.0

#表示容许来自M1和M2两台计算机连接
hosts allow=M1,M2

#表示容许来自pega网域的所有计算机连接
hosts allow=@pega


#设置Samba Server日志文件的存储位置以及日志文件名称。在文件名后加个%m(主机名),表示对每台访问Samba Server的机器都单独记录一个日志文件。如果pc1、pc2访问过Samba Server,就会在/var/log/samba目录下留下log.pc1和log.pc2两个日志文件。
log file = /var/log/samba/log.%m


#设置Samba Server日志文件的最大容量,单位为kB,0代表不限制
max log size = 50



#max connections用来指定连接Samba Server的最大连接数目。如果超出连接数目,则新的连接请求将被拒绝。0表示不限制。
max connections = 0


#设置用户访问Samba Server的验证方式,一共有四种验证方式。
security = user

#share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。
#user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。
#server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用 Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。
#domain:域安全级别,使用主域控制器(PDC)来完成认证。

#共享级别,用户不需要账号和密码即可访问
map to guest = Bad User



#共享目录名

[Anonymous]

#对该共享的描述,可以是任意字符串
comment = Anonymous File Server Share

#共享路径
path = /srv/samba/anonymous/
##path用来指定共享目录的路径。可以用%u、%m这样的宏来代替路径里的unix用户和客户机的Netbios名,用宏表示主要用于[homes] 共享域。例如:如果我们不打算用home段做为客户的共享,而是在/home/share/下为每个Linux用户以他的用户名建个目录,作为他的共享目 录,这样path就可以写成:path = /home/share/%u; 。用户在连接到这共享时具体的路径会被他的用户名代替,要注意这个用户名路径一定要存在,否则,客户机在访问时会找不到网络路径。同样,如果我们不是以用 户来划分目录,而是以客户机来划分目录,为网络上每台可以访问samba的机器都各自建个以它的netbios名的路径,作为不同机器的共享资源,就可以 这样写:path = /home/share/%m 。


#用来指定该共享是否(yes/no)允许guest账户访问
#所有人可查看
guest ok = yes                   

read only = no       

#writable用来指定该共享路径是否(yes/no)可写
writeable = yes                  

#browseable用来指定该共享是否(yes/no)可以浏览
browseable = yes               

force user = nobody

#保存配置文件,创建目录
mkdir -p /srv/samba/anonymous


#目录赋权
chmod -R 777 /srv/samba/anonymous

#由于要设置匿名用户可以下载或上传共享文件,所以要给/share目录授权为nobody权限
#指定目录所属者
chown -R nobody:nobody /srv/samba/anonymous


#运行samba文件语法错误校验
testparm

如果没有错误,则在你的windows机器上的浏览器中输入 file://IP/anonymous 看是否能访问

#启动samba服务
systemctl start smb
systemctl start nmb


#查看服务状态
systemctl status smb
systemctl status nmb


#开机自启
systemctl enable smb
systemctl enable nmb


案例二、公司现有多个部门,因工作需要,将X部的资料存放在samba服务器的/secure 目录中集中管理,以便TS人员浏览,并且该目录只允许TS部员工访问。

设置Samba安全文件共享

#创建新组smbgrp,删除组groupdel groupname
groupadd smbgrp


#useradd -g 组名 自动建立用户的登入目录 用户名
useradd -g smbgrp -m test1
useradd -g smbgrp -m test2

#设置用户test1的密码
passwd test1

#删除用户
userdel -r 用户名

#光添加系统账户还不够, 需要把已经存在的系统账户添加到samba中才可以访问共享目录
#把要访问的账户添加到samba的账户中
#smbpasswd 参数: -a: 添加 -x: 删除 -d: 禁用 -e: 启用
smbpasswd -a test1

vi /etc/samba/smb.conf

#新增

[Secure]

comment = Secure File Server Share

path =  /srv/samba/secure

valid users = @smbgrp

guest ok = no

writable = yes

browsable = yes


#创建安全目录
mkdir -p /srv/samba/secure

#目录赋权
chmod -R 0770 /srv/samsba/secure


#指定目录所有者
#chown -R 用户名:组名 目录
chown -R root:smbgrp /srv/samba/secure


#重启服务
systemctl restart smb.service
systemctl restart nmb.service


常见问题

Windows 无法访问\IP\Anonymous

打开samba端口
# service samba 会同时开启udp: 137,138 tcp: 139,445 
# 137(UDP): NetBIOS名字服务
# 138(UDP): NetBIOS数据报服务
# 139(TCP): 文件和打印共享
# 445(TCP): NetBIOS服务在windows 2000及以后使用此端口


firewall-cmd --permanent --zone=public --add-service=samba
firewall-cmd --reload

能看到目录但看不到内容
#临时关闭SeLinux
setenforce 0

#永久关闭SeLinux,需要重启机器
vi /etc/sysconfig/selinux
将SELINUX=enforcing 改为disabled





sestatus

评论

此博客中的热门博文

学习地址

清华大学计算机系课程攻略 https://github.com/PKUanonym/REKCARC-TSC-UHT 浙江大学课程攻略共享计划 https://github.com/QSCTech/zju-icicles https://home.unicode.org/ 世界上的每个人都应该能够在手机和电脑上使用自己的语言。 http://codecanyon.net   初次看到这个网站,小伙伴们表示都惊呆了。原来代码也可以放在网上卖的?!! 很多coder上传了各种代码,每个代码都明码标价。看了下销售排行,有的19刀的卖了3万多份,额di神啊。可以看到代码的演示效果,真的很漂亮。代码以php、wordpress主题、Javascript、css为主,偏前台。 https://www.lintcode.com/ 算法学习网站,上去每天刷两道算法题,走遍天下都不怕。 https://www.codecademy.com/ 包含在线编程练习和课程视频 https://www.reddit.com/ 包含有趣的编程挑战题,即使不会写,也可以查看他人的解决方法。 https://ideone.com/ 在线编译器,可运行,可查看代码示例。 http://it-ebooks.info/ 大型电子图书馆,可即时免费下载书籍。 刷题 https://github.com/jackfrued/Python-100-Days https://github.com/kenwoodjw/python_interview_question 面试问题 https://github.com/kenwoodjw/python_interview_question https://www.journaldev.com/15490/python-interview-questions#python-interpreter HTTP 身份验证 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Authentication RESTful 架构详解 https://www.runoob.com/w3cnote/restful-architecture.html https://www.rosettacode.org/wiki/Rosetta_C...

PDF处理

虚拟pdf打印机 pdfFactory  https://fineprint.com PDFCreator  https://www.pdfforge.org 开源 cutepdf https://www.cutepdf.com/index.htm Doro PDF Writer http://www.the-sz.com/products/doro PdfScribe  https://github.com/stchan/PdfScribe/releases pdf阅读器 Sumatra PDF https://www.sumatrapdfreader.org/ 为什么 Python 用于 PDF 处理  如您所知,PDF 处理属于文本分析。 大多数文本分析库或框架仅使用 Python 设计。 这为文本分析提供了优势。 还有一件事,您永远无法在现有的机器学习或自然语言处理框架中直接处理 pdf。 除非他们为此证明了显式接口。 我们必须先将pdf转换为文本。 我们可以使用下述任何库轻松实现这一点。 在线转换pdf Sejda https://www.sejda.com/pdf-editor 每个文档 200 页的免费限制 https://www.pdf2go.com/ https://tools.pdfforge.org/extract-text PDF24 Tools https://tools.pdf24.org/zh/ 免费且易于使用的在线PDF工具 FreeOCR http://www.paperfile.net/ 适用于Windows的免费光学字符识别软件,支持大多数Twain扫描仪的扫描,还可以打开大多数扫描的PDF和多页Tiff图像以及流行的图像文件格式,FreeOCR输出纯文本,可以直接导出为Microsoft Word格式。 不支持中文 wkhtmltopdf 和 wkhtmltoimage 是使用 QT Webkit 渲染引擎将 HTML 渲染为 PDF 和各种图像格式的命令行工具。这些完全“无头”运行,不需要显示或显示服务。 https://wkhtmltopdf.org/ django-wkhtmltopdf 允许 Django 站点输出动态 PDF。它利用 wkhtmltopdf 库,允许您使用您知道...

安卓 之 apk下载、ADB、 scrcpy

Apk下载 下载离线安装apk https://www.apkmirror.com/ 免费和安全的Android APK下载 https://apkpure.com/ 被暴雷,有植入 https://apps.evozi.com/apk-downloader/ 可以将Google Play( https://play.google.com )中的apk文件所在网址直接下载到台式机和设备上 https://f-droid.org/zh_Hans/ F-Droid 是一个 Android 平台上 FOSS(Free and Open Source Software,自由开源软件)的目录,并提供下载安装支持。使用客户端可以更轻松地浏览、安装及跟进设备上的应用更新。 https://gitlab.com/AuroraOSS/AuroraStore Aurora商店 是Google Play商店的非官方FOSS客户,设计典雅。 Aurora商店不仅下载,更新和搜索Play商店等应用 https://github.com/OpenTracksApp/OpenTracks OpenTracks是一款运动跟踪应用程序,完全尊重您的隐私。 Tasker https://tasker.joaoapps.com/ 是一款适用于Android的应用程序,它可以根据用户定义的配置文件中的上下文、可点击或定时的主屏幕小部件来执行任务。它无需root或特殊的主屏幕就能控制Android设备。 AsciiCam AsciiCam可以从您的相机指向的任何位置实时生成ASCII图像。选择黑白,原色或全彩,拍照,并将其作为图像或HTML共享。您还可以在库中创建ASCII版本的图片,并且每次使用标准相机应用程序拍摄照片时,也可以选择自动生成ASCII版本。 AsciiCam是完全免费和开源的。 Apk1安装器 优化微信apk文件接收体验。 微信收到apk文件会加 ".1" 后缀导致打不开,必须自己手动找到文件重命名去掉后缀。 使用本安装器就可以在微信内,潇洒地点击直接打开。甚至可以在安装器内浏览apk1文件历史接收记录。 ADB ADB全名是 Android Debug Bridge,是开发或使用Android时很常用的工具。可以从电脑通过USB连线到Android手机上 https:...