Users and groups (Português)

Usuários e grupos são usados no GNU/Linux para controle de acesso — isto é, para controlar o acesso aos arquivos, diretórios e periféricos do sistema. O Linux oferece mecanismos de controle de acesso relativamente simples/grosseiros por padrão. Para opções mais avançadas, veja ACL, Capacidades e PAM#Configuration How-Tos.

Status de tradução: Esse artigo é uma tradução de Users and groups. Data da última tradução: 2020-04-14. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Visão geral

Um usuário é qualquer pessoa que use um computador. Nesse caso, estamos descrevendo os nomes que representam esses usuários. Pode ser Maria ou Guilherme, e eles podem usar os nomes SraDragao ou Pirata no lugar de seu nome real. Tudo o que importa é que o computador possui um nome para cada conta que ele cria, e é esse o nome pelo qual uma pessoa ganha acesso para usar o computador. Alguns serviços do sistema também são executados usando contas de usuários restritas ou privilegiadas.

O gerenciamento de usuários é feito com a finalidade de segurança, limitando o acesso de determinadas formas específicas. O superusuário (root) possui acesso completo ao sistema operacional e sua configuração; destina-se apenas a uso administrativo. Usuários não privilegiados podem usar os programas su e sudo para a escalação de privilégios controlados.

Qualquer indivíduo pode ter mais de uma conta, desde que eles usem um nome diferente para cada conta que eles criem. Além disso, existem alguns nomes reservados que não podem ser usados como "root".

Os usuários podem ser agrupados em um "grupo", e os usuários podem ser adicionados a um grupo existente para utilizar o acesso privilegiado que ele concede.

Nota: Iniciante deve usar essas ferramentas com cuidado e deve ficar longe de ter qualquer coisa a ver com qualquer outra conta de usuário "existente", diferente da sua.

Permissões e propriedade

De In UNIX Everything is a File:

O sistema operacional UNIX cristaliza um par de ideias e conceitos unificadores que moldaram seu design, interface do usuário, cultura e evolução. Um dos mais importantes é provavelmente o mantra: "tudo é um arquivo", amplamente considerado como um dos pontos de definição do UNIX.
Este princípio chave de design consiste em fornecer um paradigma unificado para acessar uma ampla gama de recursos de entrada/saída: documentos, diretórios, discos rígidos, CD-ROM, modems, teclados, impressoras, monitores, terminais e até mesmo interprocessos e redes comunicações. O truque é fornecer uma abstração comum para todos esses recursos, cada um dos quais os pais do UNIX chamaram de "arquivo". Como cada "arquivo" é exposto através da mesma API, você pode usar o mesmo conjunto de comandos básicos para ler/escrever em um disco, teclado, documento ou dispositivo de rede.

De Extending UNIX File Abstraction for General-Purpose Networking:

Uma abstração fundamental e muito poderosa e consistente fornecida no UNIX e sistemas operacionais compatíveis é a abstração do arquivo. Muitos serviços de sistema operacional e interfaces de dispositivos são implementados para fornecer uma metáfora de arquivo ou sistema de arquivos para aplicativos. Isso permite novos usos para, e aumenta consideravelmente o poder de, aplicações existentes — ferramentas simples projetadas com usos específicos em mente podem, com abstrações de arquivos do UNIX, serem usadas de maneiras inovadoras. Uma ferramenta simples, como o cat, projetada para ler um ou mais arquivos e produzir os conteúdos para a saída padrão, pode ser usada para ler a partir de dispositivos de E/S através de arquivos de dispositivos especiais, tipicamente encontrados no diretório /dev. Em muitos sistemas, a gravação e reprodução de áudio podem ser feitas simplesmente com os comandos "cat /dev/audio > meu_arquivo" e "", respectivamente.

