Problemas de permissões para o diretório compartilhado em um servidor

4

A configuração é que temos um VPS rodando o Debian Squeeze, e eu configurei um diretório compartilhado para nós compartilharmos arquivos. Até agora eu segui este guia:

link

Eu também configurei o umask para 002 corretamente (veja os comentários sobre esse guia), então agora podemos criar arquivos e diretórios diretamente no servidor e ambos temos permissões de leitura / escrita neles.

O único problema é que muitos dos nossos arquivos são criados em nossas máquinas locais (ambos rodando o Ubuntu 10.10) e depois são despejados no servidor. Isso resulta apenas no criador do arquivo / diretório com permissões de gravação, e no outro membro do grupo que configurei para compartilhar essa pasta apenas com acesso de leitura.

Meu próximo pensamento seria alterar a umask padrão em nossas máquinas locais, mas parece um pouco extremo ter que fazer isso, e não sei se é um risco de segurança.

Alguém pode me dizer se há uma solução melhor para o que estou tentando alcançar ou se esse é realmente o caminho a seguir?

Muito obrigado antecipadamente

    
por Jagot 16.03.2011 / 09:40

3 respostas

3

Eu usaria uma abordagem diferente e compartilharia os arquivos por meio de uma lista de controle de acesso no diretório.

Primeiro, verifique se as listas de controle de acesso estão ativadas no sistema de arquivos em que o diretório reside (certifique-se de que a entrada correspondente em /etc/fstab contenha acl na quarta coluna). Certifique-se também de ter os utilitários acl instalados (no Debian, instale o pacote acl ). Em seguida, conceda a ambos os usuários uma permissão de gravação herdável no diretório.

setfacl -m user:other_user:rwx /path/to/directory
setfacl -d -m user:other_user:rwx /path/to/directory

Se houver mais de dois usuários, repita este comando para cada usuário (a ACL é implícita para o usuário que criou o diretório); ou coloque os usuários em um grupo (como você já fez) e use -m group:group_name:rwx no comando setfacl .

    
por 17.03.2011 / 21:47
1

Desculpe eu estava sendo grosso nos comentários. o servidor sftp está sendo executado pelo root e você pega umask do root. Você deve conseguir corrigir isso editando seu arquivo /etc/ssh/sshd_config e alterando a linha

Subsystem sftp /usr/lib/openssh/sftp-server

para

Subsystem sftp /bin/sh -c 'umask 0002; /usr/libexec/openssh/sftp-server'
    
por 16.03.2011 / 17:15
0

Além da resposta de Iain, que deve funcionar (mas esteja atento às citações inteligentes e veja abaixo uma advertência), na parte superior de /etc/init.d/ssh você encontrará:

### BEGIN INIT INFO
# Provides:     sshd
# Required-Start:   $remote_fs $syslog
# Required-Stop:    $remote_fs $syslog
# Default-Start:    2 3 4 5
# Default-Stop:     
# Short-Description:    OpenBSD Secure Shell server
### END INIT INFO

...

umask 022

e você pode alterar o valor aqui.

Advertência:

muitos clientes S / FTP tentarão definir as permissões nos arquivos recém-carregados para corresponderem às permissões no sistema local, portanto, verifique se é isso que está acontecendo. Se estiver, normalmente você pode desativar essa opção nas configurações do cliente que você está usando para fazer o upload.

edit:

como outra sugestão, ao criar uma configuração como essa, sempre faço uso total do bit de aderência para propriedade de grupo (ou seja, defino todas as permissões de diretório como 2775) para que os arquivos e diretórios recém-criados herdem a correta propriedade do grupo.

    
por 17.03.2011 / 03:59