Como alterar os dados do usuário com chfn e usermod no Linux

Uma janela de terminal Linux em um laptop estilo Ubuntu.
Fatmawati Achmad Zaenuri / Shutterstock

Uma conta de usuário é mais do que um nome de usuário. Aprenda como definir e alterar todos os metadados associados a uma conta de usuário do Linux na linha de comando.

O que há em um nome?

Se você usa um computador Linux ou semelhante ao Unix, você terá uma conta de usuário. O nome dado à conta é o nome da sua conta de usuário. Este é o nome que você usa para fazer login. É também (por padrão) o nome do seu grupo de login e o nome do seu diretório pessoal. Todos eles usam o mesmo identificador.

Existe outro conjunto de informações que pode ser armazenado para cada conta de usuário. Dados do mundo real, como o nome completo da pessoa, o número do escritório e o número de telefone do trabalho, por exemplo, podem ser definidos e anexados a eles. Na verdade, fragmentos de informações completamente arbitrários podem ser marcados para contas de usuário.

Em termos práticos, isso será mais útil para administradores de sistema que cuidam de computadores que possuem muitas contas de usuário configuradas neles. Mas mesmo para o computador Linux de usuário único, é sempre interessante saber o que está acontecendo por baixo do capô.

O Campo GECOS

Houve uma época em que os pioneiros do Unix não tinham impressora própria. Eles tiveram que transferir seus trabalhos de impressão para um mainframe General Electric que estava executando o General Electric Comprehensive Operating System (GECOS). Para isso, os usuários dos sistemas Unix precisavam armazenar e usar as credenciais de uma conta no sistema GECOS.

O campo GECOS foi criado para armazenar essas credenciais. Esse mesmo requisito de nicho já passou para a história, e o campo GECOS foi reaproveitado para armazenar outros dados relacionados ao proprietário da conta do usuário. Ele pode ter um novo emprego, mas mantém o nome antigo. Ainda é chamado de campo GECOS.

O campo fica armazenado no /etc/passwdarquivo, junto com outras informações sobre a conta do usuário:

  • O nome de usuário da conta.
  • O ID do usuário.
  • O ID do grupo.
  • O caminho para o diretório inicial da conta do usuário.
  • O shell que é iniciado quando o usuário efetua login.

Este é o lugar onde o dedo de comando eo mindinho comando recuperar as informações que eles exibem.

Recomendado:  Como usar o comando pinky no Linux

O comando chfn

O chfn(alterar informações do dedo) permite definir e alterar as informações armazenadas no campo GECOS . As informações são armazenadas como uma lista separada por vírgulas dentro do campo.

O chfncomando já estava presente no Ubuntu 18.04.1 e Manjaro 18.1.0. Ele precisava ser instalado no Fedora 31. Use este comando para instalá-lo:

sudo dnf install util-linux-user

sudo dnf install util-linux-user em uma janela de terminal

Vamos ver o que fingerpodemos descobrir sobre o proprietário da conta de usuário “dave”. Para obter o máximo de informações, usaremos a opção -l(formato longo):

dedo dave -l

dedo dave -l em uma janela de terminal

Isso é o que ele poderia encontrar:

Saída de finger dave -l em uma janela de terminal

Ele recupera o nome do usuário da conta, o diretório inicial e o shell padrão. Tudo isso está relacionado à conta do usuário . Eles não se referem à pessoa real que usa essa conta. Podemos usar o  chfn comando para armazenar informações sobre a pessoa real.

chfn dave

chfn dave em uma janela de terminal

Usar chfndessa forma inicia um processo curto e interativo. Você é solicitado a digitar um valor de dados para cada informação que o campo GECOS pode conter. O valor atual para cada valor de dados é exibido entre colchetes []. Se você quiser manter os dados atuais, você pode pressionar a tecla “Enter” e o valor entre colchetes será mantido.

O processo interativo chfn em uma janela de terminal

As informações que inserimos foram:

  • Número da sala : 512
  • Telefone comercial: 555-4567
  • Telefone residencial: 555-5432

Sessão chfn concluída em uma janela de terminal

Vamos verificar se ela finger capta essas novas informações:

dedo dave -l

dedo dave -l em uma janela de terminal

Sim. Mas você deve ter notado que ele não solicitou a alteração do nome completo. Só fará isso se você usar sudo. Mas não precisamos passar por toda a chfnsessão novamente, só porque esquecemos de usar sudo. Podemos alterar qualquer um dos valores de dados individualmente.

Alteração dos valores de dados individuais

Podemos definir o nome completo do proprietário da conta do usuário usando a opção -f(nome completo), junto com sudo.

sudo chfn -f "Dave McKay" dave

sudo chfn -f "Dave McKay" dave em uma janela de terminal

E se verificarmos mais uma vez com finger:

Saída do dedo em uma janela de terminal

Podemos ver que o nome completo foi adicionado.

Existem outras opções para alterar o número do quarto, número de telefone residencial e número de telefone comercial. Para alterar o número da sala (escritório), use a opção -r(número da sala):

sudo chfn -r 633 dave

sudo chfn -r 633 dave em uma janela de terminal

Observe que em algumas distribuições, você pode usar a opção -o(número da sala do escritório) em vez da -ropção. Mais sobre isso em breve. Por enquanto, para ver as opções para sua versão do chfn, use:

man chfn

Para alterar o número de telefone do escritório, use a opção -w( telefone comercial ):

sudo chfn -w 555-1122 dave

sudo chfn -w 555-1122 dave em uma janela de terminal

E, finalmente, para alterar o número de telefone residencial, use a opção -h(número de telefone residencial):