Todo arquivo em um sistema GNU/Linux pertence a um usuário e a um grupo. Além disso, existem três tipos de permissões de acesso: ler, escrever e executar. Permissões de acesso diferentes podem ser aplicadas ao usuário dono de um arquivo, grupo dono e outros (aqueles que não são usuários nem do grupo dono). Pode-se determinar os donos e permissões de um arquivo ao visualizar o formato de listagem longa do comando ls:

A primeira coluna exibe as permissões do arquivo (por exemplo, o arquivo possui permissões ). As terceira e quarta colunas exibem o usuário e o grupo que possuem o arquivo, respectivamente. Neste exemplo, todos os arquivos pertencem ao usuário root e do grupo root.

$ ls -l /media/
total 16
drwxrwx--- 1 root vboxsf 16384 Jan 29 11:02 sf_Shared

Neste exemplo, o diretório sf_Shared pertence ao usuário root e do grupo vboxsf. Também é possível determinar os donos e as permissões do arquivo usando o comando stat:

Usuário dono:

Grupo dono:

Direitos de acesso:

As permissões de acesso são exibidas em três grupos de caracteres, representando as permissões do usuário dono, grupo dono e outros, respectivamente. Por exemplo, os caracteres indicam que o dono do arquivo tem permissão de leitura e gravação, mas não de execução (), enquanto os usuários pertencem ao grupo dono e outros usuários só têm permissão de leitura ( e ). Enquanto isso, os caracteres indicam que o dono do arquivo e os usuários pertencentes ao grupo dono possuem permissões de leitura, gravação e execução ( e ), enquanto outros usuários têm acesso negado (). O primeiro caractere representa o tipo do arquivo.

Liste arquivos que pertencem a um usuário ou grupo com o utilitário find:

# find / -group grupo
# find / -group númerogrupo
# find / -user usuário

O usuário e o grupo donos de um arquivo podem ser alterados com o comando chown (change owner ou mudar o dono). As permissões de acesso a um arquivo podem ser alteradas com o comando chmod (change mode ou mudar o modo).

Veja chown(1), e Permissões de acesso a arquivos e diretórios para detalhes adicionais.

Shadow

As ferramentas de gerenciamento de usuários, grupos e senhas no Arch Linux vem com o pacote shadow, que é uma dependência do metapacote .

Lista de arquivos

ArquivoPropósito
Informações da conta do usuário seguras
Informações da conta do usuário
Contém a "sombra" da informação para contas de grupo
Define os grupos para aos quais os usuários pertencem

Gerenciamento de usuário

Para listar os usuários conectados no sistema, o comando who pode ser usado. Para listar todas as contas de usuários existentes, incluindo suas propriedades armazenadas na base de dados de usuário, execute como root. Veja passwd(1) para a descrição do formato de saída.

Para adicionar um novo usuário, use o comando useradd:

# useradd -m -G grupos_adicionais -s shell_de_login nome_de_usuário
/--create-home
cria o diretório pessoal do usuário como . Dentro de seu diretório pessoal, um usuário que não seja root pode escrever arquivos, exclui-los, instalar programas e por aí vai.
/
introduz uma lista de grupos suplementares dos quais o usuários também é membro. Cada grupo é separado do próximo por uma vírgula, com nenhum espaço no meio. O padrão é para o usuário pertencer a apenas o grupo inicial.
/
define o caminho e o nome do arquivo do shell de login padrão do usuário. Após o processo de inicialização ter concluído, o shell de login padrão é o especificado aqui. Assegure-se de que o pacote do shell escolhido está instalado se escolher algo diferente do Bash.

Se um grupo inicial do usuário for especificado por nome e número, deve se referir a um grupo já existente. Se não especificado, o comportamento de useradd vai depender da variável USERGROUPS_ENAB contida em . O comportamento padrão (USERGROUPS_ENAB yes) é criar um grupo com o nome igual ao nome de usuário.

Quando o shell de login destina-se a ser não funcional, por exemplo quando a conta de usuário é criada para um serviço específico, pode ser especificado no lugar de uma shell comum para educadamente recusar um login (veja ).

