Historicamente porque é umask do jeito que é?

6

Umask sempre me enganou. Logicamente eu preferiria ter um 'setmask' em vez disso, que leva argumentos no estilo chmod. Alguém sabe por que é assim?

    
por ojblass 17.09.2015 / 21:14

3 respostas

4

Acredito que isso decorre de 2 ideias, embora eu possa estar errado.

  • Inicialmente, as permissões de desenvolvimento do UNIX estavam abertas. Antes da era da segurança, a ideia de tornar um arquivo apenas legível / gravável / executável por certos indivíduos não era necessária. Como tal, a progressão natural desse ponto de vista seria pegar a ideia de permissões e restringi-las. Em vez de obter um valor 0 de permissões e adicioná-las a elas.

  • A outra razão seria a ideia de que uma negação específica produz resultados mais precisos na maioria dos casos, em seguida, uma permissão especificada. Situações diferentes exigem necessidades diferentes. Por exemplo, as permissões do diretório padrão são: 755 , em que as permissões do arquivo padrão são 644

Se você especificamente permitido executar, por exemplo, isso teria que ser traduzido para diretórios e arquivos. Você seria então confrontado com a escolha de ambos os diretórios não vêm com a execução ativada, ou arquivos fazem. No entanto, os diretórios precisam serem ativados para funcionar. Como tal, em vez disso, você faz a opção de remover permissões extras, em vez de adicionar permissões específicas.

Com uma umask de 0000 , você ainda acaba sem permissões de execução em um arquivo normal, se você fez as coisas ao contrário, seria mais difícil projetá-lo dessa maneira.

    
por 17.09.2015 / 21:29
2

umask não especifica permissões em arquivos criados por creat (2) e open (2). Ele apenas especificou quais bits devem ser desativados , a fim de impedir que programas que desprezam a segurança façam furos.

Uma convenção de TI comum refere-se às opções "padrão" e "não alterar" com o número 0 . Aqui, umask = 0 indica que os modos após creat (2) não devem ser alterados, e os programas produzirão arquivos com exatamente as mesmas permissões especificadas por creat (nome, mode ). Quando umask tem um bit definido, limpa o respectivo bit de permissão para arquivos criados (isto é, efetua algumas alterações em relação à lógica do programa). É por isso que essa lógica negativa.

    
por 17.09.2015 / 21:41
1

setmask foi um comando disponível no UNOS (desde 1980).

Desde mais tempo, o comando umask oferece recursos semelhantes.

Ligue:

umask -S para obter a máscara invertida como um chmod como o modo simbólico.

umask u=rwx,g=rx,o=rx para obter o equivalente a uask 022 .

Portanto, o seu desejo já foi implementado.

    
por 17.09.2015 / 22:05

Tags