Índice de conteúdo:
- Algumas palavras sobre umask
- Vamos experimentar como funciona?
- Alteração permanente do umask a nível do usuário comum
Algumas palavras sobre umask
O comando umask (User File Creation Mask) é usado para definir as permissões padrão para arquivos e diretórios a serem criados em sistemas Linux. Este comando só afeta arquivos e directórios recém-criados, portanto, os previamente existentes mantêm-se com as mesmas permissões antes definidas.
O umask é uma ferramenta que pode ajudar a reforçar a segurança. Ao definirmos um umask mais restritivo reduzimos as possibilidades de utilizadores não autorizados acessarem os nossos arquivos.
É claro que podemos criar os ficheiros e depois alterar as permissões, mas a aplicação do umask facilita a tarefa.
Imagine que vamos criar dez ficheiros nos quais queremos que só o dono do ficheiro tenha permissões de leitura e escrita e não queremos que grupos e outros tenham quaisquer permissões. Precisamos neste caso aplicar as permissões 600, forma numérica de permissões que dá ao dono do arquivo as permissões de leitura e escrita e ao grupo e outros são retiradas todas as permissões, o que corresponde a rw------- na representação simbólica de permissões.
Mas sabemos que temos um umask padrão de 0022, criando os dez ficheiros com esse padrão resultaria na autorização de leitura e escrita para o proprietário dos arquivos e permissão de leitura para o grupo e outros, pelo que os ficheiros teriam as permissões 644, e não é isso que queremos, mas como os ficheiros foram criados com permissões 644 terão de ser alterados para 600 usando o comando chmod 600 nomeDosFicheiros, imaginas o trabalho de usar o chmod (Change mode) em cada um dos ficheiros ou directórios criados?
Neste caso, todo o trabalho nos é facilitado ao definirmos o umask 0023 e a partir dele criar os nossos dez ficheiros.
O umask definido no terminal onde nos encontramos só funciona nesse terminal e não tem caráter permanente. Para que uma nova definição do umask seja permanente deverá ser acrescentada ao ficheiro .bashrc.
A ideia é: Estando num terminal, precisamos criar cinco ficheiros com o mesmo padrão de permissões, como sendo 600, definimos o umask para esse padrão; precisamos agora criar oito directórios com um novo padrão de permissões, por exemplo o 775 (leitura, escrita e execução para o proprietário dos directórios; leitura, escrita e execução para o grupo ao qual os directórios pertencem e só leitura e execução para todos os outros) redefinimos o umask para esse novo padrão.
As permissões completas para arquivos são 666, o que dá permissões de leitura e gravação ao proprietário, grupo e outros usuários.
As permissões completas para directórios são 777 e concedem permissões de leitura, gravação e execução ao proprietário, grupo e outros usuários. São completas porque concedem todas as permissões em grau de igualdade para todos os usuários do sistema.
O valor umask é determinado quando o valor das permissões efetivas dos novos arquivos é subtraído do valor das permissões completas do arquivo.
Normalmente, quando criamos um novo diretório ou um novo arquivo, as permissões aplicadas nos diretórios ou arquivos criados são as permissões predefinidas e costumam ser: 755 para diretórios e 644 para arquivos. Isso acontece dado a definição padrão do modo umask que neste caso é 0022.
0022+0755 = 777 e 777 representa as permissões plenas dos directórios.
0022+0644 = 666 e 666 representa as permissões plenas dos arquivos.
- 777 rwxrwxrwx para directório
- 666 rw-rw-rw- para arquivo
- 0022 + 755 = 777 777 representa as permissões plenas de directório
- 0022 + 644 = 666 666 representa as permissões plenas de arquivo
- Poprietário do directório - pode ler, editar e executar o diretório.
- Membros do Grupo do directório - podem ler e executar o diretório.
- Todos os outros usuários - podem ler e executar o diretório
- Poprietário do arquivo: - pode ler e editar o arquivo..
- Membros do Grupo do arquivo - podem ler o arquivo.
- Todos os outros usuários - podem ler o arquivo
Num directório as permissões plenas são 777 rwxrwxrwx | ||
---|---|---|
Permissões | Subtração | Valor modo de Umask |
777 | 777 - 777 | 0000 |
764 | 777 - 764 | 0013 |
755 | 777 - 755 | 0022 |
754 | 777 - 754 | 0023 |
Num ficheiro as permissões plenas são 666 rw-rw-rw- | ||
---|---|---|
Permissões | Subtração | Valor modo de Umask |
666 | 666 - 666 | 0000 |
662 | 666 - 662 | 0004 |
644 | 666 - 644 | 0022 |
600 | 666 - 600 | 0066 |
Vamos experimentar como funciona?
- Vamos saber qual o umask predefenido no nosso sistema.
- Vamos criar cinco directórios com essa predefinição do umask
- Abrimos um terminal ao qual vamos chamar terminal 1 e alteramos o modo umask, e no mesmo terminal criamos os directórios. Queremos que os novos directórios criados tenham as permissões 700. Queremos dar permissões de leitura, escrita e execução para o proprietário dos directórios, para membros do grupo dos directórios e todos os outros nenhuma permissão.
- Criar 5 novos directórios com a nova umask
- Criar 5 novos ficheiros com a nova umask
- Abrir outro terminal ao qual vamos chamar de terminal 2 e criar 5 novos directórios
1 - Saber qual o umask predefenido no nosso sistema
O comando umask tem esta forma:
umask [-p] [-S] [mode]
A opção -p printa o valor do modo atual do umask. Na imagem abaixo vemos que esse modo predefinido é 0022.
A opção -S printa o valor do umask em forma de notação simbólica
E se fizermos um teste como usuário root?
2 - Vamos criar cinco directórios com essa predefinição do umask
Primeiro nos informamos de qual umask está como predefinido e criamos 5 directórios no terminal atual que vamos chamar de terminal-1.
No meu caso vemos que os directórios foram criados com as permissões padrão do sistema 0022 e isto também poderá ser o teu, caso não tenha havido redefinição do umask padrão.
3 - Vamos alterar o modo umask no mesmo terminal no qual nos encontramos.
O argumento mode especifica o valor desejado do umask. Aqui redefinimos o modo padrão para 0077.
4 - Criar cinco novos directórios com a nova umask
Redefinimos o umask 0077 neste terminal e criamos cinco directórios.
5 - Criar cinco novos ficheiros com a nova umask
Com o mesmo umask 0077 neste terminal, criamos cinco ficheiros que terão o nome de: teste__umask-007__terminal-1__n.txt.
Abrir outro terminal e criar cinco novos directórios
Abrimos um novo terminal ao qual vamos chamar de terminal-2 e criamos cinco directórios que terão o nome de: teste__umask-007__terminal-2__n.
Podemos verificar pela imagem que os cinco directórios criados no terminal 2 têm outras permissões: 755, que dão permissões de leitura, escrita e execução para o proprietário do directório, para o grupo as permissões de leitura e execução e para todos os outros tabém leitura e execução. Isto é porque ao definirmos um novo modo umask no terminal anterior, terminal 1, o modo funciona só nesse terminal caso não editemos o ficheiro .bashrc e colocarmos ali um novo modo padrão e sendo assim os directórios criados no terminal 2 têm as permissões definidas pelo modo padrão umask 0022 que é o actual modo padrão do sistema.
Alteração permanente do umask a nível do usuário comum
A definição do umask que fizemos anteriormente só funciona na sessão do terminal no qual nos encontramos. Não tem efeito permanente porque ao fecharmos o terminal a definição do umask que tínhamos feito. desaparece
Para que tenha efeito permanente temos que adicionar essa definição do umask no ficheiro .bashrc.
Vamos iniciar este teste?
- Abrimos o ficheiro .bashrc - num editor de texto, vou usar o editor Vim
- Inserimos o mode do umask - que pretendemos passe a ser o modo padrão.
- Gravamos a alteração e saimos do editor Vim
- Para que as alterações passem a ser efetivas no mesmo terminal, fazemos o reload do ficheiro .bashrc nesse terminal source ~/.bashrc , mas se abrirmos um novo terminal e darmos o comando umask vemos a alteração efetuada.
Verificamos em primeiro lugar qual umask temos como padrão
Abrimos o ficheiro .bashrc no editor Vim
$ vim .bashrc
- Navegamos com o cursor até o final do documento usando as teclas <Shift> + g (G)
- Entramos em modo de inserção de texto: tecla i
- Na última linha inserimos a nova definição do umask padrão 0077, conferindo as permissões de leitura, escrita e execução para o proprietário do arquivo e nenhuma permissão para grupo e outros.
- Feita a alteração, voltamos ao modo normal do editor Vim premindo a tecla <Esc>
- Guardamos as alterações feitas e saimos do editor Vim: comando :wq
Chegamos ao fim de mais um post, desta vez abordando permissão padrão de ficheiros e directórios. Falamos sobre comando umask (User File Creation Mask) e a forma de mudar as definições do modo padrão usando esse comando como usuário normal no nosso sistema.
Espero que este post tenha acrescentado algo mais ao que até este momento sabias. Se já tinhas conhecimento do umask, também espero que haja algo por aqui que sirva para refrescar a memória.
Índice de conteúdo:
Sem comentários:
Enviar um comentário