使用Samba在Linux服务器上搭建共享文件服务的方法
作者:RHINO_WU 发布时间:2023-09-29 20:39:30
最近我们的小团队需要在服务器上共分出一个共享文件夹用于大家存放公共的资源文档, 大家想啊,这肯定很简单呀,在Windows下面只要创建相关的windows account,共享某个文件夹,把读/写权限给我们创建的account的,就完成了共享,但在Linux下面就没有这么美好了,网上查阅资源资料多指向通过Samba完成共享任务,但一些blog只介绍了怎么做,但没有为什么这么 做,搭建工作且不太顺利,对Linux算不上熟悉,走了很多弯路,所以通过这篇blog深入理解其中的每一步。
Samba的简介
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。这些是废话….. 来看点有意思的。作者Tridgwell申请使用SMBServer ( Server Message Block 的简写 ) 注册这个软件的商标, 因为SMB 是没有意义的文字而没有办法注册。然后他就翻字典,看到SAMBA一遍正好包含SMB几个字母 ,这这个词也是我们熟知的拉丁舞蹈的名称,然后就有了三八这个名字🙄。(自百科)
搭建Samba共享目录, 如果需要使用用户名/密码的形式访问共享目录,我们需要先创建Linux的user,然后通过smbpasswd创建samba用户(用户名需要一致),原文在这里:
To provide authentication on a standalone host, you have to create the accounts locally on the operating system and additionally in the Samba database. By default, Samba uses the tdbsam back end and stores the database in the /usr/local/samba/private/passdb.tdb file. Optionally set a different location in the smb.conf file using the passdb backend parameter. See the smb.conf 5 man page for details(from https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Standalone_Server).
搭建需要用户名验证的共享目录
1. 创建共享目录的用户, 我们这里使用来组(group)来演示
groupadd smbgrp
useradd fielshare -s /sbin/nologin -g smbgrp -p <password>
#创建同名的smb用户, 这里的密码和local用户的密码是完全独立的,我们最后用的通过smbpasswd创建的用户
smbpasswd -a fielshare
2. 创建需要共享的工作目录,设置好文件夹的权限
mkdir -p /srv/samba/secure
chmod -R 0770 /srv/samba/secure
chown -R root:smbgrp /srv/samba/secure
搭建Samba共享目录, 如果需要使用用户名/密码的形式访问共享目录,我们需要先创建Linux的user,然后通过smbpasswd创建samba用户(用户名需要一致),原文在这里:
3. 修改安全上文
chcon -t samba_share_t /srv/samba/secure
这条命令是SELinux(详见Security-Enhanced Linux)下面的命令, 作用提把/srv/samba/securel切换到samba的上下文中。
4. 修改配置文件smb.conf
修改配置文件之前 ,我们先做好备份工作,以防不测。
cp /etc/samba/smb.conf /etc/samba/smb.conf.orig
在这里我们有以下事情需要做:
1.在[global] section下修改workgroup为WORKGROUP (就是我的电脑=>属性=> 计算机名看到的工作级的名字)
2.设置[global] 下的netbios name, 这个可以是任意,就是我们在我的芳邻下看到的计算机名称
3. 确定 [global] 下security设置为user
4.添加共享目录的配置
#为暴露在我的芳邻里点进去看到的文件夹名称
[share]
comment = Secure File Server Share
# 为需要共享的目录
path = /srv/samba/secure
# 可访问的用户,多用户用空格隔开, 以@开头为用户组
valid users = @smbgrp
# 关闭匿名访问,设置为no
guest ok = no
writable = yes
browsable = yes
整个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 = WORKGROUP
netbios name = centos
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = no
cups options = raw
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
[share]
comment = secure file share
path = /srv/samba/secure
valid users = @smbgrp
guest ok = no
writable = yes
browsable = yes
browseable = yes
注意smb.conf默认会有[home]节点,如果不是不想得一个和用户名同名的文件夹,请删除它。
完成编辑, 保存配置文件,
执行testparm后会得到下面相似的结果,就是说配置文件没有问题
[root@localhost software]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[printers]"
Processing section "[print$]"
Processing section "[share]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
# Global parameters
[global]
load printers = No
netbios name = CENTOS-SHARE
printcap name = cups
security = USER
idmap config * : backend = tdb
cups options = raw
[printers]
browseable = No
comment = All Printers
create mask = 0600
path = /var/tmp
printable = Yes
[print$]
comment = Printer Drivers
create mask = 0664
directory mask = 0775
force group = @printadmin
path = /var/lib/samba/drivers
write list = @printadmin root
[share]
comment = secure file share
path = /home/share
read only = No
valid users = @smbgrp
[root@localhost software]#
5. 重启samba服务, 打开我的电脑进行测试
systemctl restart smb.service
systemctl restart nmb.service
由于测试机和Linux主机不在同一个网络,我的芳邻里面找不到我配置的芳邻 CENTOS-SHARE, 这里我通过IP直接访问
6. 别忘了添加防火墙,不然你是看不到你的芳邻的
firewall-cmd --permanent --zone=public --add-service=samba
firewall-cmd --reload
总结
这里只演示了使用了用户名的验证模式来共享文件夹,主要是针对Windows的,对这一块不熟悉的同学可以自行尝试匿名共享。在设置过程中,我接触到以前没有接触到东西SELinux,这一块还是有很多的东西的。对于SAMBA的使用介绍网上有不少文章的,写这遍博客的目的也算是多个视角来告诉大家如何使用。
来源:https://www.cnblogs.com/rhino/archive/2019/05/14/share-folder-with-samba.html


