www-data group escreve depois do sftp?

1

Eu gostaria que meu usuário do apache pudesse ler e gravar arquivos, meu (s) usuário (s) sftp (s) para poder carregar arquivos que estão disponíveis (rwX) para outros usuários do sftp e apache, e para todos os outros leia está ok.

psst: I know this question comes up a lot, and I've been reading answers and trying many many things for two days now and am now thoroughly confused . Também estou ciente dos riscos de segurança envolvidos em permitir o acesso à escrita www-data em meu site, mas essa não é a questão que estou aqui para discutir.

Aqui estão os meus passos:

usermod -aG www-data tim
mkdir -p /var/www/mysite/public_html

# now upload/untar the site, etc. not shown here #

chown -R www-data:www-data /var/www/mysite
chmod -R u+rwX,go+rwX,g+s,o-w /var/www/mysite

# now make the apache virtual host and so on .. not shown here #

Os arquivos dentro de public_html são definidos assim - o grupo tem gravação:

-rw-rwSr-- 1 www-data www-data favicon.ico

Agora, faça logon como minha conta "tim" usando o sftp, eu carrego um novo arquivo na pasta public_html e, em seguida, vejo sua permissão:

-rw-r--r-- 1 tim      wwww-data COPYING.txt

Então, eu perdi o grupo WRITE, apesar de ter adicionado g+s na pasta pai para que ele herdasse o grupo.

Aparentemente, isso não significa que também herda o grupo / máscara /. Eu li em algum lugar (e perdi a referência) que o SFTP não honra o umask; parece que a permissão está se perdendo, mas não sei como consertar isso.

editar encontrei a referência umask e tentei - link - pode ver que o arquivo está executando o login apon, mas ainda assim a máscara não está defina para g + w após um upload.

    
por frumbert 01.07.2014 / 03:59

2 respostas

0

Eu não chequei muito, mas tentei de 2 a 3 vezes com diferentes permissões de grupo em um servidor local.

O que eu obtenho aqui é que, quaisquer permissões que sejam dadas ao arquivo no sistema local são exatamente as mesmas permissões obtidas pelo arquivo no servidor remoto.

    
por 01.07.2014 / 09:17
0

Quando um processo cria um arquivo no unix, o processo controla quais permissões são atribuídas ao arquivo. O processo especifica um conjunto de permissões, geralmente 0666 ou 0777, na chamada do sistema de criação de arquivos. As permissões são modificadas pela umask do processo para produzir as permissões reais do arquivo. Sinalizadores especiais no diretório pai não fazem parte desse processo. Um processo também pode alterar as permissões em um arquivo existente por meio de outra chamada de sistema chamada chmod() .

O SFTP é realmente um protocolo de sistema de arquivos remoto. Quando um cliente cria um arquivo em um servidor, o cliente pode informar ao servidor exatamente quais permissões dar ao novo arquivo. O cliente também pode invocar chmod() remotamente para alterar as permissões em arquivos existentes. O servidor SFTP do OpenSSH não fornece nenhum meio para o administrador do servidor restringir isso que eu saiba.

O que eu provavelmente faria é escrever um script de shell que varre a pasta e corrige as permissões de arquivo. Você pode executar o script em cron a cada alguns minutos. Algo como o seguinte deve começar:

#!/bin/sh
cd /var/www/mysite || exit 1
find . -type f ! -perm 0664 -exec chmod 0664 '{}' ';'
    
por 01.07.2014 / 17:18