Defina a permissão padrão ao criar um arquivo

1

Quando eu crio um arquivo, a permissão é 644 (usuário rw, grupo r, outro r). Como posso gerar o arquivo padrão para ter permissão como 664?

    
por prosseek 03.03.2014 / 03:02

4 respostas

6

Existe um sinalizador de processo no Unix / Linux chamado umask , interpretado como um número octal que diz quais permissões para decolar um arquivo recém-criado. O sinalizador é herdado por processos filhos. Configurá-lo para o shell faz com que todos os processos iniciem mais tarde para usar esse valor.

As permissões como bits são 1 para x , 2 para w e 4 para r , que podem ser combinadas em um dígito octal. Por exemplo, r-x é 4 + 1 = 5. Existem 3 conjuntos de permissões (usuário, grupo, outros). Então o 664 é rw-rw-r-- .

Ao criar um arquivo "normal", as permissões de base são 666 (bem daemônicas, não é?), ao criar um executável é 777. A partir disso, o umask é retirado, 002 daria 664 para um arquivo regular.

Os shells possuem comandos internos chamados umask para definir o umask. Você pode executá-los interativamente, mas na maioria das vezes eles são executados em algum arquivo de inicialização para o shell para torná-lo permanente. No caso do bash (1), isso deve ser feito em ~/.bashrc . No Fedora é definido todo o sistema em /etc/bashrc .

Antes de alterar a configuração padrão, considere as implicações com cuidado, permitindo que permissões mais relaxadas possam permitir acesso indesejável aos seus arquivos. Permitir que qualquer pessoa do seu grupo escreva seus arquivos é arriscado!

    
por 03.03.2014 / 03:22
2

Se você quiser alterar a umask padrão para todos os usuários, adicione esta linha:

umask 0002

para /etc/profile .

Embora qualquer usuário possa substituir esse valor definindo seus próprios em ~/.bashrc .

Para calcular a permissão de arquivo gerada pelo valor umask, considere esta fórmula:

generated_permission = (NOT umask) AND default_permission

em que NOT e AND é o operador bit a bit lógico ~ e & .

    
por 03.03.2014 / 03:27
1

Use umask .

Por exemplo, no seu caso:

umask 002
    
por 03.03.2014 / 03:07
-2

Nos tempos antigos (nos anos 1970) as pessoas escreviam códigos simples que faziam com que as coisas fossem difíceis de entender. Isto é o que as outras respostas estão relacionadas.

Se você estiver usando um shell com menos de 30 anos, poderá fazer isso de uma maneira mais fácil de entender:

umask g+w

Isso é melhor porque, neste modo, a máscara é invertida.

Histórico: a interface do kernel ainda gerencia uma máscara que é aplicada ao terceiro parâmetro de open() .

Desde 1988 (com ksh88) uma nova interface de shell para o comando chmod no shell foi estabelecida.

umask -S

imprime a máscara do modo de criação de arquivo na moderna sintaxe chmod e

umask u=rw,g=rw,o=r

permite definir a máscara de criação de arquivos usando a sintaxe chmod .

    
por 08.07.2018 / 20:01