Comando para cambiar el directorio de inicio predeterminado de un usuario

203

Me gustaría saber si hay algún comando de shell simple para cambiar el directorio de inicio del usuario en Linux / Unix (uno similar a chsh que cambia el shell de inicio de sesión predeterminado de un usuario válido existente) sin tocar el /etc/passwdarchivo. Gracias

Ibrahim Quraish
fuente
¿Por qué no quieres tocar el /etc/passwdarchivo? ¡Tendrás que hacerlo!
Basile Starynkevitch
11
stackoverflow.com/questions/20071714/… , dice que usermod -d /home/userxx /home/useryypara cambiar el directorio de inicio de sesión predeterminado de Linux a / home / useryy
Ibrahim Quraish
2
¿Por qué preguntas sobre el directorio de inicio predeterminado ? ¿Desea cambiar el directorio de inicio de un usuario existente en particular o de todos los usuarios agregados en el futuro? Tenga en cuenta que chshno cambia el shell de inicio de sesión predeterminado , sino solo el shell de inicio de sesión de un usuario determinado ... Para cambiar el HOMEde un usuario en particular, solo edite/etc/passwd
Basile Starynkevitch

Respuestas:

351

El comentario de Ibrahim sobre la otra respuesta es la forma correcta de alterar el directorio de inicio de un usuario existente.

Cambiar el directorio de inicio del usuario:

usermod -d /newhome/username username

usermodes el comando para editar un usuario existente.
-d(abreviatura de --home) cambiará el directorio de inicio del usuario.

Cambiar el directorio de inicio del usuario + Mover el contenido del directorio actual del usuario:

usermod -m -d /newhome/username username

-m(abreviatura de --move-home) moverá el contenido del directorio actual del usuario al nuevo directorio.

STW
fuente
1
No solo mueve el contenido, lo veo más como mover toda la carpeta = la carpeta original ( /home/usernametípicamente) se elimina.
Betlista
2
@STW ¿Es esta una tarea reversible? Es decir, si solo lo ejecuto una vez y luego volteo los parámetros, ¿mi directorio de inicio estará exactamente como estaba antes?
DanGordon
1
@DanGordon lo que sea que ponga en el /newhome/usernameargumento será el directorio de inicio del usuario. Puede volver a configurarlo en su directorio de inicio anterior si sabe lo que era, pero no hay una opción de "deshacer".
STW
3
El orden de opciones para el segundo comando es incorrecto. usermod -m -d /newhome/username usernametrabajos.
Snozzlebert
@Dominik gracias: existe la posibilidad de que sea diferente según el sistema operativo (Mac vs Linux vs BSD, etc.), por supuesto, también podría ser incorrecto
STW
28

Desde el directorio de inicio de usuario predeterminado de Linux Change al agregar un nuevo usuario :

Simplemente abra este archivo usando un editor de texto, escriba:

vi /etc/default/useradd

El directorio de inicio predeterminado definido por la variable HOME, encuentra la línea que dice lo siguiente:

HOME=/home

Reemplazar con:

HOME=/iscsi/user

Guarde y cierre el archivo. Ahora puede agregar usuarios utilizando el comando useradd regular:

# useradd vivek
# passwd vivek

Verifique la información del usuario:

# finger vivek
Maximin
fuente
82
usermod -m -d /path/to/new/login/home/dir user cambia el directorio de inicio del usuario existente a un nuevo directorio de inicio de sesión que se crea si aún no existe, la opción -m mueve el contenido del directorio de inicio actual al nuevo directorio de inicio
Ibrahim Quraish
23

La respuesta aceptada es defectuosa, ya que los contenidos de la carpeta de usuario inicial no se mueven al usarla. Voy a agregar otra respuesta para corregirlo:

sudo usermod -d /newhome/username -m username

No necesita crear la carpeta con nombre de usuario y esto también moverá sus archivos de la carpeta de usuario inicial a la carpeta / newhome / username.

Sukrit Gupta
fuente
4

En caso de que otros lectores busquen información sobre el addusercomando.

Editar /etc/adduser.conf

Establecer DHOMEvariable

rafaelvalle
fuente
0

Descubrimos que esto rompe algunas aplicaciones, la mejor manera de hacerlo es

Además del enlace simbólico, en las distribuciones y sistemas de archivos más recientes, como root también puede usar bind-mount:

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

Esto es útil para permitir el acceso "a través" del directorio / home a subdirecciones a través de demonios que de otro modo están configurados para evitar la ruta a través de enlaces simbólicos (apache, ftpd, etc.).

Tienes que recordar (o guión de inicio) para vincularte al reiniciar, por supuesto.

Un ejemplo de script de inicio en /etc/fstabes

/extra-home/username /home/username none defaults,bind 0 0
Wilken
fuente
-1

usermod -m -d / newhome nombre de usuario

Ahmed Kay
fuente
55
Por favor explique su respuesta con más detalle.
T. Short