Я бы хотел написать сценарий, добавляющий общий ресурс в smb.conf
файл. Мой текущий сценарий просто добавляет его в конец файла, но это не идеально. Я бы предпочел что-то, что добавит новый общий ресурс, если он не существует, и заменит его, если он есть.
В настоящее время я пишу сценарий для дистрибутива CentOS 7, но в идеале мне хотелось бы, чтобы что-то работало во всех дистрибутивах, хотя это не является обязательным требованием.
Кроме того, я использую bash
для этого, потому что сценарий запускается до добавления других пакетов в систему. Скрипт использует yum
установить samba
пакеты, а затем предполагается настроить его и добавить акции.
Чтобы соответствовать современным рекомендациям системного администратора, было бы хорошо добавить ваши конфигурации в виде отдельных файлов в /etc/smb/smb.d
а затем укажите на них include
. К сожалению, самба не поддерживает подстановочные знаки include
s, поэтому вам нужно добавить что-то вроде:
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
Так что теперь вы можете вставлять любые дополнительные конфиги самбы в /etc/smb/smb.d
, восстановить includes.conf
и перезапустите самбу и жизнь хороша.
Это старая тема, но все же полезная. Это мои сценарии для создания и удаления пользователей в простой установке samba для хранения резервных копий.
Протестировано на CentOS
Подготовить каталог и разрешения
Запустите эти команды на терминале
sudo mkdir /backups sudo mkdir /etc/samba/smb.conf.d sudo groupadd sambashare sudo chgrp sambashare /backups sudo useradd -M -d /home/sadmin -s /usr/sbin/nologin -G sambashare sadmin sudo smbpasswd -a sadmin sudo smbpasswd -e sadmin
smb.conf
[global] workgroup = TUAITI security = user passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw include = /etc/samba/includes.conf
smbaddshare.sh
#!/bin/bash USER=$1 if [ -z "$1" ] then echo "No username given" exit 1 fi useradd -M -d /backups/$USER -s /usr/sbin/nologin -G sambashare $USER mkdir /backups/$USER chown $USER:sambashare /backups/$USER chmod 2770 /backups/$USER smbpasswd -a $USER smbpasswd -e $USER cat /etc/samba/smb.conf.d/$USER.conf [$USER] path = /backups/$USER browseable = no read only = no force create mode = 0660 force directory mode = 2770 valid users = $USER @sadmin EOF ls /etc/samba/smb.conf.d/* | sed -e 's/^/include = /' > /etc/samba/includes.conf smbcontrol all reload-config
smbremoveshare.sh
#!/bin/bash USER=$1 if [ -z "$1" ] then echo "No username given" exit 1 fi read -r -p "Are you sure you want to delete the user ? [y/N] " response response=${response,,} # tolower if [[ "$response" =~ ^(yes|y)$ ]] then smbpasswd -x $USER userdel $USER mv /backups/$USER /backups/$USER.`date +"%Y%m%d%H%M%S"`.deleted rm /etc/samba/smb.conf.d/$USER.conf ls /etc/samba/smb.conf.d/* | sed -e 's/^/include = /' > /etc/samba/includes.conf smbcontrol all reload-config else echo "Nothing done" fi