Capítulo 12 - Comandos para manipulação de contas
Comandos usados para manipulação de conta de usuários e grupos em sistemas GNU/Linux
. Adicionar usuários ao sistema, adicionar grupos, incluir usuários existente em novos grupos, etc.
O arquivo /etc/passwd
é formado por linhas onde cada linha é um usuário, como falei acima, então vamos aprender a montar cada linha desta. Vou pegar um exemplo para vocês:
cat /etc/passwd | grep aluno
que retorna:
aluno:x:1000:100:Aluno do Curso:/home/aluno:/bin/bash
Vamos dividir esta linha em campos, onde cada um é separado por “:” (dois pontos). Observe:
Nota: O /etc/shadow
é um arquivo que contém a senha do usuário criptografada, se alguém tiver posse dela, esta pessoa pode muito bem comparar as senhas com uma lista de palavras e pode descobrir as senhas dos usuários. Felizmente este arquivo está muito bem protegido pelo sistema :) Só o root pode vê-lo e editá-lo!
Assim é possível adicionar um usuário. Para removê-lo você pode apagar a linha referente a ele no /etc/passwd,
/etc/shadow,
seu grupo em /etc/group e seus arquivos.
Como transformar um usuário normal em root?
O root possui o UID e o GID igual à 0 (zero) e um usuário comum não. Se nós forçamos a mudança do UID e GID de um usuário para 0, ele ficaria como se fosse o root! Por exemplo, a linha do usuário “aluno” em /etc/passwd
:
aluno:x:1000:100:Aluno do Curso:/home/aluno:/bin/bash
Para mudar para o UID e GID do root:
aluno:x:0:0:Aluno do Curso:/home/aluno:/bin/bash
^ ^
Pronto, o usuário aluno vai ser também o administrador do sistema.
Outro arquivo relacionado com os usuários no Linux é o /etc/group
. Ele contém as definições de cada grupo, como por exemplo: seus nomes, GIDs e usuários adicionais que pertencem à ele. Adicionando uma linha neste arquivo estará criando um novo grupo. Vamos criar aqui um novo grupo no /etc/group
:
metal:x:666:aluno,fulano,fulano2
Adicionando esta linha acima no arquivo /etc/group
criará um novo grupo: com o nome metal, o GID 666 e como usuários adicionais pertencentes à ele: aluno, fulano e fulano2.
Adiciona um usuário ou grupo no sistema. Por padrão, quando um novo usuário é adicionado, é criado um grupo com o mesmo nome do usuário. Opcionalmente o adduser
também pode ser usado para adicionar um usuário a um grupo. Será criado um diretório home com o nome do usuário (a não ser que o novo usuário criado seja um usuário do sistema) e este receberá uma identificação. A identificação do usuário (UID) escolhida será a primeira disponível no sistema especificada de acordo com a faixa de UIDS de usuários permitidas no arquivo de configuração /etc/passwd
. Este é o arquivo que contém os padrões para a criação de novos usuários no sistema.
adduser [opções] [usuário/grupo]
Onde:
usuário/grupo
Nome do novo usuário que será adicionado ao sistema.
opções
--disabled-password
Não executa o programa passwd
para escolher a senha e somente permite o uso da conta após o usuário escolher uma senha.
--force-badname
Desativa a checagem de senhas ruins durante a adição do novo usuário. Por padrão o adduser
checa se a senha pode ser facilmente adivinhada.
--group
Cria um novo grupo ao invés de um novo usuário. A criação de grupos também pode ser feita pelo comando addgroup
.
--ingroup [nome]
Quando adicionar um novo usuário no sistema, coloca o usuário no grupo [nome] ao invés de criar um novo grupo.
--uid [num]
Cria um novo usuário com a identificação [num] ao invés de procurar o próximo UID disponível.
--gid [num]
Faz com que o usuário seja parte do grupo [gid] ao invés de pertencer a um novo grupo que será criado com seu nome. Isto é útil caso deseje permitir que grupos de usuários possam ter acesso a arquivos comuns.
Caso estiver criando um novo grupo com adduser
, a identificação do novo grupo será [num].
--home [dir]
Usa o diretório [dir] para a criação do diretório home do usuário ao invés de usar o especificado no arquivo de configuração /etc/adduser.conf
.
--quiet
Não mostra mensagens durante a operação.
--system
Cria um usuário de sistema ao invés de um usuário normal.
--shell
Determina o shell do usuário, o padão é /bin/bash. Ex: /dev/null
Os dados do usuário são colocados no arquivo /etc/passwd
após sua criação e os dados do grupo são colocados no arquivo /etc/group
.
OBSERVAÇÃO: Caso esteja usando senhas ocultas (shadow passwords), as senhas dos usuários serão colocadas no arquivo /etc/shadow
e as senhas dos grupos no arquivo /etc/gshadow
. Isto aumenta mais a segurança do sistema porque somente o usuário root pode ter acesso a estes arquivos, ao contrário do arquivo /etc/passwd
que possui os dados de usuários e devem ser lidos por todos.
OBSERVAÇÃO: O programa useradd
combina as funções do adduser
e passwd
para garantir que a conta seja criada com as restrições apropriadas. O único inconveniente é que o useradd
quebra o Debian Policy e precisa de todos todos os parâmetros para a criação correta da conta (como o diretório home, senha criptografada, e UID numérico). Seu uso é indicado em shell scripts que cuidam automaticamente da tarefa de adicionar usuários ao sistema.
Adiciona um novo grupo de usuários ao sistema. As opções usadas são as mesmas do adduser.
addgroup [usuário/grupo] [opções]
Muda a senha do usuário ou grupo. Um usuário somente pode alterar a senha de sua conta, mas o superusuário (root) pode alterar a senha de qualquer conta de usuário, inclusive a data de validade da conta, etc. Os donos de grupos também podem alterar a senha do grupo com este comando.
Os dados da conta do usuário como nome, endereço, telefone, também podem ser alterados com este comando.
passwd [usuário/grupo] [opções]
Onde:
usuário
Nome do usuário/grupo que terá sua senha alterada.
opções
-g (NÃO CONFERE!!)
Se especificada, a senha do grupo será alterada. Somente o root ou o administrador do grupo pode alterar sua senha. A opção -r pode ser usada com esta para remover a senha do grupo. A opção -R pode ser usada para restringir o acesso do grupo para outros usuários.
-x [dias]
Especifica o número máximo de dias que a senha poderá ser usada. Após terminar o prazo, a senha deverá ser modificada.
-i [dias]
Desativa a conta caso o usuário não tenha alterado sua senha após o tempo especificado por -x.
-n [dias]
Especifica o número mínimo de dias para a senha ser alterada. O usuário não poderá mudar sua senha até que [dias] sejam atingidos desde a última alteração de senha.
-w [num]
Número de dias antecedentes que o usuário receberá o alerta para mudar sua senha. O alerta ocorre [num] dias antes do limite da opção -x, avisando ao usuários quantos dias restam para a troca de sua senha.
-l [nome]
Bloqueia a conta do usuário [nome]. Deve ser usada pelo root. O bloqueio da conta é feito acrescentando um caracter a senha para que não confira com a senha original.
-u [nome]
Desbloqueia a conta de um usuário bloqueada com a opção -l.
-S [nome]
Mostra o status da conta do usuário [nome]. A primeira parte é o nome do usuário seguido de L(conta bloqueada), NP(sem senha), ou P (com senha), a terceira parte é a data da última modificação da senha, a quarta parte é a período mínimo, máximo, alerta e o período de inatividade para a senha.
Procure sempre combinar letras maiúsculas, minúsculas, e números ao escolher suas senhas. Não é recomendado escolher palavras normais como sua senha pois podem ser vulneráveis a ataques de dicionários cracker. Outra recomendação é utilizar senhas ocultas em seu sistema (shadow password).
Você deve ser o dono da conta para poder modificar a senhas. O usuário root pode modificar/apagar a senha de qualquer usuário.
Altera temporariamente a identificação de grupo do usuário. Para retornar a identificação anterior, digite exit e tecle Enter. Para executar um comando com outra identificação de grupo de usuário, use o comando sg.
newgrp - [grupo]
Onde:
-
Se usado, inicia um novo ambiente após o uso do comando newgrp
(semelhante a um novo login no sistema), caso contrário, o ambiente atual do usuário é mantido.
grupo
Nome do grupo ou número do grupo que será incluído.
Quando este comando é usado, é pedida a senha do grupo que deseja acessar. Caso a senha do grupo esteja incorreta ou não exista senha definida, a execução do comando é negada. A listagem dos grupos que pertence atualmente pode ser feita usando o comando id.
Administrar o arquivo /etc/group (e o arquivo /etc/gshadow, caso compilado com SHADOWGRP). Todos os grupos podem ter administradores, membros e uma senha.
gpasswd [opções] [usuário] [grupo]
Onde:
-a
Adiciona usuários ao grupo.
-A
Define usuários administradores para o grupo (cuidado: substitui os atuais).
-M
Define usuários membros do grupo (cuidado: substitui os atuais).
-d
Remove o usuáro do grupo.
-R
Desabilita o acesso ao grupo através do comando newgrp (entretanto os membros ainda serão capazes de mudar para ele).
-r
Remove a senha de um grupo.
Quando não há senhas definidas para um grupo, somente os membros do grupo podem usar o comando newgrp para adicionar novos usuários ao grupo.
Apaga um usuário do sistema. Quando é usado, este comando apaga todos os dados da conta especificado dos arquivos de contas do sistema.
userdel [-r] [usuário]
Onde:
-r
Apaga também o diretório HOME do usuário.
OBS: Note que uma conta de usuário não poderá ser removida caso ele estiver no sistema, pois os programas podem precisar ter acesso aos dados dele (como UID, GID) no /etc/passwd
.
Apaga um grupo do sistema. Quando é usado, este comando apaga todos os dados do grupo especificado dos arquivos de contas do sistema.
groupdel [grupo]
Tenha certeza que não existem arquivos/diretórios criados com o grupo apagado através do comando find
.
Mostra o último login dos usuários cadastrados no sistema. É mostrado o nome usado no login, o terminal onde ocorreu a conexão e a hora da última conexão. Estes dados são obtidos através da pesquisa e formatação do arquivo /var/log/lastlog
. Caso o usuário não tenha feito login, é mostrada a mensagem ** Never logged in **
lastlog [opções]
Onde:
opções
-t [dias]
Mostra somente os usuários que se conectaram ao sistema nos últimos [dias].
-u [nome]
Mostra somente detalhes sobre o usuário [nome].
Mostra uma listagem de entrada e saída de usuários no sistema. São mostrados os seguintes campos na listagem:
A listagem é mostrada em ordem inversa, ou seja, da data mais atual para a mais antiga. A listagem feita pelo last
é obtida de /var/log/wtmp
.
last [opções]
Onde:
opções
-n [num]
Mostra [num] linhas. Caso não seja usada, todas as linhas são mostradas.
-R
Não mostra o campo HostName.
-a
Mostra o hostname na última coluna. Será muito útil se combinada com a opção -d.
-d
Usa o DNS para resolver o IP de sistemas remotos para nomes DNS.
-x
Mostra as entradas de desligamento do sistema e alterações do nível de execução do sistema.
O comando last
pode ser seguido de um argumento que será pesquisado como uma expressão regular durante a listagem.
O comando last
usa o arquivo /var/log/wtmp
para gerar sua listagem, mas alguns sistemas podem não possuir este arquivo. O arquivo /var/log/wtmp
somente é usado caso existir. Você pode cria-lo com o comando "echo -n >/var/log/wtmp" ou touch /var/log/wtmp.
Executa um comando com outra identificação de grupo. A identificação do grupo de usuário é modificada somente durante a execução do comando. Para alterar a identificação de grupo durante sua seção shell, use o comando newgrp.
sg [-] [grupo] [comando]
Onde:
-
Se usado, inicia um novo ambiente durante o uso do comando (semelhante a um novo login e execução do comando), caso contrário, o ambiente atual do usuário é mantido.
grupo
Nome do grupo que o comando será executado.
comando
Comando que será executado. O comando será executado pelo bash.
Quando este comando é usado, é pedida a senha do grupo que deseja acessar. Caso a senha do grupo esteja incorreta ou não exista senha definida, a execução do comando é negada.
Para adicionar um usuário em um novo grupo e assim permitir que ele acesse os arquivos/diretórios que pertencem àquele grupo, você deve estar como root e editar o arquivo /etc/group
com o comando vigr
. Este arquivo possui o seguinte formato:
NomedoGrupo:senha:GID:usuários
Onde:
NomedoGrupo
É o nome daquele grupo de usuários.
senha
Senha para ter acesso ao grupo. Caso esteja utilizando senhas ocultas para grupos, as senhas estarão em /etc/gshadow
.
GID
Identificação numérica do grupo de usuário.
usuarios
Lista de usuários que também fazem parte daquele grupo. Caso exista mais de um nome de usuário, eles devem estar separados por vírgula.
Deste modo para acrescentar o usuário "joao" ao grupo audio para ter acesso aos dispositivos de som do Linux, acrescente o nome no final da linha: "audio:x:100:joao". Pronto, basta digitar logout e entrar novamente com seu nome e senha, você estará fazendo parte do grupo audio (confira digitando groups ou id).
Outros nomes de usuários podem ser acrescentados ao grupo audio bastando separar os nomes com vírgula. Você também pode usar o comando adduser
da seguinte forma para adicionar automaticamente um usuário a um grupo:
adduser joao audio
Isto adicionaria o usuário "joao" ao grupo audio da mesma forma que fazendo-se a edição manualmente.
Altera os dados usados pelo comando finger.
chfn [usuário] [opções]
Onde:
usuário
Nome do usuário.
opções
-f [nome]
Muda o nome completo do usuário.
-r [nome]
Muda o número da sala do usuário.
-w [tel]
Muda o telefone de trabalho do usuário.
-h [tel]
Muda o telefone residencial do usuário.
-o [outros]
Muda outros dados do usuário.
Caso o nome que acompanha as opções (como o nome completo) contenha espaços, use "" para identifica-lo.
Exemplo: chfn -f "Nome do Usuário root" root
Mostra a identificação atual do usuário, grupo primário e outros grupos que pertence.
id [opções] [usuário]
Onde:
usuário
É o usuário que desejamos ver a identificação, grupos primários e complementares.
opções
-g, --group
Mostra somente a identificação do grupo primário.
-G, --groups
Mostra a identificação de outros grupos que pertence.
-n, --name
Mostra o nome do usuário e grupo ao invés da identificação numérica.
-u, --user
Mostra somente a identificação do usuário (user ID).
-r, --real
Mostra a identificação real de usuário e grupo, ao invés da efetiva. Esta opção deve ser usada junto com uma das opções: -u, -g, ou -G.
Caso não sejam especificadas opções, id
mostrará todos os dados do usuário.
Mostra seu login (username).
logname
Mostra os nomes de usuários usando atualmente o sistema. Os nomes de usuários são mostrados através de espaços sem detalhes adicionais, para ver maiores detalhes sobre os usuários, veja os comandos id e who.
users
Os nomes de usuários atualmente conectados ao sistema são obtidos do arquivo /var/log/wtmp
.
Mostra os grupos que o usuário pertence.
groups [usuário]
Exemplo: groups, groups root