Eu tenho o Samba rodando em um computador plug executando o Debian Squeeze que estou tentando configurar para atuar como um servidor de arquivos baseado na web.
A máquina executa o Lighttpd para o servidor da Web e o Samba para o compartilhamento de arquivos. O usuário é capaz de usar o Samba para copiar arquivos de sua máquina local no computador plug usando o Samba, e depois visualizá-los através do navegador da web (script que eu escrevi).
O Lighttpd é executado como www-data
, o Samba é executado como root
e o usuário é autenticado com o Samba por meio de uma conta de usuário chamada admin
.
O problema é que estou tendo dificuldades de permissão quando um usuário copia arquivos de sua máquina através do Samba. Vamos dar um exemplo com um arquivo chamado foo.pdf
: -
Exemplo
foo.pdf
é armazenado em uma unidade NAS separada na LAN, que o usuário copia para a máquina local que está executando o OS X. As permissões agora são as seguintes: -
mac:Desktop jon$ ls -l | grep foo.pdf
-rwx------ 1 jon NETWORK\Domain Users 3516266 10 May 10:54 foo.pdf
Tudo está bem, porque o usuário tem todos os direitos para rwx
do arquivo, mesmo que ninguém mais o faça - o que não é um problema. Mas agora, o usuário decide que quer copiar foo.pdf
de sua máquina local no computador da tomada - e as coisas começam a dar errado!
Depois de usar o Samba para copiar o arquivo, as permissões agora são as seguintes: -
root@plug:/home/admin/content# ls -l | grep foo.pdf
-rwx------ 1 admin admin 3516266 May 10 09:54 foo.pdf
O problema é que agora somente admin
tem os direitos para rwx
do arquivo. Nenhum outro usuário tem nenhum direito. Isso significa que www-data
(que é o servidor da web) não tem direitos para este arquivo. O resultado é um 403 - Forbidden
se eu tentar abrir foo.pdf
por meio de um navegador da Web.
O conhecimento do My * nix é bastante limitado, mas acho que o que precisa acontecer para corrigir isso é que o Samba precisa relaxar essas permissões ao copiar arquivos para permitir que outros usuários leiam o arquivo.
Ler perguntas semelhantes sobre o SF e outros sites indica que uma possível solução pode estar no create mode/mask
e force create mode/mask
- no entanto, não está claro se isso se aplica apenas a novos arquivos ou a arquivos copiados - porque é não está funcionando para mim!
Como teste, usei essas opções para forçar o 0777
(obviamente inseguro para um ambiente de produção, mas só queria testar) e descobri que ele não fazia nenhuma alteração nas permissões de arquivo de arquivos copiados.
Meu smb.conf
é o seguinte: -
[global]
workgroup = WORKGROUP
server string = %h server
dns proxy = no
log file = /var/log/samba/log.%m
log level = 4
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword$
pam password change = yes
create mask = 0777
force create mode = 0777
directory mask = 0777
force directory mode = 0777
Isso não parece mudar nada, pois os arquivos ainda têm as permissões -rwx------ 1 admin admin
depois de serem copiadas.
... alguma ideia?