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.