Para que serve o comando umask?

Para que serve o comando umask?

Para que realmente serve umasko comando no *nix OS?
Como é seu mecanismo de funcionamento e utilidade? por exemplo

$ umask 022

Muito obrigado antes

Responder1

umaskéum comando interno da maioria dos shells que é apenas uma interface para a umask()chamada do sistema, e vocêencontrará sua descrição na documentação do seu shell (cuidado, man umaskvocê pode apontar para a documentação da umask()chamada do sistema ou para o umaskinterno de um shell diferente do seu).

A máscara do usuário é um atributo de um processo (herdado do pai para os filhos e preservado na execução do comando) que determina quais permissões são concedidas automaticamente aos arquivos por padrão quando criados.

O umaskutilitário permite definir a máscara do usuário do processo shell para controlar as permissões dos arquivos criados por qualquer comando executado na sessão shell.

O umaskde todos os shells toma a máscara como um número octal, enquanto em alguns shells, incluindo todos os POSIX, ela também pode ser especificada em uma forma simbólica como for chmod.

A máscara determina quais partes das permissões devem serlimpoquando o arquivo é criado. Por exemplo umask 777, onde 0777 é 511 ou 0b111_111_111 faria com que os arquivos fossem criados sem permissão, pois todos os 9¹ bits das permissões de arquivo Unix (3 ( rler, wescrever e xexecutar) parado utilizador, 3 paragrupo, 3 paraoutro) seria apagado.

A forma simbólica especifica quais bits devemnãoser limpo. Assim umask 777seria umask u=,g=,o=.

Geralmente, você deseja que pelo menos o umask inclua o wbit para others, pois não deseja que os arquivos criados sejam graváveis ​​​​em todo o mundo ( umask 002ou umask u=rwx,g=rwx,o=rx).

Você provavelmente desejará que o wbit group também seja definido, pelo menos em sistemas onde o grupo principal do usuário não é pessoal (é compartilhado com outros usuários): umask 022ou umask u=rwx,g=rx,o=rx.

Um umask 077ou umask u=rwx,g=,o=garante que todos os arquivos criados sejam privados para você (não acessíveis a mais ninguém). Você costuma ver isso em scripts que criam arquivos temporários, às vezes em um subshell, como em:

(umask 077; echo test > "$tmpfile")

Definir umaskbits para o user pode causar problemas, pois você pode acabar criando arquivos que nem você consegue abrir.

Observe que a máscara de usuário aplicadaem cimadas permissões solicitadas pelos aplicativos quando eles open()ou creat()um arquivo. Se fizerem isso, creat("file", 0666)while umaskis 022( u=rwx,g=rx,o=rx), as permissões acabarão sendo 0644( u=rw,g=r,o=r). Os aplicativos ainda podem ligar fchmod()ou chmod()posteriormente para alterar as permissões como quiserem (e o umask não tem efeito nisso).

umasksem argumentos informa a máscara do usuário atual em formato octal. umask -Sem alguns shells, reporte isso de forma simbólica. umask -pin bashou fishgera código shell que, uma vez interpretado, definiria a mesma máscara de usuário.

Isso pode ser usado para restaurar o umask anterior depois de modificá-lo:

previous_umask=$(umask)
umask 077
# create some private files
umask "$previous_umask"

¹ Tecnicamente, existem 12 bits de permissões onde os 3 extras são bits especiais usados ​​para vários fins dependendo do tipo de arquivo e às vezes combinados com outros bits de permissão (como setuid, bits setgid para executáveis, tbit para diretórios. .). Em alguns sistemas, esses bits são ignorados quando solicitados em open()/ creat()e de qualquer maneira, quando são definidos por aplicativos (geralmente via chmod()posterior), é por um bom motivo, portanto, geralmente não é útil incluí-los no umaske a umask()chamada do sistema irá ignorá-los de qualquer forma.

informação relacionada