我想编写脚本来将共享添加到smb.conf
文件。我当前的脚本只是将其附加到文件末尾,但这并不理想。我宁愿编写一个脚本,如果不存在新共享,则添加新共享,如果存在,则替换它。
我目前正在 CentOS 7 发行版上编写该脚本,但理想情况下希望能在各个发行版中运行,尽管这不是必需的。
另外,我之所以bash
这样做是因为该脚本在其他软件包添加到系统之前运行。该脚本用于yum
安装samba
软件包,然后配置它并添加共享。
答案1
为了符合现代系统管理员的最佳实践,最好将您的配置作为单独的文件添加/etc/smb/smb.d
,然后使用 来引用它们include
。遗憾的是,samba 不支持通配符include
,因此您必须添加类似以下内容的内容:
include = /etc/smb/includes.conf
在你的smb.conf
然后生成includes.conf
类似的东西:
ls /etc/smb/smb.d/* | sed -e 's/^/include = /' > /etc/smb/includes.conf
更多背景信息如下:
chicks@silver 23:57:23 smb !531 $ ls smb.d
a.conf c.conf e.conf
chicks@silver 23:57:29 smb !532 $ ls /etc/smb/smb.d/* | sed -e 's/^/include = /' > /etc/smb/includes.conf
chicks@silver 23:57:40 smb !533 $ cat includes.conf
include = /etc/smb/smb.d/a.conf
include = /etc/smb/smb.d/c.conf
include = /etc/smb/smb.d/e.conf
所以现在您可以将任何额外的 samba 配置粘贴到/etc/smb/smb.d
,重新生成includes.conf
并重新启动 samba,一切就都好了。
答案2
这是一个老话题,但仍然有用。这是我在简单的 Samba 安装中创建和删除用户以存储备份的脚本。
在 CentOS 上测试
准备目录和权限
在终端上运行此命令
sudo mkdir /备份 sudo mkdir /etc/samba/smb.conf.d sudo groupadd sambashare sudo chgrp sambashare /备份 sudo useradd -M -d /home/sadmin -s /usr/sbin/nologin -G sambashare sadmin sudo smbpasswd -a sadmin sudo smbpasswd -e sadmin
smb配置文件
[全球的] 工作组 = TUAITI 安全 = 用户 passdb 后端 = tdbsam 印刷 = 杯子 printcap 名称 = cups 加载打印机 = 是 杯子选项 = 原始 包括 = /etc/samba/includes.conf
smbaddshare.sh
/bin/bash #!/bin/bash 用户=$1 如果[-z“$1”] 然后 echo“未提供用户名” 出口 1 菲 useradd -M -d /backups/$USER -s /usr/sbin/nologin -G sambashare $USER mkdir /备份/$USER chown $USER:sambashare /backups/$USER chmod 2770 /备份/$USER smbpasswd -a $USER smbpasswd -e $用户 cat /etc/samba/smb.conf.d/$USER.conf [$USER] 路径 = /备份/$USER 可浏览 = 否 只读 = 否 强制创建模式 = 0660 强制目录模式 = 2770 有效用户 = $USER@sadmin 末梢血 ls /etc/samba/smb.conf.d/* | sed -e 's/^/include = /' > /etc/samba/includes.conf smbcontrol 全部重新加载配置
smbremoveshare 命令
/bin/bash #!/bin/bash 用户=$1 如果[-z“$1”] 然后 echo“未提供用户名” 出口 1 菲 read -r -p “您确定要删除该用户吗?[y/N]”响应 响应=${响应,,}#tolower 如果 [[ "$response" =~ ^(yes|y)$ ]] 然后 smbpasswd -x $USER 用户删除$USER mv /backups/$USER /backups/$USER.`date +"%Y%m%d%H%M%S"`.已删除 rm /etc/samba/smb.conf.d/$USER.conf ls /etc/samba/smb.conf.d/* | sed -e 's/^/include = /' > /etc/samba/includes.conf smbcontrol 全部重新加载配置 别的 回显“什么都没做” 菲