A introdução ao comando Linux useradd

adicionar um usuário é um dos exercícios mais fundamentais em qualquer sistema de computador; este artigo foca em como fazê-lo em um sistema Linux.antes de começar, quero mencionar três fundamentos para ter em mente. Primeiro, como acontece com a maioria dos sistemas operacionais, os usuários Linux precisam de uma conta para ser capaz de fazer login. Este artigo abrange especificamente as contas locais, não as contas de rede, como o LDAP. Em segundo lugar, as contas têm tanto um nome (chamado de username) quanto um número (chamado de user ID). Em terceiro lugar, os usuários são tipicamente colocados em um grupo. Grupos também têm um nome e ID de grupo.

Como seria de esperar, o Linux inclui um utilitário de linha de comando para adicionar usuários; é chamado de useradd. Você também pode encontrar o comando adduser. Muitas distribuições adicionaram este link simbólico para o comando useradd como uma questão de conveniência.

$ file `which adduser`
/usr/sbin/adduser: symbolic link to useradd

Let’s take a look at useradd.

Nota: os valores por omissão descritos neste artigo reflectem os da Red Hat Enterprise Linux 8.0. Você pode encontrar diferenças sutis nestes arquivos e certos valores por omissão em outras distribuições Linux ou outros sistemas operacionais Unix como FreeBSD ou Solaris.

comportamento por omissão

a utilização básica do useradd é bastante simples: um utilizador pode ser adicionado apenas fornecendo o seu nome de utilizador.

$ sudo useradd sonny

neste exemplo, o comando useradd cria uma conta chamada sonny. Um grupo com o mesmo nome também é criado, e sonny é colocado nele para ser usado como o grupo primário. Existem outros parâmetros, tais como linguagem e shell, que são aplicados de acordo com as predefinições e valores definidos nos arquivos de configuração /etc/default/useradd e /etc/login.defs. Isto é geralmente suficiente para um único sistema pessoal ou um pequeno ambiente de negócios de um servidor.

enquanto os dois arquivos acima governam o comportamento do useradd, a informação do Usuário é armazenada em outros arquivos encontrados no diretório /etc, que eu vou se referir ao longo deste artigo.

Ficheiro Descrição Campos (negrito pelo useradd)
senha Armazena detalhes de conta de usuário nome de usuário:não utilizados:uid:gid:comentário:homedir:shell
sombra Lojas de conta de usuário detalhes de segurança nome de usuário:senha:lastchange:mínimo:máximo:avisar:inativo:expirar:não usados
grupo Armazena detalhes de grupo nome do grupo:não utilizados:gid:membros

comportamento customizável

a linha de comandos permite personalização para as vezes em que um administrador precisa de um controlo mais fino, tal como para especificar o número de identificação de um utilizador.

números de ID do utilizador e do grupo

por omissão, o useradd tenta usar o mesmo número para o ID do utilizador (UID) e o ID do grupo primário (GID), mas não existem garantias. Embora não seja necessário que o UID e o GID combinem, é mais fácil para os administradores geri-los quando o fazem.tenho apenas o cenário para explicar. Suponha que acrescente outra conta, desta vez para o Timmy. Comparando os dois usuários, sonny e timmy, mostra que ambos os usuários e seus respectivos grupos primários foram criados usando o comando getent.

$ getent passwd sonny timmy
sonny:x:1001:1002:Sonny:/home/sonny:/bin/bash
timmy:x:1002:1003::/home/timmy:/bin/bash
$ getent group sonny timmy
sonny:x:1002:
timmy:x:1003:

infelizmente, nem a UID dos utilizadores nem a combinação primária de GID. Isso ocorre porque o comportamento padrão é atribuir o UID seguinte disponível para o Usuário e, em seguida, tentar atribuir o mesmo número para o grupo primário. No entanto, se esse número já for usado, o próximo GID disponível é atribuído ao grupo. Para explicar o que aconteceu, eu hipoteto que um grupo com gid 1001 já existe e digite um comando para confirmar.

$ getent group 1001
book:x:1001:alan

O Livro de grupo com o ID 1001 fez com que os GIDs fossem desligados por um. Este é um exemplo em que um administrador de Sistema precisaria ter mais controle do processo de criação do Usuário. Para resolver este problema, eu devo primeiro determinar o próximo usuário disponível e ID do grupo que irá corresponder. Os comandos getent group e getent passwd serão úteis para determinar o próximo número disponível. Este número pode ser passado com o argumento-U.

$ sudo useradd -u 1004 bobby
$ getent passwd bobby; getent group bobby
bobby:x:1004:1004::/home/bobby:/bin/bash
bobby:x:1004:

