Como obter acesso de gravação automaticamente aos diretórios recém-criados?

1

Um compartilhamento no servidor é definido da seguinte forma

[share]
path = ...
read only = no
create mask = 0777
directory mask = 0777
force create mode = 0777
force directory mode = 0777
valid users = dobiasd

Ele é montado por meio do fstab no cliente:

//server/share /home/dobiasd/share/ cifs file_mode=0777,dir_mode=0777,iocharset=utf8,username=dobiasd,password=dummy 0 0

O cliente pode criar arquivos e diretórios. Um diretório recém-criado também pode ser excluído novamente, mas não é possível criar novos arquivos ou diretórios dentro desse novo diretório. Para permitir isso eu primeiro tenho que fazer um chmod -R 777 . no servidor, então o "drwxrwxr-x" do diretório se torna um "drwxrwxrwx".

Como posso fazer o samba criar o novo diretório imediatamente de maneira que subpastas possam ser criadas nele?

    
por Tobias Hermann 07.04.2015 / 20:50

1 resposta

3

Então, esse é um compartilhamento do Samba, montado em uma caixa do Linux (clientes que usam o Windows não têm o problema)? Se bem entendi, poderia ser apenas um problema de umask . Se você digitar umask em seu cliente, provavelmente obterá 0002 , o que significa que, quando você cria um novo diretório, suas ACLs são rwxrwxr-x ( rw-rw-r-- para arquivos).

Portanto, se você quiser que todas as pastas e arquivos recém-criados sejam graváveis pelo mundo , poderá definir umask 0000 (no seu .bash_profile , por exemplo). Claro, isso pode ser uma má ideia ...

Se eu fosse você, garantiria que todos os seus usuários confiáveis fossem membros de um mesmo grupo, digamos friends e definisse esses direitos no diretório de compartilhamento de seus pais:

chmod g+rwxs /path/to/share

Aqui, a função do sgid bit (o s acima) é garantir que todos os diretórios e arquivos que serão criados sob este diretório pertencerão ao proprietário do grupo de o diretório pai.

Exemplo para ser mais claro (aqui, apaul é membro de users (principal) e friends grupos):

$ mkdir /tmp/share
$ mkdir /tmp/share/dir1
$ ls -l /tmp/share
drwxrwxr-x 2 apaul users  4096  7 april 21:48 dir1

$ chgrp friends /tmp/share
$ chmod g+rwxs /tmp/share
$ ls -ld /tmp/share
drwxrwsr-x 4 apaul friends 4096  7 april 21:49 share/

$ mkdir /tmp/share/dir2
$ ls -l /tmp/share
drwxrwxr-x 2 apaul users   4096  7 april 21:48 dir1
drwxrwsr-x 2 apaul friends 4096  7 april 21:49 dir2

Em seguida, todos os membros do grupo friends podem criar sub-diretórios (ou arquivos) sob o compartilhamento, mas este não é gravável pelo mundo.

    
por 07.04.2015 / 21:58