Como forçar o Samba a criar o diretório

2

Preciso de ajuda com a configuração Samba .

O que eu quero alcançar é a configuração, onde o usuário do Windows em compartilhamento vê apenas seus arquivos. Isto é simplesmente conseguido Com configuração como esta:

Os usuários são autorizados pelo 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"

Funciona bem, mas ... No lado do servidor, tudo no diretório /storage/BACKUP mantém arquivos de todos os usuários.

Então eu gostaria de criar um diretório aqui para cada usuário (não posso usar [home], porque ele já é usado)

Então, eu gostaria de mantê-lo assim:

/storage/BACKUP/username/

Então, quando eu mudar de caminho, e adicionar %U no final, tudo está quase ok.

O problema é que preciso criar manualmente o diretório /storage/BACKUP/username .

Então, o que preciso é de alguma forma forçar Samba a criar esse diretório antes que o usuário acesse esse compartilhamento.

Eu tentei adicionar add user script = /path/to/mkdir /storage/BACKUP/%U Mas isso não está funcionando porque:

  1. Eu não sei porque;)
  2. Já tenho usuários logados antes
  3. Deve começar para novos usuários criados, isso será ok para mim, mas não funciona.

Eu não estou criando usuários no Linux, depois que eles logar, então eu não estou usando o script user / machine em nenhum outro lugar.

Então eu quero forçar Samba a criar um diretório para o usuário, quando este usuário tentar se conectar. Estou pesquisando no Google por algumas horas e não encontrei uma maneira de fazer isso para mim.

Eu preciso manter / server / BACKUP local para todos, mas no lado do servidor, preciso manter os arquivos em diretórios separados por usuário, então criar um novo compartilhamento também não é uma solução.

    
por Lisek 17.02.2014 / 12:48

1 resposta

5

Você pode usar as opções preexec ou root preexec para isso. Eles especificam um script que é executado na conexão com um compartilhamento. No caso de preexec , o compartilhamento é executado como o usuário de conexão e como root com root preexec .

Na sua parte:

[BACKUP]
root preexec = /etc/samba/gendir.sh %u

onde /etc/samba/gendir.sh se parece com isso:

#!/bin/bash 
DIRECTORY=/storage/BACKUP/$1
if [ ! -d "$DIRECTORY" ]; then
   mkdir $DIRECTORY
fi

Dependendo de seus requisitos, adicione chown e / ou chmod ao script.

    
por 17.02.2014 / 13:15