outra boa razão para especificar o ID é para os usuários que estarão acessando arquivos em um sistema remoto usando o Network File System (NFS). NFS é mais fácil de administrar quando todos os sistemas cliente e servidor têm o mesmo ID configurado para um dado usuário. Eu cubro isto com um pouco mais de detalhe no meu artigo sobre a utilização do ‘autofs’ para montar as partilhas do NFS.

mais personalização

muito frequentemente, porém, outros parâmetros de conta precisam ser especificados para um usuário. Aqui estão alguns exemplos das personalizações mais comuns que você pode precisar usar.

Comment

the comment option is a plain-text field for providing a short description or other information using the-c argument.

$ sudo useradd -c "Bailey is cool" bailey
$ getent passwd bailey
bailey:x:1011:1011:Bailey is cool:/home/bailey:/bin/bash

grupos

a user can be assigned one primary group and multiple secondary groups. O argumento-g especifica o nome ou GID do grupo primário. Se não for especificado, o useradd cria um grupo primário com o mesmo nome do usuário (como demonstrado acima). O argumento-G (maiúsculas) é usado para passar uma lista de grupos separados por vírgulas em que o Usuário será colocado; estes são conhecidos como grupos secundários.

$ sudo useradd -G tgroup,fgroup,libvirt milly
$ id milly
uid=1012(milly) gid=1012(milly) groups=1012(milly),981(libvirt),4000(fgroup),3000(tgroup)

Home directory

o comportamento por omissão do useradd é criar a pasta pessoal do utilizador em /home. No entanto, diferentes aspectos do diretório home podem ser sobrepostos com os seguintes argumentos. O-b define outro diretório onde as casas de usuário podem ser colocadas. Por exemplo, /home2 em vez do padrão /home.

$ sudo useradd -b /home2 vicky
$ getent passwd vicky
vicky:x:1013:1013::/home2/vicky:/bin/bash

O-D permite-lhe indicar uma pasta pessoal com um nome diferente do utilizador.

$ sudo useradd -d /home/ben jerry
$ getent passwd jerry
jerry:x:1014:1014::/home/ben:/bin/bash

a pasta esqueleto

o-K instrui a nova pasta pessoal do novo utilizador a ser preenchida com quaisquer ficheiros na pasta/etc / skel. Estes são normalmente arquivos de configuração de consola, mas eles podem ser qualquer coisa que um administrador de Sistema gostaria de disponibilizar para todos os novos usuários.

Shell

o argumento-s pode ser usado para especificar a shell. O padrão é usado se nada mais for especificado. Por exemplo, no seguinte, shell bash é definido no arquivo de configuração padrão, mas Wally pediu zsh.

$ grep SHELL /etc/default/useradd
SHELL=/bin/bash
$ sudo useradd -s /usr/bin/zsh wally
$ getent passwd wally
wally:x:1004:1004::/home/wally:/usr/bin/zsh

segurança

segurança é uma parte essencial da gestão do utilizador, por isso existem várias opções disponíveis com o comando useradd. Uma conta de usuário pode ser dada uma data de validade, na forma AAAA-MM-DD, usando o argumento-E.

$ sudo useradd -e 20191231 sammy
$ sudo getent shadow sammy
sammy:!!:18171:0:99999:7::20191231:

uma conta também pode ser desactivada automaticamente se a senha expirar. O argumento-f irá definir o número de dias após a senha expirar antes da Conta ser desactivada. Zero é imediato.

$ sudo useradd -f 30 willy
$ sudo getent shadow willy
willy:!!:18171:0:99999:7:30::

a real-world example

In practice, several of these arguments may be used when creating a new user account. Por exemplo, se eu precisar criar uma conta para Perry, eu poderia usar o seguinte comando:

$ sudo useradd -u 1020 -c "Perry Example" \
-G tgroup -b /home2 \
-s /usr/bin/zsh \
-e 20201201 -f 5 perry

Consulte as seções acima para entender cada opção. Verifique os resultados com:

$ getent passwd perry; getent group perry; getent shadow perry; id perry
perry:x:1020:1020:Perry Example:/home2/perry:/usr/bin/zsh
perry:x:1020:
perry:!!:18171:0:99999:7:5:20201201:
uid=1020(perry) gid=1020(perry) groups=1020(perry),3000(tgroup)

algum conselho final

o comando useradd é um “must-know” para qualquer administrador Unix (não apenas Linux). É importante entender todas as suas opções, já que a criação do Usuário é algo que você quer acertar na primeira vez. Isto significa ter uma convenção de nomes bem pensada que inclui uma gama específica de UID / GID reservada para os seus utilizadores em toda a sua empresa, não apenas num único sistema—particularmente quando está a trabalhar numa organização em crescimento.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *