Se você já usa Linux há algum tempo (e até mesmo OS X), provavelmente se deparou com um erro de “permissões”. Mas o que são exatamente e por que são necessários ou úteis? Vamos dar uma olhada por dentro.
Índice
Permissões do usuário
Antigamente, os computadores eram máquinas enormes que eram incrivelmente caras. Para tirar o máximo proveito deles, vários terminais de computador foram conectados, o que permitiu que muitos usuários realizassem seus negócios simultaneamente. O processamento e o armazenamento de dados eram feitos na máquina, enquanto os próprios terminais eram pouco mais do que um meio de visualizar e inserir dados. Se você pensar bem, é basicamente como acessamos os dados na “nuvem”; olhe para o sistema de MP3 em nuvem da Amazon, Gmail e Dropbox e você perceberá que, embora as alterações possam ser feitas localmente, tudo é armazenado remotamente.
(Imagem: Terminal “burro” Zenith Z-19; crédito: ajmexico )
Para que isso funcione, os usuários individuais precisam ter contas. Eles precisam ter uma seção da área de armazenamento atribuída a eles e precisam ter permissão para executar comandos e programas. Todos recebem “permissões de usuário” específicas, que ditam o que eles podem e não podem fazer, onde no sistema eles têm e não têm acesso e cujos arquivos eles podem ou não modificar. Cada usuário também é colocado em vários grupos, que concedem ou restringem acesso posterior.
Acesso ao arquivo
Neste mundo multiusuário maluco, já definimos limites quanto ao que os usuários podem fazer. Mas e o que eles acessam? Bem, cada arquivo tem um conjunto de permissões e um proprietário. A designação do proprietário, normalmente associada quando o arquivo é criado, declara a qual usuário ele pertence e somente esse usuário pode alterar suas permissões de acesso.
No mundo do Linux, as permissões são divididas em três categorias: ler, escrever e executar. O acesso de “leitura” permite ver o conteúdo de um arquivo, o acesso de “gravação” permite modificar o conteúdo de um arquivo e “executar” permite executar um conjunto de instruções, como um script ou programa. Cada uma dessas categorias é aplicada a diferentes classes: usuário, grupo e mundo. “Usuário” significa o proprietário, “grupo” significa qualquer usuário que está no mesmo grupo que o proprietário e “mundo” significa qualquer pessoa e todos.
As pastas também podem ser restritas com essas permissões. Você pode, por exemplo, permitir que outras pessoas em seu grupo visualizem diretórios e arquivos em sua pasta pessoal, mas não qualquer pessoa fora de seu grupo. Provavelmente, você desejará limitar o acesso de “gravação” apenas a você, a menos que esteja trabalhando em um projeto compartilhado de algum tipo. Você também pode criar um diretório compartilhado que permite que qualquer pessoa visualize e modifique os arquivos dessa pasta.
Alteração de permissões no Ubuntu
GUI
Para alterar as permissões de um arquivo que você possui no Ubuntu, apenas clique com o botão direito no arquivo e vá em “Propriedades”.
Você pode alterar se o Proprietário, Grupo ou Outros podem ler e escrever, somente leitura ou não fazer nada. Você também pode marcar uma caixa para permitir a execução do arquivo, e isso irá habilitá-lo para o Proprietário, Grupo e Outros simultaneamente.
Linha de comando
Você também pode fazer isso por meio da linha de comando. Vá para um diretório que contenha arquivos e digite o seguinte comando para visualizar todos os arquivos em uma lista:
ls -al
Ao lado de cada arquivo e diretório, você verá uma seção especial que descreve as permissões que possui. Se parece com isso:
-rwxrw-r–
A r significa “ler”, a w significa “escrita”, ea x significa “executar.” Os diretórios começarão com um “d” em vez de um “-“. Você também notará que existem 10 espaços que contêm valor. Você pode ignorar o primeiro e, em seguida, existem 3 conjuntos de 3. O primeiro conjunto é para o proprietário, o segundo conjunto é para o grupo e o último conjunto é para o mundo.
Para alterar as permissões de um arquivo ou diretório, vamos examinar a forma básica do comando chmod.
arquivo chmod [classe] [operador] [permissão]
arquivo chmod [ugoa] [+ ou -] [rwx]
Isso pode parecer complicado no início, mas acredite em mim, é muito fácil. Primeiro, vamos dar uma olhada nas classes:
- u: Isso é para o proprietário.
- g: Isso é para o grupo.
- o: Isso é para todos os outros.
- a: Isso mudará as permissões para todos os itens acima.
Em seguida, os operadores:
- +: O sinal de mais adicionará as permissões que se seguem.
- -: O sinal de menos removerá as permissões que se seguem.
Ainda comigo? E a última seção é a mesma de quando verificamos as permissões de um arquivo:
- r: Permite acesso de leitura.
- w: Permite acesso de gravação.
- x: Permite a execução.
Agora, vamos colocá-lo juntos. Digamos que temos um arquivo chamado “todo.txt” que tem as seguintes permissões:
-rw-rw-r–
Ou seja, o proprietário e o grupo podem ler e escrever, e o mundo apenas ler. Queremos alterar as permissões para:
-rwxr—–
Ou seja, o proprietário tem permissões totais e o grupo pode ler. Podemos fazer isso em 3 etapas. Primeiro, adicionaremos a permissão de execução para o usuário.
chmod u + x todo.txt
Em seguida, removeremos a permissão de gravação para o grupo.
chmod gw todo.txt
Por último, removeremos as permissões de leitura de todos os outros usuários.
chmod ou todo.txt
Também podemos combiná-los em um comando, como:
chmod u + x, gw ou todo.txt
Você pode ver que cada seção é separada por vírgulas e não há espaços.
Aqui estão algumas permissões úteis:
- -rwxr-xr-x: O proprietário tem permissões totais, o grupo e outros usuários podem ler o conteúdo do arquivo e executar.
- -rwxr – r–: O proprietário tem permissões totais, o grupo e outros usuários podem apenas ler o arquivo (útil se você não se importa que outros vejam seus arquivos.
- -rwx——: O proprietário tem permissões totais, todos os outros não têm nenhuma (útil para scripts pessoais).
- -rw-rw—-: O proprietário e o grupo podem ler e escrever (útil para colaboração com membros do grupo).
- -rw-r – r–: O proprietário pode ler e escrever, o grupo e outros usuários podem apenas ler o arquivo (útil para armazenar arquivos pessoais em uma rede compartilhada).
- -rw ——-: O proprietário pode ler e escrever, todos os outros não têm nenhum (útil para armazenar arquivos pessoais).
Existem algumas outras coisas que você pode fazer com chmod – como setuid e setgid – mas elas são um pouco profundas e a maioria dos usuários realmente não vai precisar usá-las.
A raiz ou superusuário e arquivos de sistema
Hoje em dia, nem sempre rodamos sistemas com vários usuários. Por que ainda devemos nos preocupar com as permissões?
Bem, o Unix e seus derivados – Linux, OS X, entre outros – também distinguem entre coisas executadas pelo usuário, coisas executadas por um administrador ou com privilégios de administrador, e coisas executadas pelo próprio sistema. Como tal, coisas que são essenciais para o sistema precisam de privilégios de administrador para serem alteradas ou acessadas. Dessa forma, você não bagunça nada acidentalmente.
No Ubuntu, para fazer alterações nos arquivos do sistema, você usa “sudo” ou “gksudo” para obter o equivalente aos privilégios de administrador. Em outras distros, você muda para “root” ou “superusuário”, que efetivamente faz a mesma coisa até que você saia.
Esteja ciente de que em ambas as circunstâncias, alterar as permissões de arquivo pode fazer com que os programas não funcionem, alterando acidentalmente a propriedade do arquivo para o usuário root (em vez do proprietário) e tornando o sistema menos seguro (concedendo mais permissões). Como tal, é recomendado que você não altere as permissões para arquivos – especialmente arquivos de sistema – a menos que seja necessário ou você saiba o que está fazendo.
As permissões de arquivo existem para fornecer um sistema básico de segurança entre os usuários. Aprender como eles funcionam pode ajudá-lo a configurar o compartilhamento básico em um ambiente multiusuário, proteger arquivos “públicos” e dar a você uma pista sobre quando algo está errado com a propriedade de arquivos do sistema.
Acha que pode explicar as coisas mais facilmente? Tem uma correção? Quer relembrar os velhos tempos? Faça uma pausa e escreva os seus pensamentos nos comentários.