猜你喜欢
- 一个高中没毕业的草根创业者,从域名入手,做着被很多人看作是“投机”的生意,却在不经意间成为中国域名投资领域最成功的人,很多知名公司都从他手中
- 一、GOOGLE搜索引擎蜘蛛的等级首先先谈下GOOGLE蜘蛛起源。当GOOGLE搜索引擎刚建立之初,就拥有这一个非常强大的的服务器,其每天放
- 一个网址导航的站长,从零开始,一年做了365天,ip能从零做到2000. 平时收入一个月100-400不等。一年全年收入约等于3000 投入
- Godaddy支持支付宝付款,对国内网友来说,是一大喜讯。可能有部分网友对E文不是太熟悉,这里小A做个教程,希望对大家有所帮助。Godadd
- 大多数网站的推广都离不开搜索引擎,地方门户也不例外。所以处理好地方门户与搜索引擎的关系对于地方门户网站的推广有着很大的意义。网站上线前,要把
- 接触JSP服务器的人基本上都是从JSP的安装开始的,因为JSP不像ASP那样几乎不存在什么安装过程,也不像PHP那样有一个自动安装的程序包,
- 老谢说下软文的写作要点,希望对自己写软文的站长们一些帮助。一、标题新鲜标题新鲜,必须能吸引人的兴趣,使浏览者看了你这个标题之后仍有欲望看你的
- 模仿跟风,好创意一夜遍地开还记得几年前马云说的一句话“像我者死”吗?还记得一年前“百万格子”的红火吗?感受到了Web2.0的潮起潮落吗?Yo
- 1、问:我的机器拥有多个IP地址,它们对应各自的域名,如何建立指向不同目录的多个WWW站点?答:你需要分别将各个Web站点的“Web站点”选
- 11月5日消息,网络电话服务商Skype的诉讼纷扰可能要告一段落了,美国《纽约时报(NewYorkTimes)》报道引述几位知情人士透露,这
- 上次我们讲了proftp的基本安装,由于我们后面有关于mysql和quota的设置,所以编译的时候把相应的模块都编译进去了,如果你不需要my
- 转自Linux轻量级自动运维工具-Ansible浅析 - ~微风~ - 51CTO技术博客http://weiweidefeng.blog.
- 北京时间10月23日,微软新一代操作系统WIN7正式发布,国内领先的网游厂商巨人网络率先宣布,其新作《绿色征途》全面兼容WIN7操作系统。今
- 邮件系统的选型与架构专题(上篇) 邮件系统服务器的安装和配置有关Qmail邮件系统的安装介绍很多,这里不再赘述。下面主要说明搭建Qmail邮
- 什么是IISIIS即因特网信息服务,作为当今流行的Web服务器之一,它提供了强大的Internet和Intranet服务功能。因此,现在采用
- 搜索引擎是不断地在发展,所以规律也在不停地变化,需要随时跟踪搜索引擎的新动态。这里整理了200个搜索引擎算法的相关因素,好东西啊!1. 关键
- Discuz!是康盛创想(Comsenz)公司推出的一款论坛BBS建站产品。目前最新版本是Discuz!7.1。为提升论坛的安全级别,Dis
- IIS安全安装 要构建一个安全的IIS服务器,必须从安装时就充分考虑安全问题。1. 不要将IIS安装在系统分区上。2. 修改IIS的安装默认
- 1、首先启动容器(以first-mysql容器为例)docker start first-mysql2、查看容器IDroot@kobe:/o
- 今天要介绍的是Godaddy的域名管理教程,详细步骤如下:1.登陆帐户2.点hosting,如图所示。点manageaccount3.在Se