### Samba服务器配置详解
#### 一、Samba概述
Samba是一款开源软件包,用于在基于UNIX的系统上提供服务器消息块(SMB)服务,从而实现与其他采用SMB协议的系统之间的文件共享和打印服务。SMB协议是微软开发的一种网络文件共享协议,广泛应用于Windows操作系统中。
**Samba的特点:**
- **开源:** Samba遵循GNU通用公共许可证(GPL),用户可以免费获取其源代码和可执行文件。
- **兼容性:** Samba能够与Windows系统无缝对接,提供文件共享和打印服务。
- **灵活性:** 可以在多种UNIX系统(如Linux、FreeBSD等)上运行Samba服务。
**Samba的主要功能:**
- 文件共享
- 打印机共享
- 用户身份验证
**Samba官方网站:** http://www.samba.org
#### 二、Samba的工作原理
Samba主要由两个守护进程组成:
- **smbd**: 负责处理SMB请求,实现文件共享和用户验证等功能。默认监听TCP端口139。
- **nmbd**: 主要负责处理NetBIOS名称解析和浏览服务。默认监听UDP端口137和138。
#### 三、Samba配置
**配置文件位置:** `/etc/samba/smb.conf`
**主要配置段落:**
- `[global]`: 设置全局环境选项,如工作群组、安全模式等。
- `[homes]`: 配置用户的家目录共享。
- `[printers]`: 配置打印机共享。
- `[sharefiles]`: 自定义文件共享设置。
**配置项详解:**
- **[global]** 段:
- `workgroup`: 指定工作组或域。
- `server string`: 描述Samba服务器的信息。
- `security`: 安全模式,如`user`、`share`等。
- `hosts allow`: 允许访问Samba服务的主机列表。
- `logfile`: 日志文件的存储路径。
- `max log size`: 日志文件的最大大小。
- **[homes]** 段:
- `comment`: 对该共享的描述。
- `browseable`: 是否允许浏览家目录,默认为`no`。
- `writable`: 是否允许写入,默认为`yes`。
- **[printers]** 段:
- 通常配置为允许用户通过Samba服务打印文档。
- **[sharefiles]** 段:
- `path`: 共享目录的实际路径。
- `valid users`: 允许访问共享的特定用户列表。
- `writable`: 是否允许写入,默认为`yes`。
#### 四、Samba应用示例
**示例一:** 允许用户通过Windows客户端访问自己的宿主目录。
1. 安装Samba。
2. 如果安装了SELinux,需要启用Samba的家目录支持:
```bash
setsebool -P samba_enable_home_dirs on
```
3. 设置用户Samba验证密码:
```bash
smbpasswd -a 用户名
```
4. 启动Samba服务:
```bash
/etc/rc.d/init.d/smb start
```
**示例二:** 设置Samba共享目录`/software`,允许用户`jack`与`mary`通过Windows客户端访问,并具有读写权限。
1. 创建目录`/software`,并添加用户`jack`与`mary`。
2. 如果安装了SELinux,需要更改目录的上下文:
```bash
chcon -R -t samba_share_t /software
```
3. 在Samba配置文件`/etc/samba/smb.conf`末尾添加:
```ini
[software]
path = /software
valid users = jack mary
writable = yes
```
4. 设置用户`jack`、`mary`的Samba验证密码,并启动Samba服务。
**示例三:** 建立一个公共的只读目录`/public`,任何人都可以浏览目录的内容。
```ini
[public]
comment = ReadOnly Public
path = /public
writable = no
```
**示例四:** 建立部门资料共享目录`/hr`,部门每个人都能读写,但不能删除别人的文件。
1. 创建共享目录,并设置权限:
```bash
# 创建组
groupadd softadm
# 添加用户到组
usermod -G softadm jack
usermod -G softadm mary
# 设置目录权限
chgrp softadm /software
chmod g+w /software
```
2. 在Samba配置文件中添加相应的配置段:
```ini
[hr]
path = /hr
writable = yes
create mask = 0644
directory mask = 0755
```
#### 五、Samba服务器检测命令
- **检查配置文件语法错误:** 使用`testparm`命令。
通过以上详细介绍,我们可以看到Samba不仅是一款强大的文件共享工具,而且其灵活的配置选项使得它能够在各种场景中满足不同的需求。无论是个人使用还是企业级部署,Samba都是一个非常实用的选择。