Мне нужна помощь с Samba
конфигурация.
Я хочу достичь конфигурации, в которой пользователь Windows на общем ресурсе видит только свои файлы. Это просто достигается с помощью такой конфигурации:
Пользователи авторизованы Windows AD Server
[BACKUP]
comment = BACKUP STORAGE LOCATION
path = /storage/BACKUP
read only = no
browseable = yes
writable = yes
create mode = 0600
directory mode = 0700
force directory mode = 0700
force create mode = 0600
access based share enum = yes
hide unreadable = yes
valid users = "@DOMAINNAME+SOMEUSERGROUP"
Работает нормально, но ... На стороне сервера все в каталоге /storage/BACKUP
хранит файлы каждого пользователя.
Поэтому я хотел бы создать здесь каталог для каждого пользователя (я не могу использовать [home], потому что он уже используется)
Итак, я хотел бы сохранить это так:
/storage/BACKUP/username/
Поэтому, когда я меняю путь и добавляю %U
в итоге все почти ок.
Проблема в том, что мне нужно вручную создать каталог /storage/BACKUP/username
.
Так что мне нужно как-то сила Samba
чтобы создать этот каталог до того, как пользователь получит доступ к этому общему ресурсу.
Я пробовал добавить add user script = /path/to/mkdir /storage/BACKUP/%U
Но это не работает, потому что:
Я не создаю пользователей в Linux после их входа в систему, поэтому я не использую скрипт добавления пользователя / машины где-либо еще.
Так что я хочу заставить Samba
для создания каталога для пользователя, когда этот пользователь пытается подключиться. Я ищу в Google пару часов и не нашел способ сделать это, что подойдет мне.
Мне нужно сохранить местоположение / server / BACKUP для всех, но на стороне сервера необходимо хранить файлы в отдельных каталогах для каждого пользователя, поэтому создание нового общего ресурса также не является решением.
Вы можете использовать preexec
или root preexec
варианты для этого. Они указывают сценарий, который запускается при подключении к общему ресурсу. В случае preexec
общий ресурс запускается как подключающийся пользователь и как root с root preexec
.
В вашей доле:
[BACKUP]
root preexec = /etc/samba/gendir.sh %u
где /etc/samba/gendir.sh
выглядит примерно так:
#!/bin/bash
DIRECTORY=/storage/BACKUP/$1
if [ ! -d "$DIRECTORY" ]; then
mkdir $DIRECTORY
fi
В зависимости от ваших требований добавьте chown
и / или chmod
заявления к сценарию.