Come modificare la directory Home dell'utente attualmente connesso


17

Sono attualmente connesso a un server CentOS e vorrei cambiare la mia home directory da /home/myuserName/a/var/www/html/

Ho provato il comando seguente:

> sudo usermod -d /var/www/html myuserName

Ma questo mi dà un errore:

usermod: user myUserName is currently logged in

2
Non sono sicuro di cosa volevi dire, HOME=/var/www/htmlcambierà per la sessione la tua home directory.
Archemar,

Questo aiuta, ma vorrei cambiare la mia home directory in modo permanente, non solo per la sessione corrente.
Mohan,

Risposte:


17

risposta breve : non puoi.

risposta lunga :

HOMEdir è impostato nel /etc/passwd6 ° campo. Viene letto al momento del login, la shell viene avviata con questa home directory.

Il modo corretto di cambiare la home directory per joe è:

  • disconnettersi da joe.
  • usare usermod -d /new/home joe per cambiare la home directory per la sessione successiva.

Una volta eseguita la sessione, devi fare due cose:

  • modifica $HOMEper cambiare la home directory per la sessione (da ripetere su tutte le sessioni attive).
  • usare sudo vipwper modificare la home directory per la prossima sessione

Inoltre, tieni presente che potresti avere un problema con autorizzazioni / proprietà su /var/www/html


1
edit / etc / passwd ha sempre funzionato per me. Vedi @ 7171u sotto
jeffmcneill

modifica / etc / passwd senza disconnessione / accesso?
Archemar,

modifica / etc / passwd per un account che ha effettuato l'accesso, quindi avvia una nuova sessione con quello stesso account e obbedisce alla nuova home directory. Per l'account già registrato, quella sessione ha ancora la vecchia posizione di casa nell'ambiente.
jeffmcneill,

8

Il comando usermod non funzionerà se si è effettuato l'accesso con l'utente su cui si sta tentando di apportare modifiche.

Dalla pagina di manuale su usermod dice:

Il codice utente CAVEATS non consente di modificare il nome di un utente che ha effettuato l'accesso. È necessario assicurarsi che l'utente nominato non stia eseguendo alcun processo quando viene eseguito questo comando se si modifica l'ID utente numerico dell'utente. È necessario modificare manualmente il proprietario di tutti i file crontab. È necessario modificare manualmente il proprietario di qualsiasi lavoro. È necessario apportare qualsiasi modifica relativa a NIS sul server NIS.

Prova ad accedere con un altro utente ed esegui nuovamente il comando.

Se ciò non è possibile, puoi modificare manualmente il file / etc / passwd (che in realtà è ciò che sta facendo il comando usermod). Se lo fai, assicurati di eseguire il backup del file nel caso in cui inavvertitamente fai qualcosa di stupido.


7

È necessario modificare il /etc/passwdfile per cambiare la home directory degli utenti attualmente connessi.

Modifica /etc/passwdcon sudo vipwe cambia la home directory dell'utente.

vipwaltamente raccomandato altro vimo altri editor poiché vipwimposterà il blocco per impedire il danneggiamento dei dati.


2

Un paio di possibili soluzioni alternative, a seconda di ciò che speri di risolvere:

Opzione 1. Aggiungi HOME=/var/www/htmlal tuo .bashrc

Opzione 2. Rinominare /home/myusernamee quindi creare un collegamento simbolico alla directory desiderata.

mv /home/myusername /home/myusername-old
ln -s /var/www/html /home/myusername

cattiva abitudine. successivamente, myusername-old non può essere utilizzato da altri utenti
GeoMint

-2

Puoi farlo solo temporaneamente. Ciò significa che ogni volta che accedi come tale utente devi eseguire questo comando:

export HOME=/var/www/html

In questo modo, puoi far pensare alla maggior parte delle applicazioni che la tua home directory sia la posizione che usi sopra.

~inizierà anche a indicare /var/www/html.

Le applicazioni con cui ha funzionato per me erano NPM e Maven.

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.