Directory home non creata


80

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

sudo useradd -d /home/linda linda

e passwdper creare la password. Controllo che sia stata effettuata una registrazione utilizzandocat /etc/passwd

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

Tuttavia, quando su - lindacapisco

No directory, logging in with HOME=/

e infatti, nessuna home directory è stata creata. Cosa mi sto perdendo?

Grazie.

Risposte:


87

man useradd stati:

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

Notare la low level utility

Per aggiungere un utente, utilizzare adduserinvece. È un'utilità di più alto livello.


Inoltre, guardando l' -dopzione:

   -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 tenere lontano da useradd, utilizzare adduserinvece.


2
A difesa dell'OP, quando ho letto "Su Debian", ho pensato che significasse per Debian piuttosto che per le distribuzioni di Ubuntu. Sono consapevole che Ubuntu è basato su Debian ma ho pensato che si stesse facendo una distinzione.
Keith Bennett,

1
Ho usato adduserma ancora la home directory creata contiene solo un file examples.desktope nient'altro. Come posso ottenere Ubuntu per creare le cartelle predefinite Desktop, Download e così via? (Ho effettuato l'accesso tramite ssh)
mcExchange

Ciao, scusa risposta tardiva e solo indovinare, ma penso che quelle cartelle vengano create automaticamente al primo accesso alla GUI. Pensavo solo che la gente potesse ancora atterrare qui;)
derHugo

addusernon creerà la directory neanche se qualcuno ha modificato CREATE_HOME in /etc/login.defs in "no". Puoi ignorarlo con la -mbandiera.
Noumenon,

31

puoi risolvere questo problema semplicemente creando la home directory.

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

prova ad accedere di nuovo e questo dovrebbe funzionare.


13

Secondo l' opzione man useradd, l' -d /home/lindaopzione non creerà la directory /home/linda, se manca. Quindi, devi crearlo manualmente. Per fare ciò, eseguire 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 la creazione dell'account?


7

Guarda /etc/defaults/useraddse vuoi cambiare le impostazioni predefinite. Uso:

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


"Secondo man useradd, l'opzione -d / home / linda non creerà la directory / home / linda" quindi no, questa non è una soluzione.
astrojuanlu,

Secondo la pagina man useradd, ecco a cosa serve la bandiera -m: -m, --create-home Create the user's home directory if it does not exist. The files and directories contained in the skeleton directory (which can be defined with the -k option) will be copied to the home directory. useradd will create the home directory unless CREATE_HOME in /etc/login.defs is set to no.@astrojuanlu
Myles

5

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

...
session required pam_mkhomedir.so

Ciò è particolarmente utile se il sistema si trova su una rete in cui gli utenti sono gestiti esternamente alla macchina, ad esempio da LDAP.


5

Usa -minvece di -d, quindi la directory verrà creata per te:

sudo useradd -m linda

Inoltre, se lindaè un utente normale, potresti volerlo usare /bin/bashcome predefinito shell:

sudo useradd -m linda -s /bin/bash


3

Aggiungi la voce in basso /etc/login.defse salva:

CREATE_HOME yes

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


Ha funzionato per me. Avevo bisogno di uno script di base che aggiungesse / gestisse da remoto gli utenti su diverse versioni di Linux. Dopo questa modifica il mio codice produce gli stessi risultati su tutti i server. Grazie.
sdkks,

1

Usa 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:

useradddevi aggiungere tutte le opzioni tu stesso. Comprese le autorizzazioni e alcune altre cose. adduserfa questo sulla base di impostazioni predefinite sane (e aggiunge anche home dir da solo).

Se devi usare adduser probabilmente avrai bisogno dell'opzione -b insieme all'opzione -d!


1

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

sudo useradd --create-home linda

1

Il motivo più probabile per cui non è stata creata la home directory è perché non si dispone di CREATE_HOME yesin /etc/login.defs.

È possibile risolvere questo problema seguendo quanto suggerito da @OmPS o @Radu Rădeanu.

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

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

    Le impostazioni predefinite per adduser sono scelte /etc/adduser.confse l' --homeopzione non è specificata. Si noti che copia anche il /etc/skelcontenuto.

  • Usa adduser con --home

    sudo adduser --home /home/linda

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

  • Specifica la directory di base da useraddcomandare:

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

    CREATE_HOME   yes

Nota: se lo fai man login.defs, attualmente dice

Gran parte delle funzionalità che erano fornite dalla suite di password shadow sono ora gestite da PAM. Pertanto, /etc/login.defs non è più utilizzato da passwd (1) o meno utilizzato da login (1) e su (1). Consultare invece i file di configurazione PAM corrispondenti.

  • Utilizza il modulo PAM pam_mkhomedir: dalla man pam_mkhomedirpagina, aggiungi la riga seguente a /etc/pam.d/login:

    session  required  pam_mkhomedir.so skel=/etc/skel
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.