Veja para outras opções suportadas.

Exemplo de adicionar um usuário

Para adicionar um novo usuário chamado , crar seu diretório pessoal e, do contrário, usando todos os padrões nos termos de grupos, nomes de pastas, shell usado e vários outros parâmetros:

# useradd -m archie

Apesar de ser obrigatório proteger o recém criado usuário com uma senha, é altamente recomendado fazê-lo:

# passwd archie

O comando useradd acima pode também criar automaticamente um grupo chamado e torna este o grupo padrão para o usuário . Fazer com que cada usuário tenha seu próprio grupo (com o nome do grupo igual ao nome do usuário) é a maneira preferida de adicionar usuários.

Você poderia fazer o grupo padrão alguma outra coisa usando a opção , mas note que, em sistemas multiusuários, o uso de um único grupo padrão (por exemplo, ) para cada usuário não é recomendado. A razão é que, tipicamente, o método para facilitar o acesso de gravação compartilhada para grupos específicos de usuários é definir o valor umask do usuário para 002, o que significa que o grupo padrão sempre terá, por padrão, acesso de gravação a qualquer arquivo que você crie. Veja também User Private Groups. Se um usuário deve ser um membro de um grupo específico, especifique aquele grupo como um grupo suplementar ao criar o usuário.

No cenário recomendado, onde o grupo padrão tem o mesmo nome que o nome do usuário, todos os arquivos são somente graváveis para o usuário que os criou. Para permitir o acesso de gravação a um grupo específico, os arquivos/pastas compartilhados podem ser gravados por padrão para todos neste grupo e o grupo dono pode ser fixado automaticamente no grupo que possui o diretório pai configurando o bit setgid neste diretório:

# chmod g+s nosso_diretório_compartilhado

Caso contrário, o grupo padrão do criador do arquivo (geralmente o mesmo que o nome do usuário) é usado.

Se uma mudança de GID for necessária temporariamente, você também pode usar o comando newgrp para alterar o GID padrão do usuário para outro GID em tempo de execução. Por exemplo, depois de executar , os arquivos criados pelo usuário serão associados ao GID , sem requerer um novo login. Para voltar ao GID padrão, execute newgrp sem um nome de grupo.

Exemplo de adicionar um usuário do sistema

Os usuários do sistema podem ser usados para executar processos/daemons em um usuário diferente, protegendo (por exemplo, com chown) arquivos e/ou diretórios e mais exemplos de hardening do computador.

Com o seguinte comando, um usuário do sistema sem acesso ao shell e sem um diretório é criado (opcionalmente, anexe o parâmetro para criar um grupo com o mesmo nome que o usuário e adicione o usuário para este grupo):

# useradd -r -s /usr/bin/nologin nome_de_usuário

Se o usuário do sistema exige um ID de usuário e grupo específico, especifique-os com as opções -u/ e / ao criar o usuário:

# useradd -r -u 850 -g 850 -s /usr/bin/nologin nome_de_usuário

Alterar um nome de login ou diretório home do usuário

Para alterar o diretório home do usuário:

# usermod -d /meu/novo/home -m nome_de_usuário

A opção também cria automaticamente o novo diretório e move o conteúdo para lá.

Para alterar o nome de login de um usuário:

# usermod -l novo_nome antigo_nome
Atenção: Certifique-se de que você não está autenticado como o usuário cujo nome você está prestes a mudar. Abra um novo tty (por exemplo, Ctrl+Alt+F6) e se autentique como root ou como outro usuário e eleve para root. O usermod deve evitar que você faça isso por engano.

Alterar um nome de usuário é seguro e fácil quando feito corretamente, basta usar o comando usermod. Se o usuário estiver associado a um grupo com o mesmo nome, você pode renomear isso com o comando groupmod.

Alternativamente, o arquivo pode ser editado diretamente, veja #Base de dados de usuários para uma introdução ao seu formato.

