Como funciona umask [duplicada]

5

Sou novo no Linux. Eu tenho praticado alguns comandos. Minha pergunta é sobre quando eu estou criando arquivos diferentes usando uma umask diferente. Por exemplo:

umask 222 , pelo que entendi, é o mesmo que 777 - 222 = 555, então quando eu crio um novo arquivo (chame-o "newfile" ), então newfile permissões devem ser r-xr-x-r-x (ou estou errado?)

Whatever: "newfile" foi criado com r--r--r-- permissions.

Meu valor umask em /etc/profile é:

if [ $UID -gt 199 ] && [ "'id -gn'" = "'id -un'" ]; then
    umask 002
else
    umask 022
fi

Meu uid é 1002.

Nota: Apenas para registro, eu já li todas as perguntas e documentação do umask do man e ainda não entendi.

    
por Oscar 23.06.2015 / 03:17

2 respostas

10

A maioria dos programas cria arquivos sem o conjunto de execução de bits ( 0666 == -rw-rw-rw- ). Os bits de execução são praticamente definidos apenas pelo compilador, durante a instalação de um executável ou manualmente pelo usuário.

Em seguida, o umask é aplicado para determinar as permissões reais.

create    0666 rw-rw-rw-
umask     0222 r-xr-xr-x
effective 0444 r--r--r--

Note que não é realmente uma subtração, mas um bit a bit AND do complemento.

Então, é preciso ter 0777 - 0222 = 0555 e

  OCTAL  BINARY       HUMAN-READABLE
  0666   0110110110  -rw-rw-rw-
& 0555   0101101101  -r-xr-xr-x
  0444   0100100100  -r--r--r--

Veja também Não é possível explicar o comportamento da ACL

    
por 23.06.2015 / 03:43
1

O Wiki tem uma boa descrição de umask . Um bit 0 significa que o processo de criação especifica, enquanto 1 significa que não.

Portanto, '222' significa ignorar as premissas de gravação para usuário, grupo e outros, mas mantenha os bits de leitura e execução.

No seu exemplo, qualquer arquivo novo criado não definiu o bit de execução (geralmente quando você cria um novo arquivo que não o torna executável), e é por isso que você está obtendo r--r--r-- em vez de r-xr-xr-x .

    
por 23.06.2015 / 03:23

Tags