Crea la directory home predefinita per l'utente esistente nel terminale

116

Come faccio a fare questo? Ho creato un utente senza una directory home e ora voglio crearne uno. Non solo una cartella chiamata new_user, voglio la directory home predefinita con tutte le sue cartelle e file nascosti, ecc.

    
posta Jo Rijo 22.08.2013 - 20:54
fonte

5 risposte

175

Usa il seguente (come root, o con sudo se non root):

mkhomedir_helper username

Perché funzioni, la cartella /home/username non deve esistere.

Per le cartelle relative a X (desktop, download, ecc.), è necessario accedere in un ambiente grafico; verranno generati automaticamente al primo accesso.

    
risposta data kavadias 05.11.2014 - 20:48
fonte
31

Le sottodirectory (Documenti, Download, ecc.) vengono create automaticamente quando l'utente accede per la prima volta tramite GNOME, a condizione che la directory home venga creata con le autorizzazioni corrette. Ecco una dimostrazione:

alaa@aa-lu:~$ sudo useradd testinguser
alaa@aa-lu:~$ sudo passwd testinguser
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
alaa@aa-lu:~$ sudo ls -l /home
total 20
drwxr-xr-x 55 alaa alaa  4096 Aug 22 22:00 alaa
drwx------  2 root root 16384 Jun  5 09:46 lost+found
alaa@aa-lu:~$ sudo mkdir /home/testinguser
alaa@aa-lu:~$ sudo chown testinguser:testinguser /home/testinguser
alaa@aa-lu:~$ ls -l /home
total 24
drwxr-xr-x 55 alaa        alaa         4096 Aug 22 22:00 alaa
drwx------  2 root        root        16384 Jun  5 09:46 lost+found
drwxr-xr-x  2 testinguser testinguser  4096 Aug 23 10:03 testinguser
alaa@aa-lu:~$ ls -l /home/testinguser/
total 0
alaa@aa-lu:~$

È possibile verificare che la directory home dell'utente sia impostata correttamente controllando la voce in /etc/passwd . Per impostazione predefinita, dovresti vedere la home directory impostata su /home/testinguser :

alaa@aa-lu:~$ grep testinguser /etc/passwd
testinguser:x:1001:1001::/home/testinguser:/bin/sh

Se non vedi la directory home /home/testinguser lì, dovrai eseguire il comando sudo usermod -d /home/testinguser testinguser per aggiornarlo, anche se non dovresti usare questo comando perché dovrebbe essere impostato di default (secondo alle pagine man di useradd ).

Ho quindi effettuato la disconnessione dal mio account e effettuato l'accesso con testinguser , e qui vengono create automaticamente le sottodirectory:

alaa@aa-lu:~$ ls -l /home/testinguser/
total 36
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Desktop
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Documents
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Downloads
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Music
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:07 Pictures
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Public
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Templates
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Videos

Non ho bisogno di copiare il contenuto di /etc/skel .

Se possibile, puoi provare a seguire questi passaggi, creando un altro nuovo utente? Al termine, puoi rimuovere questo nuovo utente di sudo deluser testinguser && sudo rm -r /home/testinguser .

Se tutto questo non ha funzionato con te, allora suppongo che sia un bug.

    
risposta data Alaa Ali 23.08.2013 - 08:22
fonte
12

UPDATE: la soluzione è rotta e non funziona anche per me.

Se si desidera creare la home directory dell'utente, se non esiste, eseguire il comando useradd con il flag -m . Questo copierà tutti i file dalla directory /etc/skel .

useradd -m username

Potrebbe essere necessario configurare le impostazioni per il proprio sistema. Secondo la pagina man:

  -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.

    By default, if this option is not specified and CREATE_HOME is not enabled, no
    home directories are created.

e inoltre indica:

CONFIGURATION

   The following configuration variables in /etc/login.defs change the behavior
   of this tool:

   CREATE_HOME (boolean)
       Indicate if a home directory should be created by default for new users.
    
risposta data crafter 22.08.2013 - 21:54
fonte
4

Se hai creato il nuovo utente con il comando adduser , non devi creare una directory home per il nuovo utente. Una directory home denominata con il nome dell'utente in /home directory, con le seguenti sottodirectory: Desktop, Download, Documenti, Musica, Immagini, Video (e altri), per il nuovo utente verrà creato automaticamente.

Se hai creato il nuovo utente con il comando useradd , quindi esegui i seguenti comandi nel terminale:

sudo -i     #enter your user password when you are asked
gedit /etc/passwd

per modificare /etc/passwd file come root (questo è il passaggio più importante). Trova la riga con il nome del nuovo utente e imposta la directory home predefinita per lui in questo modo:

new_username:x:1001:1001::/home/new_username:/bin/sh

A questa linea puoi anche aggiungere un vero nome per il nuovo utente, o impostare la shell predefinita. Qualcosa del genere:

new_username:x:1001:1001:Real New Username,,,:/home/new_username:/bin/bash

Fai attenzione, non apportare altre modifiche.

Dopo aver salvato il file, prima di uscire dall'account root, esegui i seguenti comandi:

mkdir /home/new_username                                      #to create the directory /home/new_username
cp /etc/skel/* /home/new_username                             #to copy copy files from the /home/new_username
chown -R new_username:new_username /home/new_username   #to change the owner of /home/new_username to the new user

Dopo che tutte queste cartelle home per il nuovo utente verranno popolate automaticamente dopo il primo accesso.

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

    
risposta data Radu Rădeanu 22.08.2013 - 21:18
fonte
3

Tutto ciò che serve davvero è la cartella home per farlo funzionare. Come root,

cd /home
cd mkdir username
chown username username
chgrp username username

L'accesso con la prima volta dovrebbe creare tutti i file necessari, che sembrano essere quelli:

drwxr-xr-x 16 fotanus fotanus 4096 Jun  4 17:46 .
drwxr-xr-x  9 root    root    4096 Jun  4 17:43 ..
drwx------ 11 fotanus fotanus 4096 Jun  4 17:46 .cache
drwx------ 13 fotanus fotanus 4096 Jun  4 17:46 .config
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Desktop
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Documents
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Downloads
drwx------  3 fotanus fotanus 4096 Jun  4 17:46 .gconf
drwxrwxr-x  2 fotanus fotanus 4096 Jun  4 17:46 .gstreamer-0.10
-rw-------  1 fotanus fotanus  334 Jun  4 17:45 .ICEauthority
drwxr-xr-x  3 fotanus fotanus 4096 Jun  4 17:45 .local
drwx------  4 fotanus fotanus 4096 Jun  4 17:45 .mozilla
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Music
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Pictures
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Public
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Templates
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Videos
-rw-------  1 fotanus fotanus   55 Jun  4 17:45 .Xauthority
-rw-------  1 fotanus fotanus  711 Jun  4 17:45 .xsession-errors
    
risposta data fotanus 04.06.2014 - 22:49
fonte

Leggi altre domande sui tag