Samba脚本
时间: 2025-06-13 18:56:33 浏览: 10
### Samba 配置示例
以下是基于 Linux 系统下常见的 Samba 配置文件 `/etc/samba/smb.conf` 的配置示例,以及如何编写简单的脚本来实现自动化部署。
#### 基础配置示例
以下是一个基础的 Samba 配置文件示例:
```ini
[global]
workgroup = WORKGROUP
server string = Samba Server Version %v # 设置服务器描述[^2]
security = user
map to guest = bad user
[shared_folder]
comment = Shared Folder Example
path = /srv/shared
browseable = yes
read only = no
create mask = 0755
directory mask = 0755
valid users = @sambashare
```
上述配置中定义了一个共享目录 `shared_folder`,并设置了访问权限和用户验证方式。其中 `create mask` 和 `directory mask` 定义了新创建文件和目录的默认权限[^4]。
---
#### SELinux 下的特殊配置
如果运行在启用了 SELinux 的环境中,则需要额外设置布尔值以允许 Samba 访问特定路径下的文件。可以通过以下命令启用布尔值:
```bash
setsebool -P samba_export_all_rw on
setsebool -P samba_run_unconfined on # 允许 Samba 运行不受限[^1]
```
这些命令确保 Samba 可以正常读写受保护的文件系统区域。
---
#### 自动化初始化数据盘并挂载到 Samba 共享目录的脚本
对于 CentOS 或 Ubuntu 环境,可以使用以下 Bash 脚本来自动初始化数据盘,并将其挂载至 Samba 共享目录。
##### 对于 CentOS 系统:
```bash
#!/bin/bash
DISK="/dev/xvdb"
MOUNT_POINT="/mnt/data"
# 初始化磁盘
if [ ! -b "$DISK" ]; then
echo "Disk $DISK not found."
exit 1
fi
echo "Initializing disk..."
parted -s ${DISK} mklabel gpt
parted -s ${DISK} mkpart primary ext4 0% 100%
mkfs.ext4 "${DISK}1"
# 创建挂载点并挂载
mkdir -p $MOUNT_POINT
mount "${DISK}1" $MOUNT_POINT
# 修改权限以便 Samba 使用
chmod 775 $MOUNT_POINT
chown nobody:nogroup $MOUNT_POINT
# 更新 fstab 文件以持久化挂载
UUID=$(blkid -s UUID -o value ${DISK}1)
echo "UUID=$UUID $MOUNT_POINT ext4 defaults,nofail 0 2" >> /etc/fstab
echo "Disk initialized and mounted at $MOUNT_POINT."
# 将该目录加入 Samba 配置
cat <<EOT >> /etc/samba/smb.conf
[data_share]
comment = Data Share Directory
path = $MOUNT_POINT
browseable = yes
read only = no
create mask = 0755
directory mask = 0755
valid users = admin
EOT
systemctl restart smb nmb
```
##### 对于 Ubuntu 系统:
```bash
#!/bin/bash
DISK="/dev/vdb"
MOUNT_POINT="/mnt/data"
# 初始化磁盘
if [ ! -b "$DISK" ]; then
echo "Disk $DISK not found."
exit 1
fi
echo "Initializing disk..."
sgdisk --new=1::+1G --typecode=1:ef00 --change-name=1:"EFI System Partition" ${DISK}
mkfs.ext4 "${DISK}1"
# 创建挂载点并挂载
mkdir -p $MOUNT_POINT
mount "${DISK}1" $MOUNT_POINT
# 修改权限以便 Samba 使用
chmod 775 $MOUNT_POINT
chown nobody:nogroup $MOUNT_POINT
# 更新 fstab 文件以持久化挂载
UUID=$(blkid -s UUID -o value ${DISK}1)
echo "UUID=$UUID $MOUNT_POINT ext4 defaults,nofail 0 2" >> /etc/fstab
echo "Disk initialized and mounted at $MOUNT_POINT."
# 将该目录加入 Samba 配置
cat <<EOT >> /etc/samba/smb.conf
[data_share]
comment = Data Share Directory
path = $MOUNT_POINT
browseable = yes
read only = no
create mask = 0755
directory mask = 0755
valid users = admin
EOT
service smbd restart
service nmbd restart
```
以上脚本实现了从磁盘分区、格式化、挂载到更新 Samba 配置的一系列操作[^3][^5]。
---
#### 注意事项
- **安全性**:建议限制 `valid users` 参数以防止未经授权的访问。
- **SELinux**:在某些情况下可能需要调整策略或标签以适应具体需求。
- **测试环境**:务必先在一个独立的测试环境中验证脚本功能后再应用于生产环境。
---
阅读全文
相关推荐


















