Samba 应用

samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件。

samba 提供了在不同计算机(即使操作系统不同)上共享服务的能力。

关键词:samba, selinux

1. 安装配置 samba

本文将以一个完整的示例来展示如何配置 samba 来实现 Linux 和 Windows 的文件共享。

目标:假设希望共享 Linux 服务器上的 /share/fs 目录。

1.1. 查看是否已经安装 samba

  • CentOS:rpm -qa | grep samba

  • Ubuntu:dpkg -l | grep samba

1.2. 安装 samba 工具

  • CentOS:yum install -y samba samba-client samba-common

  • Ubuntu:sudo apt-get install -y samba samba-client

1.3. 配置 samba

samba 服务的配置文件是 /etc/samba/smb.conf,如果没有则 samba 无法启动。

执行以下命令,编辑配置文件:

修改配置如下:

说明:

  • 我在这里添加了一个 [fs] 标签,这就是共享区域的配置。

  • 这里设置 path 属性为 /share/fs,意味着准备共享 /share/fs 目录,需要根据实际需要设置路径。/share/fs 目录的权限要设置为 777chmod 777 /share/fs

  • browseablewritable 等属性就比较容易理解了,即配置共享目录的访问权限。

  • valid users 属性指定允许访问的用户,需要注意的是指定的用户必须是 Linux 机器上实际存在的用户。

1.4. 创建 samba 用户

创建的 samba 用户必须是 Linux 机器上实际存在的用户。

根据提示输入 samba 用户的密码。当 samba 服务成功安装、启动后,通过 Windows 系统访问机器共享目录时,就要输入这里配置的用户名、密码。

  • 查看 samba 服务器中已拥有哪些用户 - pdbedit -L

  • 删除 samba 服务中的某个用户 - smbpasswd -x 用户名

1.5. 启动 samba 服务

CentOS 6

CentOS 7

Ubuntu 16.04.3

1.6. 为 samba 添加防火墙规则

1.7. 测试 samba 服务

输入 samba 用户的密码,如果成功,就会进入 smb: \>

1.8. 访问 samba 服务共享的目录

Windows:

访问:\\<你的ip>\<你的共享路径>

img

Mac:

与 Windows 类似,直接在 Finder 中访问 smb://<你的ip>/<你的共享路径> 即可。

2. 配置详解

2.1. samba 默认配置

你可以从 这里 获取到默认配置文件:

smb.conf 默认内容如下:

2.2. 全局参数 [global]

2.3. 共享参数 [共享名]

3. 常见问题

3.1. 你可能没有权限访问网络资源

问题现象:

  • 出现 NT_STATUS_ACCESS_DENIED 错误

  • Windows 下成功登陆 samba 后,点击共享目录仍然提示——你可能没有权限访问网络资源。

解决步骤:

  1. 检查是否配置了防火墙规则

  1. 关闭 selinux

3.2. window 下对 samba 的清理操作

  1. windows 清除访问 samba 局域网密码缓存

    • 在 dos 窗口中输入 control userpasswords2 或者 control keymgr.dll,然后【高级】/【密码管理】,删掉保存的该机器密码。

  2. windows 清除连接的 linux 的 samba 服务缓存

    1. 打开 win 的命令行。

    2. 输入 net use,就会打印出当前缓存的连接上列表。

    3. 根据列表,一个个删除连接: net use 远程连接名称 /del;或者一次性全部删除:net use * /del

4. 参考资料

Last updated

Was this helpful?