Configurando um diretório verdadeiramente gravável pelo mundo para o Samba

3

Eu tenho um diretório em um servidor linux, onde meu usuário possui todos os arquivos, e apenas um determinado diretório é gravável pelo mundo. Todos os outros diretórios são somente leitura para os convidados. A idéia é que qualquer pessoa deve poder fazer o que quiser dentro do diretório mundial gravável, mas há um problema: depois disso, não posso alterar arquivos criados por convidados com meu próprio usuário UNIX.

Eu simplesmente não consigo descobrir que tipo de permissões do UNIX e / ou configurações do samba permitiriam o mesmo tipo de comportamento que eu tenho em um compartilhamento de janelas configurado de forma semelhante. Na máquina windows, posso definir o diretório gravável do mundo no compartilhamento para ter permissões de gravação para "Todos", e todos podem fazer o que quiserem dentro desse diretório, localmente ou acessando o compartilhamento como convidado. Como obtenho essa mesma funcionalidade no servidor linux? Atualmente, os arquivos escritos por convidados só podem ser alterados pelos usuários do UNIX nobody e root.

Aqui está o meu smb.conf:

[global]
unix charset = iso8859-15
interfaces = 192.168.0.1
bind interfaces only = yes
socket address = 192.168.0.1
name resolve order = host
read only = no
max open files = 32768
csc policy = disable
load printers = no
syslog = 0
map to guest = Bad user # This is horrible :)

[homes]
browseable = no
create mask = 0600
security mask = 0600
directory mask = 0700
directory security mask = 0700

[problem_share]
path = /storage
public = yes
create mask = 0644
security mask = 0644
directory mask = 0755
directory security mask = 0755
hide dot files = no

Eu tentei usar ACLs padrão, mas isso não pareceu ajudar. Esses foram muito úteis em muitas outras situações, mas o samba tem tantas configurações de permissões que parecem interferir de alguma forma.

    
por juhakall 15.11.2011 / 05:21

3 respostas

3

grs está certo sobre os arquivos.

[problem_share]
path = /storage
public = yes
create mask = 0666 #(everybody: read+write)
security mask = 0666 #(everybody: read+write)
directory mask = 0777 #(everybody: list+modify+traverse)
directory security mask = 0777 #(everybody: list+modify+traverse)
hide dot files = no

Você pode melhorar seu entendimento sobre Permissões tradicionais do Unix .

    
por 15.11.2011 / 07:18
2

Você precisa corrigir [problem_share] create mask = 0666 . Mais informações: aqui .

    
por 15.11.2011 / 06:11
1

Eu percebo que minha pergunta inicial foi muito mal apresentada, e eu merecia as respostas dos novatos. Mas aqui está como eu finalmente resolvi esse problema:

Eu fiz todos os diretórios em / storage de propriedade do meu próprio usuário UNIX, com permissões somente leitura para outros. Então eu montei / storage / upload em cima de si mesmo usando a opção "mirror" dos bindfs do FUSE. A linha de comando exata é "bindfs --mirror = @ staff, @ users, nobody - criar para usuário = myuser / storage / upload / storage / upload". Agora usuário ninguém e usuários na equipe de grupos & os usuários vêem os arquivos em / storage / upload como próprios e podem modificá-los como acharem melhor. Mas, na verdade, todos os arquivos são de propriedade do meu próprio usuário UNIX e, se eu mover um arquivo fora desse diretório, nenhum outro usuário poderá modificá-lo mais, ele se tornará somente leitura para eles. Esta é uma solução muito limpa IMO, e não está ligada ao samba de todo.

    
por 01.12.2011 / 19:36