À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. :)