La directory principale non viene creata

74

Sto cercando di capire l'amministrazione del sistema su Ubuntu. Quindi, ad esempio, creo un utente fittizio usando

sudo useradd -d /home/linda linda

e passwd per creare la password. Controllo che sia stata effettuata una voce utilizzando cat /etc/passwd

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

Tuttavia, quando I su - linda , ottengo

% Bl0ck_qu0te%

e in effetti, non è stata creata alcuna home directory. Cosa mi manca?

Grazie.

    
posta tchakravarty 10.11.2013 - 11:48

10 risposte

80

man useradd afferma:

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

Nota low level utility

Per aggiungere un utente, usa invece adduser . È un'utilità di livello più alto.

Inoltre, osservando l'opzione -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.

Generalmente tieni lontano da useradd , usa adduser invece.

    
risposta data gniourf_gniourf 10.11.2013 - 12:03
29

puoi sistemarlo semplicemente creando la directory home.

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

prova ad accedere di nuovo e questo dovrebbe funzionare.

    
risposta data OmPS 10.11.2013 - 12:10
13

Secondo l'opzione man useradd , -d /home/linda non creerà la directory /home/linda , se manca. Quindi, devi crearlo manualmente. Per fare ciò, esegui i seguenti comandi nel terminale:

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

Vedi anche: Come rendere la cartella home dell'utente dopo l'account creazione?

    
risposta data Radu Rădeanu 10.11.2013 - 13:44
6

Guarda /etc/defaults/useradd se vuoi cambiare i valori di default. Usa:

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

    
risposta data beanhead 10.01.2015 - 17:32
5

Puoi anche modificare /etc/pam.d/common-session per fare in modo che la directory home di un utente venga creata al primo accesso. Aggiungi la seguente riga a quel file.

...
session required pam_mkhomedir.so

Questo è particolarmente utile se il tuo sistema si trova su una rete in cui gli utenti sono gestiti esternamente al tuo computer, ad esempio da LDAP.

    
risposta data KevinC 13.11.2013 - 21:10
4

Utilizza -m anziché -d , quindi la directory verrà creata per te:

sudo useradd -m linda

Inoltre, se linda è un utente normale, potresti voler utilizzare /bin/bash come predefinito shell :

sudo useradd -m linda -s /bin/bash

    
risposta data p1100i 21.12.2016 - 12:13
3

Aggiungi la voce in basso in /etc/login.defs e salva:

CREATE_HOME yes

Ora prova a creare account utente. Creerà la directory home.

    
risposta data kavin 08.06.2015 - 08:43
1

Utilizza 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 devi aggiungere tu stesso tutte le opzioni. Includendo i permessi e alcune altre cose.% Co_de% fa questo basato su sane default (e aggiunge anche home dir da solo).

Se hai bisogno di usare adduser probabilmente hai bisogno dell'opzione -b insieme con l'opzione -d!

    
risposta data Rinzwind 10.11.2013 - 12:05
0

Se /home/linda non è presente prima di aggiungere linda come utente, dovresti aggiungere anche --create-home .

sudo useradd --create-home linda
    
risposta data Abel Tom 17.09.2016 - 08:21
0

Il motivo più probabile per cui non hai creato la home directory è perché non avevi il CREATE_HOME yes in /etc/login.defs .

Puoi sistemare ciò seguendo quanto suggerito da @OmPS o @Radu Rădeanu.

Ma ci sono molti modi per superare questo problema in futuro usando uno dei seguenti comandi:

  • Risultato di 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****
    

    I valori predefiniti per adduser sono scelti tra /etc/adduser.conf if L'opzione --home non è specificata. Tieni presente che copia anche i contenuti di /etc/skel .

  • Usa adduser con --home

    sudo adduser --home /home/linda
    

Come per l'opzione precedente, tranne per il fatto che potresti volere questo se gli utenti la home directory è diversa dal nome utente che hai assegnato.

  • Specifica la directory di base sul comando useradd :

    sudo useradd -b /home
    
  • Usa login.defs: modifica /etc/login.defs e aggiungi la riga sotto prima di fare sudo useradd :

    CREATE_HOME   yes
    

Nota: se fai man login.defs , al momento dice

Gran parte della funzionalità che una volta era fornita dalla suite di password shadow ora è gestita da PAM. Quindi, /etc/login.defs non è più usato da passwd (1), o meno usato da login (1), e su (1). Si prega di fare riferimento ai file di configurazione PAM corrispondenti invece.

  • Utilizza il modulo PAM di pam_mkhomedir: dalla pagina man pam_mkhomedir , aggiungi la riga in basso a /etc/pam.d/login :

    session  required  pam_mkhomedir.so skel=/etc/skel
    
risposta data randominstanceOfLivingThing 17.12.2017 - 19:51

Leggi altre domande sui tag