Estações de trabalho on-line OnWorks Linux e Windows

Logotipo

Hospedagem online grátis para estações de trabalho

<Anterior | Conteúdo | Próxima>

umask - Definir permissões padrão

O umask comando controla as permissões padrão dadas a um arquivo quando ele é criado. Ele usa notação octal para expressar um máscara de bits a serem removidos dos atributos de modo de um arquivo. Vamos dar uma olhada:



[me @ linuxbox ~] $ rm -f foo.txt

[me @ linuxbox ~] $ umask

0002

[me @ linuxbox ~] $ > foo.txt

[me @ linuxbox ~] $ rm -f foo.txt

[me @ linuxbox ~] $ umask

0002

[me @ linuxbox ~] $ > foo.txt


[me @ linuxbox ~] $ ls -l foo.txt

-rw-rw-r-- 1 eu eu 0 2016-03-06 14:53 foo.txt

[me @ linuxbox ~] $ ls -l foo.txt

-rw-rw-r-- 1 eu eu 0 2016-03-06 14:53 foo.txt


Primeiro removemos qualquer cópia antiga de foo.txt para ter certeza de que estávamos começando do zero. Em seguida, executamos o umask comando sem um argumento para ver o valor atual. Ele respondeu com o valor 0002 (O valor que 0022 é outro valor padrão comum), que é a representação octal de nossa máscara. Em seguida, criamos uma nova instância do arquivo foo.txt e observe suas permissões.

Podemos ver que tanto o proprietário quanto o grupo obtêm permissão de leitura e gravação, enquanto todos os outros recebem apenas permissão de leitura. O motivo pelo qual o mundo não tem permissão de gravação é o valor da máscara. Vamos repetir nosso exemplo, desta vez definindo a máscara para nós mesmos:



[me @ linuxbox ~] $ rm foo.txt [me @ linuxbox ~] $ umask 0000 [me @ linuxbox ~] $ > foo.txt [me @ linuxbox ~] $ ls -l foo.txt

-rw-rw-rw- 1 eu eu 0 2016-03-06 14:58 foo.txt

[me @ linuxbox ~] $ rm foo.txt [me @ linuxbox ~] $ umask 0000 [me @ linuxbox ~] $ > foo.txt [me @ linuxbox ~] $ ls -l foo.txt

-rw-rw-rw- 1 eu eu 0 2016-03-06 14:58 foo.txt


Quando definimos a máscara para 0000 (efetivamente desativando-o), vemos que o arquivo agora pode ser escrito por todos. Para entender como isso funciona, temos que olhar para os números octais novamente. Se pegarmos a máscara e expandi-la em binário e, em seguida, compará-la aos atributos, podemos ver o que acontece:


Modo de arquivo original

--- rw- rw- rw-

Máscara

000

000

000

010

Resultado

---

rw-

rw-

r--


Ignore por enquanto os zeros à esquerda (veremos esses em um minuto) e observe que onde o 1 aparece em nossa máscara, um atributo foi removido-neste caso, a permissão de gravação mundial. É isso que a máscara faz. Em todos os lugares onde um 1 aparece no valor binário da máscara, um atributo não está definido. Se olharmos para um valor de máscara de 0022, podemos ver o que faz:


Modo de arquivo original

--- rw- rw- rw-

Máscara

000

000

010

010

Resultado

---

rw-

r--

r--


Novamente, onde 1 aparece no valor binário, o atributo correspondente não está definido. Brinque com alguns valores (tente alguns setes) para se acostumar a como isso funciona. Quando terminar, lembre-se de limpar:



[me @ linuxbox ~] $ rm foo.txt; umask 0002

[me @ linuxbox ~] $ rm foo.txt; umask 0002


imagem

Na maioria das vezes, não precisamos mudar a máscara; o padrão fornecido por sua distribuição será adequado. Em algumas situações de alta segurança, no entanto, vamos querer controlá-lo.


Algumas permissões especiais

Embora geralmente vejamos uma máscara de permissão octal expressa como um número de três dígitos, é tecnicamente mais correto expressá-la em quatro dígitos. Porque? Porque, além da permissão de leitura, gravação e execução, existem algumas outras configurações de permissão menos usadas.

O primeiro deles é o bit setuid (octal 4000). Quando aplicado a um arquivo executável, ele define o ID de usuário efetivo desde o usuário real (o usuário que está executando o programa) até o proprietário do programa. Na maioria das vezes, isso é fornecido a alguns programas pertencentes ao superusuário. Quando um usuário comum executa um programa que é “raiz se- tuídea”, O programa é executado com os privilégios efetivos do superusuário. Isso permite que o programa acesse arquivos e diretórios que um usuário comum normalmente seria proibido de acessar. Claramente, porque isso levanta questões de segurança, o número de programas setuid deve ser mantido em um mínimo absoluto.

A segunda configuração menos usada é o bit setgid (octal 2000) que, como o bit setuid, muda o ID de grupo eficaz do ID de grupo real do usuário real para o proprietário do arquivo. Se o bit setgid for definido em um diretório, os arquivos recém-criados no diretório receberão a propriedade do grupo do diretório em vez da propriedade do grupo do criador do arquivo. Isso é útil em um diretório compartilhado quando os membros de um grupo comum precisam acessar todos os arquivos do diretório, independentemente do grupo principal do proprietário do arquivo.

O terceiro é chamado de pedaço pegajoso (octal 1000). Isso é um resquício do antigo Unix, onde era possível marcar um arquivo executável como “não trocável”. Nos arquivos, o Linux ignora o sticky bit, mas se aplicado a um diretório, impede que os usuários excluam ou renomeiem os arquivos, a menos que o usuário seja o proprietário do diretório, o proprietário do arquivo ou o superusuário. Isso geralmente é usado para controlar o acesso a um diretório compartilhado, como / Tmp.



imagem

Aqui estão alguns exemplos de como usar chmod com notação simbólica para definir essas permissões especiais. Primeiro atribuindo setuid a um programa:

chmod u + s programa

A seguir, atribuindo setgid a um diretório:

chmod g + s dir

Finalmente, atribuindo o sticky bit a um diretório:

chmod + t dir

Ao visualizar a saída de ls, você pode determinar as permissões especiais. Aqui estão alguns exemplos. Primeiro, um programa configurado:

-rwsr-xr-x

Um diretório que possui o atributo setgid:

desenharsrx

Um diretório com o bit sticky definido:

drwxrwxrwt


Top OS Cloud Computing na OnWorks: