lucianodacunha.net

domingo, 1 de janeiro de 2012

Gerenciamento de contas e permissões no GNU/Linux

Considerações iniciais


Nesse texto irei apresentar alguns comandos para manipulação de contas e gerenciamento de usuários no GNU/Linux. Apesar de breve, nas próximas linhas iremos abordar comandos para a adição de usuários, alteração de privilégios e entre outras coisas, explicar de forma genérica como funciona o sistema de acesso a arquivos e diretórios no 'tux'. Todo esse post foi originado a partir de minhas notas de aula (Desenvolvimento de SW Livre - Profs. Hélio/Eugeni) e por isso em alguns trechos não me atenho a explicar todas as sintaxes ou parâmetros utilizados, mas além dos possíveis erros estou a disposição para discutir sobre eventuais dúvidas.

Começando...


Como um sistema multiusuário que é, o Linux necessita de mecanismo de gerenciamento de contas eficiente e prático. Para tanto, dispõe de recursos que apesar de simples, demonstram-se plenamente eficazes nas tarefas de manutenção de usuários do sistema.

A seguir, um rápido overview sobre os principais tópicos de manipulação de contas e gerenciamento de permissões de um ambiente Linux.

Os comandos ls e cd


Antes de tudo é interessante dizer que os passos seguintes serão realizados utilizando frequentemente comandos como o ...
  • ls, listador de arquivos e diretórios;e
  • cd, permite mudar de diretório.
Suas sintaxes básicas são listadas a seguir:
$ ls [opções] [caminho/arquivo] ...
$ cd [diretório]

Donos, grupos e outros usuários


No Linux, o acesso aos arquivos e diretórios são orientados por donos, grupos e outros. Assim é possível definir quem será o proprietário do arquivo (dono), quem poderá compartilhar o arquivo com o dono (grupo), e quem eventualmente poderá ser adicionado a esse compartilhamento (outros usuários).

Tipos de permissões de acesso


Seguindo o pensamento, KEEP IT SIMPLE, o Linux trabalha com três tipos de permissões:
  • r (Read): Leitura de arquivos, listagem de diretórios;
  • w (Write): Gravação em arquivos, gravação em diretórios;
  • x (Execute): Execução de arquivos, acesso a diretórios;
Para ver as permissões disponíveis no diretório /var/log/ execute o comando seguir...
$ ls -lh /var/log
total 7,2M
-rw-r--r-- 1 root root 8,5K 2010-03-08 20:06 auth.log
-rw-r--r-- 1 root root 3,8K 2010-03-07 12:38 auth.log.1.gz
-rw-r--r-- 1 root root   86 2010-03-08 18:59 boot.log
-rw-r--r-- 1 root root  262 2010-03-07 12:38 boot.log.1.gz
A lista acima foi abreviada para poupar espaço, mas mesmo com algumas linhas é possível perceber as permissões disponíveis nesse diretório. Cada linha representa um arquivo ou diretório existente dentro do diretório /var/log, e na sequência serão apresentadas as características referente ao arquivo auth.log:
  • -:Se for arquivo exibe '-', se diretório, 'd';
  • rw-: Permissões definidas para o dono do arquivo(read e write);
  • r--: Permissões definidas para o grupo do dono do arquivo (somente read);
  • r--: Permissões definidas para os outros usuários (somente read);
  • 1: Exibe a quantidade de subdiretórios no caso de um, se arquivo será sempre 1;
  • root root: Dono do arquivo (root) e grupo (root);
  • 8,5K: Tamanho do arquivo, o parâmetro -h exibe formato de tamanho mais legível;
  • 2010-03-08 20:06: Data de criação/alteração do arquivo;
  • auth.log: Nome do arquivo.

A conta root


