Reevaluar su requerimiento primero. ¿Cuál es el problema que estás tratando de resolver? ¿Por qué quiere evitar que los usuarios abandonen su directorio de inicio? ¿No es más bien que no quieres que hurguen en otros directorios específicos , como los directorios de inicio de otros usuarios?
Es muy difícil evitar que los usuarios abandonen su directorio de inicio. En realidad, también es un poco tonto (sigue la explicación). Es mucho más simple evitar que los usuarios ingresen directorios que no desea que ingresen.
En primer lugar, sí, puede dar a los usuarios un llamado shell restringido , vea man rbash
. Esto evitará que cd
actúen en otro lugar, pero solo dentro de ese caparazón. Si el usuario inicia vi
o nano
(o cualquier otro programa capaz de abrir un archivo) puede volver a abrir archivos en cualquier parte del sistema. De hecho, un caparazón restringido no impide, por ejemplo cat /etc/passwd
.
El siguiente paso es una cárcel raíz. Más información en el wiki de la comunidad y en esta pregunta . Aunque una cárcel raíz encerrará a los usuarios dentro de un jardín amurallado, dentro del cual no tienen acceso a nada más que a los archivos y comandos que intencionalmente pusiste allí, las cárceles raíz realmente están destinadas a aislar software no confiable en lugar de usuarios. En particular, son para software que necesita ejecutarse con privilegios elevados, por lo tanto, una cárcel raíz .
Los usuarios, por otro lado, son de confianza : han tenido que autenticarse y ejecutarse sin privilegios elevados. Por lo tanto, los permisos de archivo son suficientes para evitar que cambien archivos que no son de su propiedad y que vean cosas que no deben ver. Para evitar que los usuarios lean el contenido de un archivo, elimine su legibilidad mundial con chmod o-r FILE
. Para mantener a los usuarios fuera de un directorio, hágalo inaccesible en todo el mundo chmod o-rwx DIR
.
Sin embargo, la legibilidad mundial es la predeterminada, por una buena razón: los usuarios realmente necesitan la mayoría de las cosas que están en el sistema de archivos. No encierres a los usuarios en sus hogares solo porque existan secretos afuera.
Por qué bloquear usuarios en su directorio personal es un poco tonto
Para hacer algo útil, los usuarios necesitan acceso a comandos y aplicaciones. Estos se encuentran en directorios como /bin
y /usr/bin
, por lo tanto, a menos que copie todos los comandos que necesitan desde allí a sus directorios principales, los usuarios necesitarán acceso a /bin
y /usr/bin
. Pero ese es solo el comienzo. Las aplicaciones necesitan bibliotecas de /usr/lib
y /lib
, que a su vez necesitan acceso a los recursos del sistema, que están en /dev
, y a los archivos de configuración en /etc
y /usr/share
.
Esta fue solo la parte de solo lectura. Las aplicaciones también querrán /tmp
ya menudo /var
escribir. Por lo tanto, si desea restringir a un usuario dentro de su directorio de inicio, tendrá que copiar mucho en él. De hecho, prácticamente todo un sistema de archivos base, que ya tiene, ubicado en /
.
Que necesitaba para dar acceso a usuario
sam
en/var/xyz
contenidos únicos y bloques lista de otros dentro de las carpetas/var/
Usé la siguiente secuencia de comandos:
Por lo tanto, el usuario puede ver los directorios listados debajo
/var/
pero no puede ver los contenidos debajo de los subdirectorios excepto/var/xyz
.fuente
Además de restringir el acceso a otros directorios, particularmente a los directorios principales de otros usuarios, tampoco quería que un usuario
ll /home
viera los nombres de los otros usuarios en el sistema.Para evitar esto, como root ejecutar
chmod 701 /home
. Esto hace que el/home
directorio mismo "lea / escriba / ejecute" a la raíz, por supuesto, pero solo "ejecute" a todos los demás./home
todavía es accesiblecd
, pero los usuarios no pueden leer su contenido: las carpetas de inicio de los otros usuarios y, por lo tanto, los nombres de usuario.fuente