Diretório inicial não sendo criado

74

Estou tentando entender a administração do sistema no Ubuntu. Então, como exemplo, eu crio um usuário fictício usando

sudo useradd -d /home/linda linda

e passwd para criar a senha. Eu verifiquei que uma entrada foi feita usando cat /etc/passwd

linda:x:1004:1004::/home/linda:/bin/sh

No entanto, quando eu su - linda , obtenho

No directory, logging in with HOME=/

e, de fato, nenhum diretório inicial foi criado. O que estou perdendo?

Obrigado.

    
por tchakravarty 10.11.2013 / 11:48

10 respostas

79

man useradd states:

useradd is a low level utility for adding users. On Debian,
administrators should usually use adduser(8) instead.

Observe o low level utility

Para adicionar um usuário, use adduser . É um utilitário de mais alto nível.

Além disso, olhando para a opção -d :

   -d, --home HOME_DIR
       The new user will be created using HOME_DIR as the value for the
       user's login directory. The default is to append the LOGIN name to
       BASE_DIR and use that as the login directory name. The directory
       HOME_DIR does not have to exist but will not be created if it is
       missing.

The directory will not be created if it is missing.

Geralmente, mantenha-se longe de useradd , use adduser .

    
por gniourf_gniourf 10.11.2013 / 12:03
28

você pode corrigir isso simplesmente criando o diretório home.

mkdir /home/linda
chown linda:linda /home/linda

tente fazer login novamente e isso deve funcionar.

    
por OmPS 10.11.2013 / 12:10
13

De acordo com a opção man useradd , -d /home/linda não criará o diretório /home/linda , se isso estiver faltando. Então, você tem que criá-lo manualmente. Para fazer isso, execute os seguintes comandos no terminal:

sudo -i                            #to get root privileges
mkdir /home/linda                  #to create the directory /home/linda
cp -rT /etc/skel /home/linda         #to populate /home/linda with default files and folders
chown -R linda:linda /home/linda   #to change the owner of /home/linda to user linda

Veja também: Como tornar a pasta pessoal do usuário após a conta criação?

    
por Radu Rădeanu 10.11.2013 / 13:44
6

Veja /etc/defaults/useradd se você quiser alterar os padrões. Use:

useradd -m -d /home/joe -s /bin/bash .

    
por beanhead 10.01.2015 / 17:32
4

Você também pode modificar o /etc/pam.d/common-session para que o diretório base de um usuário seja criado no primeiro login. Adicione a seguinte linha ao arquivo.

...
session required pam_mkhomedir.so

Isto é particularmente útil se o seu sistema estiver em uma rede onde os usuários são gerenciados externamente para sua máquina, por LDAP, por exemplo.

    
por KevinC 13.11.2013 / 21:10
4

Use -m em vez de -d , então o diretório será criado para você:

sudo useradd -m linda

Além disso, se linda for um usuário normal, talvez você queira que ela use /bin/bash como padrão shell :

sudo useradd -m linda -s /bin/bash

    
por p1100i 21.12.2016 / 12:13
3

Adicione a entrada abaixo em /etc/login.defs e salve:

CREATE_HOME yes

Agora, tente criar contas de usuário. Ele irá criar o diretório inicial.

    
por kavin 08.06.2015 / 08:43
1

Use adduser .

DESCRIPTION

 adduser  and  addgroup  add users and groups to the system according to
   command    line    options    and    configuration    information    in
   /etc/adduser.conf.   They  are  friendlier  front ends to the low level
   tools like useradd, groupadd and usermod programs, by default  choosing
   Debian  policy conformant UID and GID values, creating a home directory
   with skeletal configuration, running a custom script,  and  other  fea‐
   tures.  adduser and addgroup can be run in one of five modes:

useradd você mesmo precisa adicionar todas as opções. Incluindo permissões e algumas outras coisas. adduser faz isso com base em padrões normais (e também adiciona o diretório home sozinho).

Se você precisar usar adduser, provavelmente precisará da opção -b juntamente com a opção -d!

    
por Rinzwind 10.11.2013 / 12:05
0

Se /home/linda não estiver presente antes de adicionar linda como usuário, você também precisará adicionar --create-home .

sudo useradd --create-home linda
    
por Abel Tom 17.09.2016 / 08:21
0

O motivo mais provável pelo qual você não criou o diretório pessoal é porque você não tinha o CREATE_HOME yes in /etc/login.defs .

Você pode consertar isso seguindo o que o @OmPS ou o @Radu Rădeanu sugeriram.

Mas há muitas maneiras de superar esse problema no futuro usando um dos comandos abaixo:

  • Resultado de sudo adduser linda

    Adding user 'linda'
    Adding new group 'linda' (1001) ...
    Adding new user 'linda' (1001) with group 'linda' ...
    Creating home directory '/home/linda' ...
    Copying files from '/etc/skel' ...
    ****Password confirmation****
    ****Name prompt****
    

    Os padrões para adduser são escolhidos de /etc/adduser.conf if A opção --home não está especificada. Observe que também copia o conteúdo /etc/skel .

  • Use adduser com --home

    sudo adduser --home /home/linda
    

O mesmo que a opção anterior, exceto que você pode querer isso se os usuários O diretório inicial é diferente do nome de usuário que você atribuiu.

  • Especifique o diretório base para o comando useradd :

    sudo useradd -b /home
    
  • Use login.defs: Modifique /etc/login.defs e adicione a linha abaixo antes de fazer sudo useradd :

    CREATE_HOME   yes
    

Observação: se você usa man login.defs , atualmente diz

Grande parte da funcionalidade que costumava ser fornecida pelo conjunto de senhas de sombra agora é gerenciada pelo PAM. Assim, /etc/login.defs não é mais usado por passwd (1), ou menos usado por login (1) e su (1). Por favor, consulte os arquivos de configuração do PAM correspondentes.

  • Use o módulo PAM pam_mkhomedir: da página man pam_mkhomedir , adicione a linha abaixo a /etc/pam.d/login :

    session  required  pam_mkhomedir.so skel=/etc/skel
    
por randominstanceOfLivingThing 17.12.2017 / 19:51