A conta root é a conta de superusuário do sistema. Com ela é possível efetuar qualquer tipo de alteração no sistema em uso. Por isso, é altamente recomendado sua utilização breve e com muita cautela. Em alguns casos, será a única maneira de instalar e atualizar seu sistema. Mas logo que terminada a tarefa, retorne ao usuário normal com o comando 'logout'.Para utilizar esta conta, execute o comando:
$ su -
Password:
# _
Note que após logar com o root, o simbolo exibido no seu bash ($) é alterado (#), indicando que vc está utilizando o superusuário.

Comandos para manipulação de contas


Em ambiente compartilhados por diversos usuários, é fundamental a criação de um login para cada utilizador. Assim é possível definir direitos e restrições para cada um de modo independente. A seguir alguns comandos de manipulação de contas:

adduser


Caso precise adicionar um novo usuário ao sistema, o comando 'adduser' será o responsável por te ajudar nessa tarefa:
$ adduser visitante
-bash: adduser: command not found
$ _
Note que este é um caso daqueles em que vc terá que obrigatoriamente utilizar a conta root do sistema. Na maioria dos casos, somente ela poderá realizar tarefas como estas de manipulação de contas e gerenciamento de usuários.
$ su -
Senha: (nada será exibido enquanto digita a senha)
# _
Agora é só utilizar seus privilégios para gerenciar usuários do sistema.
# adduser visitante

passwd


Essa é a sintaxe mais simples de utilização do 'adduser', assim, seu novo usuário ainda não possui uma senha, o que o impede de utilizar o sistema. Para definir uma senha para ele execute:
#passwd visitante
Changing password for user visitante.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated sucessfully.
Pronto. Usuário apto para utilizar o sistema. Agora basta logar com ele, o que pode ser feito após o boot ou com o comando ...
$su - visitante.

groupadd


O recurso dos 'grupos' no Linux é muito útil para entre outras coisas compartilhar arquivos e diretórios entre usuários do sistema. Usuários que pertencem ao mesmo grupo, poderão compartilhar algumas definições de permissão.

Imaginemos um diretório que deve ser compartilhado por diversos usuários de uma sistema, de modo que estes possam ler, escrever e alterar o conteúdo deste diretório.

Se listarmos o diretório /home, perceberemos que os diretórios pessoais não dispõem desta característica. Veja!
# ls -lh /home/
total 24K
drwx------  2 root  root        16K 2010-02-28 09:39 lost+found/
drwx------ 48 luciano luciano    4,0K 2010-03-08 23:04 luciano/
drwx------  2 visitante visitante  4,0K 2009-11-02 07:49 visitante/
Assim, criamos um novo diretório:
# mkdir compartilhamento/
# ls -lh
drwxr-x---  2 root  root        4,0K 2010-02-28 20:20 compartilhamento/
Nesse momento somente quem pertence ao grupo 'root' pode manipular o novo diretório.

Para compartilhar esse diretório entre os usuários 'luciano' e 'visitante', crie um novo grupo e adicione os dois usuários, em seguida altere o grupo do diretório.
Por fim, mude as permissões do grupo criado. Segue...

Adicione um novo grupo...
# groupadd usuarios
O comando acima adiciona ao sistema um novo grupo chamdo 'usuarios'.

chgrp


Altere o grupo do diretório...
# chgrp -R usuarios compartilhamento/
#ls -lh
drwxr-x---  2 root  usuarios        4,0K 2010-02-28 20:20 compartilhamento/
O comand acima altera o grupo do diretório 'compartilhamento/' para o grupo chamado 'usuarios'. A utilização do parâmetro '-R' faz com que recursivamente seus subdiretórios recebam as mesmas características.

usermod


Adicione os usuário do compartilhamento ao grupo desejado...
# usermod -G usuarios luciano
# usermod -G usuarios visitante
Em seguida, mude de usuário para verificar o acesso ao diretório 'compartilhamento/' permitido:
#logout
$ su - visitante
$ cd /home/compartilhamento/
Perceba que a partir de agora o usuário 'visitante' terá acesso ao diretório '/home/compartilhamento/'

chmod


O acesso a arquivos e diretórios pode também ser configurando utilizando o comando chmod. Este comando altera o modo de acesso a arquivos e diretórios para (U)suario ou Donos, (G)rupos e (O)utros. Assim, após listar um diretório...
$ls -lh /home/compartilhamento/
-rw-rw---- 1 luciano luciano 17K 2010-03-17 20:06 arquivo1
-rw-rw---- 1 luciano luciano 17K 2010-03-17 20:06 arquivo2
-rw-rw---- 1 luciano luciano 17K 2010-03-17 20:06 arquivo3
Verificamos que existem três arquivos que foram criados pelo usuário 'luciano', sendo assim seu grupo padrão será 'luciano'. Desta forma, somente o criador e usuários pertencentes a seu grupo poderão ler e alterar qualquer um deste arquivos. Veja que a última tríade de especificações de permissão está vazia, sendo representada por apenas hífens (---).

Note que se tentarmos ler o arquivo...
$ su - visitante
Senha:
$ tail arquivo1
tail: não foi possível abrir o 'arquivo1' para leitura: Permissão negada
$ _
Apesar do usuário 'visitante' ter acesso ao diretório, estes arquivo são restritos somente às regras citadas acima. Assim, um recurso que pode ser utilizado nesse caso seria adicioná-lo ao grupo de 'luciano', ou alterar as definições de permissão do arquivo. Como já testamos a primeira opção, vamos realizar desta vez a segunda opção.

Utilizando o 'chmod' para isso...
$ chmod o+rw arquivo1
O comando acima, adiciona ao arquivo 'arquivo1' permissões de leitura e escrita para todos os usuários considerados como '(O)utros', ou seja, aqueles usuários que não são Donos do arquivo e aqueles usuários que não estão no grupo do Dono. Nesse caso, o usuário 'visitante' era considerado como 'Outro'.

A opção utilizada, 'o+rw', significa adicionar permissão de leitura (Read) e escrita (Write) ao arquivo 'arquivo1' para os (O)utros.

Agora o usuario 'visitante' poderá ler, bem como escrever no arquivo 'arquivo1'.
$su - visitante
Senha:
$ tail arquivo1
Hooray everybody...
$ logout
É claro que vc só poderá alterar essas propriedades em diretórios e arquivos se for o Dono ou o usuário root!

Existem ainda outras variações a serem utilizadas com o 'chmod'. Da mesma forma forma que alteramos as permissões para os (O)utros, poderíamos ter alterado para o grupo...
$ chmod g+rw arquivo1
...e para o próprio Dono, (U)suario.
$ chmod u-rw arquivo1
E da mesma forma que adicionamos permissões, podemos retirá-las:
$ chmod o-rw arquivo1
O comando acima subtrai a permissão de escrita e leitura dos (O)utros.

chown


E para terminar (por hoje!), vejamos o comando chown. Este comando tem a função de alterar o Dono e Grupo de um arquivo ou diretório. Assim, além do 'chgrp' vc pode usar também o 'chown' para alterar o grupo de um arquivo ou diretório. Vejamos sua sintaxe...

Lembra-se do diretório '/home/compartilhamento/' ? Após criado, os usuários 'luciano' e 'visitante' poderiam acessá-lo e executar algumas operações, porém quando o usuário 'luciano' criou alguns arquivos dentro dele, o usuário 'visitante' não poderia acessá-los pois não fazia parte do grupo 'luciano'. Altere o grupo de todos os arquivos deste diretório para 'usuarios' de forma que ambos possam manipulá-los, pois ambos pertencem ao grupo 'usuarios'!
# cd /home/compartilhamento
# chown -c -R luciano:usuarios *
trocado dono de 'arquivo1' para luciano:usuarios
trocado dono de 'arquivo2' para luciano:usuarios
trocado dono de 'arquivo3' para luciano:usuarios
Com este comando todos os arquivos (*) serão alterados no diretório '/home/compartilhamento' para o Dono 'luciano' e Grupo 'usuarios'. Além dos arquivos do diretório corrente, seus subdiretórios também serão afetados (-R). Tudo isso pode ser checado com as mensagens exibidas (-c) após a execução do comando.

Agora o usuário 'visitante' pode manipular todos os arquivos existentes dentro do diretório /home/compartilhamento.

...finalizando.


Foram apresentados aqui alguns comandos para manipulação de usuários e gerenciamento de contas do sistema. Tudo foi muito breve por se tratar de um texto originado a partir de minhas notas de aula, onde resolvi incrementá-lo com algumas observações pessoais (e uma ajudinha do "Foca")

É importante destacar que todos os comandos utilizados possuem parâmetros opcionais bem mais avançados que os apresentados aqui/hoje e todas as suas formas de utilização podem ser consultadas através de seus arquivos de ajuda, geralmente utilizando o parâmetro '--help' ou consultando o seu respectivo 'man'.

Além disso, para não me estender muito decidi reservar um próximo post para tratar de outros comandos relacionados ao tema em questão.

É isso, até a próxima!

0 Comentários:

Postar um comentário

Assinar Postar comentários [Atom]



<$I18N$LinksToThisPost>:

Criar um link

<< Página inicial