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


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


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

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.


4

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

Editar /etc/adduser.conf

Establecer DHOMEvariable


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.