Evitar que el usuario vea la lista del directorio de inicio de otro usuario

Evitar que el usuario vea la lista del directorio de inicio de otro usuario

Quiero evitar que un usuario vea una lista del directorio de inicio (de otros usuarios). De forma predeterminada, un usuario no puede acceder al directorio de inicio de otro usuario, pero puede encontrar el directorio de inicio de otro usuario como se muestra a continuación:

[opc@instance-20210712-0826 home]$ cd /home
[opc@instance-20210712-0826 home]$ ls -lh
total 8.0K
drwx------. 10 opc       opc       4.0K Nov 14 22:52 opc
drwx------.  2 otheruser otheruser   62 Nov 28 18:19 otheruser
drwx------.  3 yaskur    yaskur    4.0K Nov 28 01:45 yaskur

De otra manera, un usuario puede ver una lista de otros usuarios (según el directorio de inicio). Quiero prevenirlo. Es similar a WHM/cPanel, si inicié sesión como usuario no puedo ver el directorio de inicio de otro usuario:

[myuser@sng128 ~]$ cd /home
[myuser@sng128 home]$ ls -l
total 4
drwx--x--x 25 myuser myuser 4096 Nov 28 08:27 myuser

Utilizo Oracle Linux, que es similar a CentOS o Rocky Linux.

Respuesta1

Los permisos de archivos restrictivos no impiden que un usuario enumere otros usuarios y sus directorios personales. getent passwdde glibc enumerará los usuarios, incluidos sus directorios personales. La función subyacente getpwent()también puede ser llamada por un programa.

Para evitar por completo que cualquier usuario incluya los directorios personales de otros usuarios, aísle al usuario. Como en, dales su propio contenedor. Aunque el "contenedor" podría implementarse de varias maneras: VM de hardware, VM de software (modo de usuario de Linux), OpenVZ, chroot, contenedores podman o los espacios de nombres de aislamiento de usuario y PID de Linux en general.

Respuesta2

Tropecé con esto mientras buscaba una solución para otra cosa...

Mi opinión es que puedes hacer:

chmod 711 /home
chmod 711 /home/*

y esto al menos debería evitar que otros usuarios incluyan el directorio /home. Estos no son recursivos y solo protegerán /home y /home/userX o /home/userY para que no aparezcan en la lista (ls) directamente.

Por supuesto, un usuario sin privilegios puede simplemente cat /etc/passwdver a todos los usuarios en el sistema, en cuyo caso, probablemente sea tan bueno como enumerar el directorio /home...

En tal caso, recomiendo ampliamente Firejail, que fue creado exactamente para esto y es fácil de configurar.

En Ubuntu Server, lo instalarías y configurarías así (por ejemplo, en un script firejail_install.sh):

#!/bin/bash

apt-get -y update
apt-get -y install firejail

if [ ! -f "/etc/firejail/disable-common.local" ]; then
    cat > "/etc/firejail/disable-common.local" <<EOF

# Firejail blacklist
blacklist /etc/passwd
blacklist /etc/letsencrypt
blacklist /etc/mysql
blacklist /etc/nginx
blacklist /etc/php
blacklist /etc/postfix
blacklist /etc/varnish
blacklist /var/lib/mysql
blacklist /var/run/php

# END
EOF

fi

Solo ten cuidado con lo que pones en la lista negra :)

Esto, combinado con los permisos correctos en /home, debería ser suficiente para proteger un poco mejor su sistema de miradas indiscretas.

Respuesta3

Eliminar el permiso de lectura global en /home

sudo chmod o-r /home

Esta es una configuración inusual y puede romper algunas cosas inesperadamente. (por ejemplo, exploradores de archivos) pero no obstaculizarán las tareas habituales

información relacionada