sudo chfn -h 555-6576 dave

sudo chfn -h 555-6576 dave em uma janela de terminal

Vamos usar finger novamente para ver se todas essas alterações foram aceitas:

dedo dave -l

dedo dave -l em uma janela de terminal

Sucesso. Todos esses comandos funcionaram e os valores dos dados foram atualizados.

Recomendado:  É possível limpar o histórico no prompt de comando do Windows?

Usando chfn em outras contas de usuário

Tanto para mudar nossas próprias informações, que tal mudar as informações do GECOS para outros usuários? Isso é tão fácil. Você deve usar sudoquando fizer isso, mas essa é a única diferença. Vamos verificar quais dados estão definidos para a conta de usuário mary:

dedo maria -l

dedo mary -l em uma janela de terminal

As informações padrão usuais são definidas para esta conta de usuário. Vamos adicionar as informações:

sudo chfn mary

sudo chfn mary em uma janela de terminal

Executaremos a mesma sessão de antes, sendo solicitado um valor de dados para cada informação que pode ser armazenada. E porque usamos sudo, é solicitado o valor dos dados do nome completo.

Sessão concluída para sudo chfn mary em uma janela de terminal

Espere um momento, qual é o último item, chamado “Outro?”

não é compatível com todas as versões de chfn, e você só o verá se usar sudo, e é por isso que não o vimos antes, quando (deliberadamente) não usamos sudocom:

chfn dave

O valor de dados “Outros” pode conter qualquer coisa que você quiser. Não tem nenhum uso prescrito ou esperado.

Versões chfnque suportam o campo “Outro” também fornecem a -oopção (outro) para alterar este valor diretamente. É por causa do conflito entre -o“número do escritório” e -o“outro” que alguns sistemas usam -rpara “número da sala”.

Podemos ver os dados armazenados para a conta de usuário mary no /etc/paswdarquivo, usando less:

menos / etc / passwd

lass / etc / passwd em uma janela de terminal

Em sistemas que o suportam (verifique a manpágina para sua versão de chfn), você pode definir o campo “outro” diretamente usando a -o opção (outro):

sudo chfn -o "HTG Freelancer" dave

sudo chfn -o "HTG Freelancer" dave em uma janela de terminal

E podemos verificar os dados da conta do usuário dave usando o lesscomando:

menos / etc / passwd

menos / etc / p <span data-mce-type =[asswd em uma janela de terminal ”largura =” 646 ″ altura = ”382 ″ />

Isso levanta uma questão óbvia. Se a sua versão do chfnnão suporta o campo “Outro”, como você o altera? Podemos fazer isso com o usermodcomando.

Recomendado:  O que há de novo no Fedora 37, já disponível

O comando usermod

O usermodcomando permite que você modifique aspectos de uma conta de usuário por meio de ações como adicionar ou remover a conta de usuário de grupos e alterar seu shell padrão. Ele também pode ser usado para manipular diretamente o campo GECOS.

Vamos dar uma olhada mais de perto na linha do /etc/passwdarquivo para a conta de usuário mary. Usaremos grep para isolar essa linha para nós . Isso funcionará porque os nomes de usuário devem ser exclusivos. Só pode haver uma conta de usuário chamada mary.

grep mary / etc / passwd

grep mary / etc / passwd em uma janela de terminal

Os campos do etc/passwdarquivo são exibidos. Dois pontos “ :” são usados ​​como separador de campo. da esquerda para a direita, os campos são:

  • O nome de usuário da conta.
  • Um “x” que indica que a senha para esta conta de usuário é mantida criptografada no /etc/shadowarquivo.
  • O ID do usuário para a conta do usuário mary.
  • O ID do grupo para a conta do usuário mary.
  • O campo GECOS.
  • O caminho para o diretório inicial da conta do usuário mary.
  • O shell que é iniciado quando o proprietário da conta mary efetua login.

Uma vírgula “,” é usada como separador para os valores de dados dentro do campo GECOS. Os valores dentro do campo GECOS são, da esquerda para a direita:

  • Nome completo.
  • Número do quarto (ou escritório).
  • Número de telefone comercial.
  • Número de telefone residencial.
  • Outra informação.

Observe que o usermod comando define todo o campo GECOS com o novo valor fornecido. Se você fornecer apenas o nome completo da pessoa, a única coisa no campo GECOS será o nome completo. Isso significa que você deve fornecer todos os valores de dados existentes que deseja manter.

Aqui está um exemplo. A usuária Mary foi promovida e vai passar para o quarto andar. Ela está recebendo um novo número de escritório, um novo número de telefone do trabalho, e vamos adicionar seu nome do meio. Seu valor de campo “Outro” também vai mudar. Embora seu número de telefone residencial não vá mudar, devemos fornecê-lo na sequência de usermod.

Precisamos usar a -copção (comentário) e executar o comando com sudo.

sudo usermod -c "Mary Carol Quinn, 405,5559654,555-7704, Linux Advocate" mary

sudo usermod -c "Mary Carol Quinn, 405,5559654,555-7704, Linux Advocate" mary em uma janela de terminal

Usando greppara relatar o conteúdo do /etc/passwdarquivo para maria, mostra-nos que os novos valores foram adicionados.

grep mary / etc / passwd

grep mary / etc / passwd em uma janela de terminal

Tudo é Fluxo, Nada Permanece

Dados imprecisos são inúteis. Quando as informações sobre as pessoas mudam – mudanças de escritório, mudanças de nome, títulos de funções – você pode atualizar facilmente seus metadados para refletir a posição atual.