Também tenha em mente as notas a seguir:

  • Se você estiver usando sudo, certifique-se de atualizar o para refletir o(s) novo(s) usuário(s) (via o comando visudo como root).
  • Os crontabs pessoais precisam ser ajustados renomeando o arquivo do usuário em do nome antigo para o novo, e depois abrindo com para alterar os caminhos relevantes e fazê-lo ajustar as permissões do arquivo.
  • O conteúdo das pastas e dos arquivos pessoais do wine em , e possivelmente mais, precisam ser renomeados/editados manualmente.
  • Certos complementos do Thunderbird, como o Enigmail, podem precisar ser reinstalados.
  • Qualquer coisa no seu sistema (atalhos da área de trabalho, scripts de shell, etc.) que usa um caminho absoluto para seu diretório home (ou seja, ) precisará ser alterado para refletir seu novo nome. Para evitar esses problemas em scripts de shell, use as variáveis ou para diretórios home.
  • Além disso, não se esqueça de editar adequadamente os arquivos de configuração em /etc que dependem de seu caminho absoluto (p.ex., Samba, CUPS, etc.). Uma boa maneira de aprender quais arquivos você precisa atualizar envolve o uso do comando grep desta maneira:

Outros exemplos de gerenciamento de usuário

Para adicionar um usuário a outros grupos, use (grupos_adicionais é uma lista separada por vírgula):

# usermod -aG grupos_adicionais nome_de_usuário

Para inserir informações do usuário para o comentário GECOS (ex. o nome completo do usuário), digite:

# chfn nome_de_usuário

(dessa forma, chfn é executado em modo interativo).

Alternativamente, o comentário GECOS pode ser definido mais livremente com:

# usermod -c "Comentário" nome_de_usuário

Para marcar a senha de um usuário como expirada, exigindo que ele crie uma nova senha na primeira vez que fizerem login, digite:

# chage -d 0 nome_de_usuário

Contas de usuário podem ser excluídas com o comando userdel:

# userdel -r nome_de_usuário

A opção especifica que o diretório home do usuário e o spool de correios também devem ser excluídos.

Para alterar o shell de login do usuário:

# usermod -s /bin/bash nome_de_usuário

Base de dados de usuários

As informações do usuário local são armazenadas no arquivo de texto simples : cada uma das suas linhas representa uma conta de usuário e tem sete campos delimitados por caracteres de dois pontos.

conta:senha:UID:GID:GECOS:diretório:shell

Sendo que:

  • é o nome de usuário. Esse campo não pode estar vazio. Padrão regras de nomeação *NIX aplicam-se.
  • é a senha do usuário.
  • é a identificação numérica de usuário. No Arch, o nome do primeiro login (após o root) para o chamado usuário normal, em oposição a serviços, tem UID 1000, por padrão; entradas subsequentes de UID para usuários devem ser maiores que 1000.
  • GID é a identificação numérica de grupo primário para o usuário. Valores numéricos para GIDs são listados em /etc/group.
  • é um campo opcional com propósitos informacionais; geralmente, ele contém o nome completo do usuário, mas também pode ser usado por serviços, como o finger, e gerenciado com o comando chfn. Esse campo é opcional e pode ser deixado em branco.
  • é usado pelo comando de login para definir a variável de ambiente . Vários serviços com seus próprios usuários usam /, mas os usuários normais costumam definir uma pasta em .
  • é o caminho para o shell de comandos padrão do usuário. Esse campo é opcional e tem como padrão .

Exemplo:

joao:x:1001:1003:João da Silva,algum comentário aqui,,:/home/joao:/bin/bash

Expandindo, isso significa: usuário , cuja senha está em , cujo UID é 1001 e cujo grupo primário é 1003. João da Silva é o nome completo dele e existe um comentário associado a sua conta; Seu diretório inicial é e ele está usando Bash.

O comando pwck pode ser usado para verificar a integridade da base de dados de usuário. Ele pode ordenar a lista de usuários por GID ao mesmo tempo, o que pode ser útil para comparação:

