Como local_umask e file_open_mode funcionam?

11

Eu tive alguns problemas com as permissões de arquivo quando usuários locais carregaram seus arquivos via vsftp em um servidor.

Eu queria que os arquivos tivessem todas as 766 permissões. Depois de muitas tentativas e erros, descobri que tinha que definir as configurações assim:

local_umask=011
file_open_mode=0777

Mas não sei por que isso resulta em 766 permissões. Alguém pode explicar isso?

OrangeTux
fonte

Respostas:

13

O vsftpd daemeon criará permissões de arquivo como 0777 . A partir disso, o local_umask( 0011 ) é subtraído. O umask remove essencialmente as permissões que você não deseja que os usuários tenham. Isso resulta nas permissões de arquivo do usuário a serem definidas em 0766 .

Para mais informações, consulte este artigo sobre permissões de arquivo .

Ignacio Vazquez-Abrams
fonte
2
Sim, entendi, conheço o truque. Mas como isto funciona? Por que não consigo definir apenas 766?
precisa
1

O valor umask é subtraído da configuração do modo aberto. Se você não fornecer um valor umask personalizado, o padrão (077) será usado, levando a um resultado que você não deseja.

Timo Reimann
fonte
-1

Você está recebendo esta permissão porque:

1) Definindo local_umask = 011, você diz ao vsftp para definir:

0: ler, escrever e executar 1: ler e escrever 1: ler e escrever

Isso é igual ao chmod 766.

2) O valor de file_open_mode = 0777 não é analisado,

Aqui você pode encontrar uma explicação muito boa sobre o que são umask e como usá-lo: https://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html

Fernando Kosh
fonte
Esta não é uma resposta para a pergunta. (1) O OP deseja que os arquivos sejam protegidos 766, não 666, para que você esteja abordando o cenário errado. (2) O OP tem uma configuração que funciona. A questão é perguntar por que funciona. Você não abordou isso.
Scott
Ok, @ Scott, editou a resposta.
Fernando Kosh