Às vezes temos alguma situação onde por algum motivo não conseguimos alterar um arquivo em nossa máquina, seja um arquivo de texto ou um código de um projeto que é preciso dar manutenção. Uma das causas mais comuns para esse problema é a permissão de arquivos e diretórios.
Todo arquivo e diretório em nosso computador tem um usuário que é dono dele. Você pode ler mais sobre permissionamento de arquivos em sistemas Unix aqui. Consideremos a situação em que estou tendo problemas para conseguir editar o arquivo script.rb
, e meu usuário na máquina é allan
.
Para vermos as propriedades dos arquivos usaremos comandos no terminal, o comando que estamos utilizando aqui é o ls
(que lista os arquivos e diretórios da pasta atual) com o parâmetro -l
(que imprime os resultados desse comando em uma lista):
$ ls -l
total 4
-rw-rw-r-- 1 allan allan 0 Apr 19 14:12 arquivo.txt
drwxrwxr-x 2 allan allan 4096 Apr 19 14:12 diretorio
-rw-rw-r-- 1 root root 0 Apr 19 14:12 script.rb
Deste retorno, focaremos nos seguintes dados:
allan allan arquivo.txt
allan allan diretorio
root root script.rb
As duas primeiras informações são respectivamente o usuário e o grupo que é dono do arquivo listado. O que podemos ver deste retorno é que nosso usuário (allan
) não é dono do nosso arquivo script.rb
.
Para conseguirmos editar livremente este arquivo, precisamos transferir a sua propriedade para nosso usuário allan
. Podemos fazer isso através do comando chown
Dica: Para ajudar a memorizá-lo, podemos pensar nesse comando em duas partes:
- ch => change => alterar;
- own => ownership => propriedade;
- O comando altera a propriedade de um arquivo ou diretório.
Atenção: Para alterar a propriedade dos arquivos normalmente precisamos de acesso ao superusuário de nosso computador, e os próximos comandos vão ser rodados com auxílio do comando sudo
.
Para transferirmos a propriedade deste arquivo, vamos rodar o seguinte comando:
$ sudo chown allan script.rb
Onde os argumentos do comando chown
são respectivamente: [novo dono do arquivo] [nome do arquivo]
.
Assim, quando rodamos novamente o comando ls -l
podemos observar que a propriedade do arquivo mudou para o usuário allan
:
$ ls -l
-rw-rw-r-- 1 allan allan 0 Apr 19 14:12 arquivo.txt
drwxrwxr-x 2 allan allan 4096 Apr 19 14:12 diretorio
-rw-rw-r-- 1 allan root 0 Apr 19 14:12 script.rb
Com isso a mensagem de erro não deve aparecer mais e já podemos manipular este arquivo sem ter problemas. :)