# pwck -s

Gerenciamento de grupo

é o arquivo que define os grupos no sistema (veja  para detalhes). Há também seu companheiro gshadow que raramente é usado. Seus detalhes estão em .

Mostre associação a grupos com o comando :

$ groups usuário

Se for omitido, os nomes de grupos do usuário atual são exibidos.

O comando id fornece detalhes adicionais, tal como o UID do usuário e GIDs associados:

$ id usuário

Para listar todos os grupos no sistema:

$ cat /etc/group

Crie novos grupos com o comando :

# groupadd grupo

Adicione usuários a um grupo com o comando (veja a cerca de erros; alternativamente, o comando pode ser usado):

# gpasswd -a usuário grupo

Modifique um grupo existente com ; por exemplo, para renomear o grupo antigo_grupo para enquanto preserva o gid (todos os arquivos previamente pertencentes ao antigo_grupo serão do ):

# groupmod -n novo_grupo antigo_grupo

Para excluir grupos existentes:

# groupdel grupo

Para remover usuários de um grupo antigo:

# gpasswd -d usuário grupo

O comando grpck pode ser usado para verificar a integridade dos arquivos de grupo do sistema.

Atualizações ao pacote filesystem criam arquivos .pacnew. Ao contrário dos arquivos .pacnew para o #Gerenciamento de usuário, essas alterações podem ser ignoradas/removidas, porque o script de instalação adiciona quaisquer novos grupos exigidos.

Lista de grupos

Essa seção explica o propósito dos grupos essenciais do pacote core/filesystem. Há muitos outros grupos, que serão criados com o GID correto quando o pacote relevante for instalado. Veja a página principal do software para detalhe.

Grupos de usuário

Usuários não root de estação de trabalho ou desktop frequentemente precisam ser adicionados a alguns dos grupos a seguir para permitir acesso a periféricos de hardware e facilitar administração de sistema:

GrupoArquivos afetadosPropósito
admGrupo administrativo, geralmente usado para fornecer acesso de leitura a logs protegidos. Tem acesso total de leitura aos arquivos de journal.
ftpAcesso a arquivos servidos por servidores FTP.
gamesAcesso a alguns softwares de jogos.
httpAcesso a arquivos servidos por servidores HTTP.
logAcesso a arquivos de registros de log em /var/log/ criados pelo syslog-ng.
rfkillDireito para controlar estado de energia de dispositivos sem fio (usado pelo rfkill).
sysDireito para administrar impressoras no CUPS.
systemd-journalPode ser usado para fornecer acesso somente leitura aos logs do systemd, como uma alternativa ao e ao . Do contrário, apenas mensagens geradas pelo usuário são exibidas.
uucp, , , /dev/ttyACM[0-9]+, Portas seriais RS-232 e dispositivos conectados a elas.
wheelGrupo administrativo, comumente usado a dar privilégios para realizar ações administrativas. Também tem acesso total de leitura aos arquivos de journal. Pode também ser usado para dar acesso aos utilitários sudo e su (nenhum deles usa-o por padrão, sendo configurável em e /etc/pam.d/su-l).

Grupos de sistema

Os seguintes grupos são usados para propósitos de sistema, uma atriubuição para usuários é necessária apenas para propósitos dedicados:

GrupoArquivos afetadosPropósito
dbusUsado internamente pelo
kmem, ,
locate, , /var/lib/mlocate, Veja Locate.
lp, /dev/parport[0-9]*Acesso a dispositivos de porta paralela (impressoras e outros).
mail
nobodyGrupo sem privilégios.
procUm grupo autorizado a aprender informação de processo que, do contrário, seria proibido pela opção de montagem do sistema de arquivos proc. O grupo deve ser definido explicitamente com a opção de montagem .
rootAdministração e controle total do sistema (root, admin).
smmspGrupo do sendmail.
tty, , /dev/vc,
utmp, ,

Grupos pré-systemd

