Comando per modificare la home directory predefinita di un utente


203

Vorrei sapere se esiste un semplice comando shell per modificare la directory home dell'utente in Linux / Unix (una simile a chsh che modifica la shell di accesso predefinita di un utente valido esistente) senza toccare il /etc/passwdfile. Grazie


Perché non vuoi toccare il /etc/passwdfile? Dovrai farlo!
— Basile Starynkevitch il

11
stackoverflow.com/questions/20071714/… , dice che usermod -d /home/userxx /home/useryyper cambiare la directory di login predefinita di linux in / home / useryy
— Ibrahim Quraish,

2
Perché chiedi della home directory predefinita ? Vuoi cambiare la home directory di un particolare utente esistente o di tutti gli utenti aggiunti in futuro? Si noti che chshnon si modifica la shell di accesso predefinita , ma solo la shell di accesso di un determinato utente ... Per modificare quella HOMEdi un determinato utente, basta modificare/etc/passwd
— Basile Starynkevitch,

Risposte:


351

Il commento di Ibrahim sull'altra risposta è il modo corretto di modificare la home directory di un utente esistente.

Cambia la home directory dell'utente:

usermod -d /newhome/username username

usermodè il comando per modificare un utente esistente.
-d(abbreviazione di --home) cambierà la home directory dell'utente.

Modifica la home directory dell'utente + Sposta il contenuto della directory corrente dell'utente:

usermod -m -d /newhome/username username

-m(abbreviazione di --move-home) sposta il contenuto dalla directory corrente dell'utente alla nuova directory.


1
Non solo sposta il contenuto, lo vedo più come spostare l'intera cartella = la cartella originale (in /home/usernamegenere) viene rimossa.
— Betlista,

2
@STW È un'attività reversibile? Significa che se lo eseguo solo una volta e poi capovolgo i parametri, la mia home directory sarà esattamente come prima?
— DanGordon,

1
@DanGordon qualunque cosa tu abbia inserito /newhome/usernamenell'argomento sarà la home directory dell'utente. Puoi ripristinarlo alla loro home directory precedente se sai cos'è, ma non c'è l'opzione "annulla".
— STW,

3
L'ordine delle opzioni per il secondo comando è errato. usermod -m -d /newhome/username usernamelavori.
— Snozzlebert,

@Dominik grazie - c'è una possibilità che sia diverso in base al sistema operativo (Mac vs Linux vs BSD, ecc.), Ovviamente potrebbe anche essere errato
— STW

28

Da Linux Modifica directory home utente predefinita durante l'aggiunta di un nuovo utente :

Basta aprire questo file usando un editor di testo, digitare:

vi /etc/default/useradd

La home directory predefinita definita dalla variabile HOME, trova la riga che legge come segue:

HOME=/home

Sostituirlo con:

HOME=/iscsi/user

Salva e chiudi il file. Ora puoi aggiungere l'utente usando il normale comando useradd:

# useradd vivek
# passwd vivek

Verifica le informazioni dell'utente:

# finger vivek

82
usermod -m -d /path/to/new/login/home/dir user cambia la home directory dell'utente esistente in una nuova directory di accesso che viene creata se non esiste già, l'opzione -m sposta il contenuto della home directory corrente nella nuova directory home
— Ibrahim Quraish,

23

La risposta accettata è errata, poiché i contenuti della cartella dell'utente iniziale non vengono spostati mediante essa. Ho intenzione di aggiungere un'altra risposta per correggerla:

sudo usermod -d /newhome/username -m username

Non è necessario creare la cartella con nome utente e questo sposterà anche i file dalla cartella dell'utente iniziale alla cartella / newhome / nome utente.


4

Nel caso in cui altri lettori cerchino informazioni sul addusercomando.

modificare /etc/adduser.conf

Imposta DHOMEvariabile


0

Ho scoperto che questo rompe alcune applicazioni, il modo migliore per farlo è

Oltre al collegamento simbolico, su distro e filesystem più recenti, come root puoi anche usare bind-mount:

mkdir /home/username 
mount --bind --verbose /extra-home/username /home/username

Ciò è utile per consentire l'accesso "attraverso" la directory / home ai sottodiriali tramite demoni che sono altrimenti configurati per evitare il percorso attraverso i collegamenti simbolici (apache, ftpd, ecc.).

Devi ricordarti (o script di init) di legare al riavvio, ovviamente.

Un esempio di script di script in /etc/fstabè

/extra-home/username /home/username none defaults,bind 0 0

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.