
Eu tenho um usuário myuser, que só tem permissão para se conectar ao ssh via sftp. Gostaria que este usuário sempre criasse arquivos com rwx-rwx-rx e sempre pertencentes ao grupo apache. Tentei realizar a parte de permissões de arquivo com umask, mas em arquivos e diretórios umask obtêm permissões diferentes para o mesmo umask. A ajuda é apreciada.
Responder1
Fundo
Este é um problema sempre duradouro sftp
e de compartilhamento de arquivos. É porque as permissões resultantes são baseadas na permissão original do arquivo no lado do usuário e o -u
argumento umask () não está forçando tais permissões, mas apenas removendo as permissões indesejadas. Isso significa que somente se o usuário tentar fazer upload do arquivo com permissão 0777
, ele será aplicado e reduzido para 0775
. Caso contrário, é deixado como estava. Por exemplo, se o usuário tiver um arquivo armazenado em seu sistema de arquivos com permissão 0700
, ele também aparecerá após o upload como 0700
.
Solução
Recentemente, resolvemos esse problema no Fedora aplicando um patch que força a permissão exata de novos arquivos enviados usando -m
a mudança para sftp-server
. É baseado neste bug inicial:
https://bugzilla.mindrot.org/show_bug.cgi?id=1844
Isto está disponível no atualCentOS 7.2. Do registro de alterações:
- Add sftp option to force mode of created files (#1197989)
Gambiarra
Não há outra solução elegante, exceto algum script em execução periódica (de cron
), que está corrigindo as permissões erradas. Seria uma frase simples no bash, mas acho que você pode pensar em algumas. Posso elaborar mais sobre isso se você estiver interessado.
Ou você pode usar inotify
para "capturar" as alterações anteriormente.
O grupo deveria ser herdado do diretório pai, não é?