Назад | Перейти на главную страницу

Как бы вы добавили общий ресурс в smb.conf через скрипт?

Я бы хотел написать сценарий, добавляющий общий ресурс в smb.conf файл. Мой текущий сценарий просто добавляет его в конец файла, но это не идеально. Я бы предпочел что-то, что добавит новый общий ресурс, если он не существует, и заменит его, если он есть.

В настоящее время я пишу сценарий для дистрибутива CentOS 7, но в идеале мне хотелось бы, чтобы что-то работало во всех дистрибутивах, хотя это не является обязательным требованием.

Кроме того, я использую bash для этого, потому что сценарий запускается до добавления других пакетов в систему. Скрипт использует yum установить samba пакеты, а затем предполагается настроить его и добавить акции.

Чтобы соответствовать современным рекомендациям системного администратора, было бы хорошо добавить ваши конфигурации в виде отдельных файлов в /etc/smb/smb.d а затем укажите на них include. К сожалению, самба не поддерживает подстановочные знаки includes, поэтому вам нужно добавить что-то вроде:

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