Ubuntu下搭建samba服务

本文介绍了如何在Linux系统上搭建Samba服务器,并详细讲解了配置步骤,包括安装Samba、设置共享文件夹权限、配置smb.conf文件等。同时针对使用过程中遇到的文件权限问题提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        Samba服务器和NFS差不多,Samba是在Windows操作系统下访问Linux主机,NFS可以让Linux客户端访问NFS服务器,NFS服务器可以使用Windows搭建也可以使用Linux搭建,但是Windows没法访问NFS服务器,所以要使用Windows访问一个Linux服务器的话就在Linux服务器上搭建Samba服务,Windows就可以访问Linux文件系统了。Samba服务器的简介:技术成就梦想51CTO-中国领先的IT技术网站。搭建Samba服务的步骤如下:

1、安装Samba:apt-get install samba

2、设置一个需要被共享的文件夹,例如/home/tq,将该文件夹的权限设置成最高权限:chmod 777 /home/tq,但是这样只是吧tq这个文件夹设置为全部用户都可访问,其子文件夹如果没有被设置足够的权限将不能再客户端进行修改或者新建文件。可以使用:chmod -R 777 /home/tq,可以更改该文件夹以及所有子文件夹的权限,但是新建的文件夹或者复制过来的文件夹的权限还要重新设置权限。

3、配置/etc/samba/smb.conf文件,在最后加上下面语句

[share]
      path = /home/tq
      available = yes
      browsable = yes
      public = yes
      writable = yes

share是Samba服务器对外表现的文件夹名称,path是服务器本身被共享的目录,下面的其他的属性按照字面意思即可解释。

4、重启服务器:/etc/init.d/samba restart

5、Windows下访问服务器,按下win+R运行,输入\\192.168.1.138即可访问,也可以直接输入\\192.168.1.138\\share直接打开。

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<分割线>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

按照上面的做法可以成功搭建Samba服务器,但是需要修改文件权限才能在windows下进行文件的修改和添加,但是使用git的时候修改文件的权限也是对文件的一种修改,git status之后一片红,受不了,使用git的情况下不能将文件的权限全部修改,只能在Samba服务器上下功夫了,修改/etc/samba/smb.conf文件:

[tq]
path=/home/tq
available = yes
browsable = yes
public = yes
writable = yes
force user = tq

加了最后一行force user = tq,tq是系统的一个用户名,然后将文件夹的名字也得改成tq,改成root连Samba服务器都访问不了,不知道为什么,希望高人解答。修改了之后就能再客户端进行文件增改了。但是又会发现一个问题,在windows端进行文件修改保存或者新建文件之后发现文件的权限都被修改了,这是不应该的,还是修改smb.conf文件:(参考文章:设置Samba服务器中新建文件/目录的权限_hustfoxy的专栏-优快云博客

[tq]
path=/home/tq
available = yes
browseable = yes
public = yes
writable = yes
create mode = 0664  
force create mode = 0664  
directory mode = 0775  
force directory mode = 0775   
force user = tq
force group = tq

这样配置就能够在Windows端修改文件就不会修改文件的权限了,新建的文件权限是0664,新建文件夹的权限是0775。下面简单介绍一下这几个参数的含义:

  • create mode – 这个配置定义新创建文件的属性。Samba在新建文件时,会把dos文件的权限映射成对应的unix权限,在映射后所得的权限,会与这个参数所定义的值进行与操作。然后再和下面的force create mode进行或操作,这样就得到最终linux下的文件权限。
  • force create mode – 见上面的描述。相当于此参数所设置的权限位一定会出现在文件属性中。
  • directory mode – 这个配置与create mode参数类似,只是它是应用在新创建的目录上。Samba在新建目录时,会把dos–>linux映射后的文件属性,与此参数所定义的值相与,再和force directory mode相或,然后按这个值去设置目录属性。
  • force directory mode – 见上面的描述。相当于此参数中所设置的权限位一定会出现在目录的属性中。

说明一点,上面的create mode和create mask参数是同义词,用哪个都可以;而directory mode和directory mask参数是相同的。当你发现Samba中新建的目录/文件权限不正确,例如无法访问某个目录、无法更改文件,就需要检查上面几个值的设置。

### 离线环境下 Ubuntu 搭建 Samba 服务器 #### 准备工作 为了在离线环境中搭建 Samba 服务器,需要提前下载好所有必需的文件并将其传输到目标机器。可以从其他联网计算机上获取这些资源。 #### 下载所需软件包 使用另一台能够上网的电脑访问项目地址 `https://gitcode.com/Resource-Bundle-Collection/13b76` 获取 `.tar` 方式的 Samba 安装包以及其他可能所需的依赖项[^2]。确保下载了适合当前系统的版本以及任何必要的库文件。 #### 转移至目标主机 通过USB或其他物理介质将上述下载好的压缩包转移到无法连接互联网的目标Ubuntu设备上。 #### 解压与安装 进入保存有`.tar.gz` 文件所在的目录,并解压此存档: ```bash tar -zxvf samba-version.tar.gz cd samba-version/ ``` 按照官方文档说明编译源码来完成本地构建过程(这一步骤可能会因为缺少某些开发工具而变得复杂)。通常情况下,建议采用如下命令来进行编译前准备: ```bash sudo apt-get build-dep samba ./configure make sudo make install ``` 但是由于是在完全隔离的状态下操作,所以以上提到的方法仅作为参考;实际执行时需根据实际情况调整。 #### 配置防火墙和服务启动选项 编辑 `/etc/default/samba` 或者相应位置下的默认配置文件以适应环境需求。同时考虑到安全性因素,还需要适当放开防火墙端口以便客户端能正常访问共享资源。 #### 创建 Unix 用户及对应 SMB 用户名 创建一个新的Linux用户账号用于后续SMB认证目的: ```bash sudo adduser newusername ``` 接着为新建立起来的身份注册相应的SAMBA凭证: ```bash sudo smbpasswd -a newusername ``` 值得注意的是,默认状况之下这两个地方设定的不同密码并不会自动关联在一起。若希望实现二者间的一致性,则可考虑编写自定义脚本来简化管理流程[^3]。 #### 修改 AppArmor 设置 为了让非标准路径下的分享功能生效,应该向AppArmor的安全策略里加入例外规则。具体做法是编辑位于 `/etc/apparmor.d/local/usr.sbin.smbd` 的文本内容,允许特定目录被访问[^4]: ```bash cd /etc/apparmor.d/local sudo nano usr.sbin.smbd ``` 添加类似下面这样的条目进去: ``` /path/to/shared/folder r, /path/to/shared/folder/** rwk, ``` 重启服务使更改立即起效: ```bash sudo systemctl restart smbd.service ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值