¿Cómo cambiar el directorio raíz para un usuario de Linux?

¿Cómo cambiar el directorio raíz para un usuario de Linux?

Para un usuario en un host Linux, necesito hacer que todo sea inaccesible además de su directorio de inicio.

Escuché que esto generalmente se hace cambiando el directorio raíz del usuario (y configurándolo en el directorio de inicio del usuario), sin embargo, no pude encontrar la manera de hacerlo.

Pensé en el chrootcomando, pero parece que simplemente ejecuta el comando especificado, considerando el directorio especificado como el directorio raíz. Entonces parece que chrootno es lo que necesito.

Entonces mi pregunta es: ¿cuál es el comando que cambia el directorio raíz del usuario?

Respuesta1

Parece que desea cambiar el directorio INICIO, no el directorio raíz. La raíz siempre será / o /root.

usermod -d /path/to/new/homedir/ username

Respuesta2

Para estar seguro de que "todo lo inaccesible" detrás de este directorio de inicio, usaría chroot, pero después de que no puedes hacer nada si no preparas el directorio chroot, no tienes archivos binarios ni bibliotecas disponibles.

La configuración del servidor FTP puede resultarle útil: http://tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap29sec296.html

Es una configuración de chroot completa configurada para restringir a los usuarios de ftp a este directorio chroot.

Respuesta3

Mantengo esta respuesta y no me importa si obtuve un -1 sobre ella. Esto no es algo que Unix pueda hacer por usted de ninguna manera razonable. Estás pidiendo algo que es prácticamente imposible.

Pero hay una especie de manera de obtener algo parecido a lo que estás pidiendo. Utilice una máquina virtual. Configure una instancia de la máquina virtual para el usuario en cuestión y solo otorgue derechos de inicio de sesión en ella, no en el sistema operativo host.

Aquí está mi respuesta original:

Solo usa permisos. Para eso están. De todos modos, un usuario generalmente no tiene acceso para escribir en nada que no sea /tmp y su directorio de inicio. Y deben tener acceso de lectura a /bin/, /usr/bin, /usr/libo /libno podrán hacer nada en absoluto.

Si realmente desea algo más estricto que lo que le otorgan los permisos, considere configurar selinux para poder restringirlos aún más.

Usar chrootsimplemente no te dará lo que deseas. Es realmente complicado de configurar y hay formas de solucionarlo.

Respuesta4

Creo que si agregas

if grep "\\<${USER}\\>" /etc/jailbirds > /dev/null
then
    echo I am not a crook
else
    exec chroot $CWD
endif

hasta el final, /etc/profilees posible que obtenga lo que está pidiendo, pero puede tener algunos efectos secundarios que desconozco (hacerse cargo de la ejecución del shell /etc/profilepodría causar problemas). En este caso, necesitaría crear un archivo /etc/jailbirdsque fuera una lista de los usuarios para los que deseaba hacer chroot. También deberá asegurarse de que este archivo exista y decidir qué hacer en caso de errores al acceder a él para asegurarse de que otros usuarios (especialmente root) no queden bloqueados por chroot.

Además, hacer esto será difícil. El usuario no podrá acceder, /proclo que hará que muchas utilidades de shell (como ps, topy muchas otras) no funcionen. El usuario tampoco podrá acceder /dev/null, lo que dañará muchas cosas.

El usuario tampoco podrá acceder /dev/ttya cuál se romperá lessy morecuando se use con entrada estándar. Las aplicaciones del usuario heredarán los descriptores de archivos abiertos stdin, stdout y stderr anteriores al chroot, pero abren menos /dev/tty para que pueda recibir pulsaciones de teclas del usuario para lidiar con el redireccionamiento de stdin desde una tubería.

Tampoco podrá acceder a ningún programa o biblioteca compartida ni a muchos archivos que se encuentran en /etc (como /etc/protocols ) que utilizan muchos programas.

Todas estas son cosas que puede solucionar, pero terminará necesitando hacer mucho más trabajo para que el entorno de los usuarios sea utilizable del que creo que ha considerado.

Si prueba mi sugerencia, le sugiero que tenga mucho cuidado. Sería fácil equivocarse y estropear las cosas. Por cierto, no lo he probado.

información relacionada