Antes do Arch migrar para o systemd, os usuários tinham que ser adicionados manualmente a esses grupos para poder acessar os dispositivos correspondentes. Essa forma se tornou obsoleta em favor do udev marcar os dispositivos com uma etiqueta[link inativo 2022-09-23 ] e logind atribuindo as permissões aos usuários de forma dinâmica via ACLs de acordo com qual sessão está atualmente ativa. Observe que a sessão não deve ser quebrada para que isso funcione (consulte Solução de problemas gerais#Permissões de sessão).

Existem algumas exceções notáveis que exigem a adição de um usuário a alguns desses grupos: por exemplo, se você quiser permitir que os usuários acessem o dispositivo mesmo quando não estiverem logados. No entanto, observe que adicionar usuários aos grupos pode até fazer alguma funcionalidade quebrar (por exemplo, o grupo irá quebrar a troca rápida de usuários e permite que os aplicativos bloqueiem o mixer de software).

GrupoArquivos afetadosPropósito
audio, , Acesso direto ao hardware de som, para todas as sessões. Ainda é necessário fazer ALSA (Português) e OSS funcionar nas sessões remotas, veja ALSA#User privileges. Também é usado no JACK para fornecer aos usuários permissões de processamento em tempo real.
diskAcesso para bloquear dispositivos não afetados por outros grupos, como optical, e .
floppyAcesso a unidades de disquete.
input, Acesso a dispositivos de entrada. Introduzido no systemd 215 .
kvmAceso a máquinas virtuais usando KVM.
optical/dev/sr[0-9], Acesso a dispositivos óticos, como unidades de CD e DVD.
scannerAcesso a hardware de scanner.
storage, /dev/nst[0-9]*[lma]*Usado para ganhar acesso a unidades removíveis, como as unidades de HD externo USB, pendrives, MP3 players; permite ao usuário montar dispositivos de armazenamento. Agora, apenas para acesso direto às fitas, se nenhuma regra personalizada do udev estiver envolvida.
video, Acesso a dispositivos de captura de vídeo, aceleração hardware 2D/3D, framebuffer (X pode ser usado sem pertencer a este grupo).

Grupos sem uso

Os seguintes grupos estão atualmente sem uso para qualquer propósito:

GrupoArquivos afetadosPropósito
binnenhumHistórico
daemon
lockUsado para acesso a arquivo de trava. Necessário para, por exemplo, .
mem
networkSem uso por padrão. Pode ser usado, por exemplo, para conceder acesso ao NetworkManager (veja NetworkManager (Português)#Configurar as permissões de PolicyKit).
power
uuidd
usersO grupo primário para usuários quando os grupos privados de usuários não são usados (geralmente não recomendado), por exemplo, ao criar usuários com em ou a opção /--no-user-group de useradd.

Outras ferramentas relacionadas para esses banco de dados

pode ser usado para ler um registro em particular.
% getent group tty

Conforme avisado em #Base de dados de usuários, o uso de utilitários específicos, como e , é uma maneira melhor de alterar os bancos de dados. Mesmo assim, há momentos em que editá-los diretamente é cuidada. Para aqueles momentos, , são fornecidos. É altamente recomendável usar esses editores sob medida usando um editor de texto geral, pois eles bloqueiam os bancos de dados em relação à edição simultânea. Eles também ajudam a evitar entradas inválidas e/ou erros de sintaxe. Observe que o Arch Linux prefere o uso de ferramentas específicas, como chage, para modificar o banco de dados shadow usando vipw -s e do . Veja também .

gollark: It's basically that, yes.
gollark: Not that you would want to write that unpredicatedly.
gollark: You can write a rule `+[a, (b+c)]` but not `_[a, 0]` to `_[a]` for arbitrary `_`, basically.
gollark: It isn't... able to be generic over heads of expressions, roughly.
gollark: If I have expression rewrite rules which can go both ways, it would take arbitrarily large amounts of time to do anything.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.