Verhindern, dass Benutzer die Liste der Home-Verzeichnisse anderer Benutzer sehen

Verhindern, dass Benutzer die Liste der Home-Verzeichnisse anderer Benutzer sehen

Ich möchte verhindern, dass ein Benutzer eine Liste der Home-Verzeichnisse (anderer Benutzer) sieht. Standardmäßig kann ein Benutzer nicht auf das Home-Verzeichnis anderer Benutzer zugreifen, kann aber das Home-Verzeichnis eines anderen Benutzers wie unten finden:

[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

Auf andere Weise kann ein Benutzer eine Liste anderer Benutzer sehen (basierend auf dem Home-Verzeichnis). Ich möchte das verhindern. Es ist ähnlich wie bei WHM/cPanel. Wenn ich mich als Benutzer anmelde, kann ich das Home-Verzeichnis anderer Benutzer nicht sehen:

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

Ich verwende Oracle Linux, das CentOS oder Rocky Linux ähnelt.

Antwort1

Restriktive Dateiberechtigungen hindern einen Benutzer nicht daran, andere Benutzer und deren Home-Verzeichnisse aufzulisten. getent passwdvon glibc listet Benutzer einschließlich ihrer Home-Verzeichnisse auf. Die zugrunde liegende getpwent()Funktion kann auch von einem Programm aufgerufen werden.

Um zu verhindern, dass ein Benutzer die Home-Verzeichnisse anderer Benutzer auflistet, isolieren Sie den Benutzer. Geben Sie ihm also seinen eigenen Container. „Container“ könnte jedoch auf verschiedene Arten implementiert werden: Hardware-VM, Software-VM (User Mode Linux), OpenVZ, Chroot, Podman-Container oder allgemein die Linux-Benutzer- und PID-Isolations-Namespaces.

Antwort2

Bin darüber gestolpert, als ich nach einer Lösung für etwas anderes gesucht habe ...

Meiner Meinung nach können Sie einfach Folgendes tun:

chmod 711 /home
chmod 711 /home/*

und dies sollte zumindest verhindern, dass andere Benutzer das /home-Verzeichnis auflisten. Diese sind nicht rekursiv und schützen nur /home und /home/userX oder /home/userY davor, direkt aufgelistet zu werden (ls).

Natürlich kann ein nicht privilegierter Benutzer einfach cat /etc/passwdalle Benutzer im System anzeigen. In diesem Fall ist es wahrscheinlich so gut wie das Auflisten des /home-Verzeichnisses ...

In einem solchen Fall empfehle ich dringend Firejail, das genau für diesen Zweck entwickelt wurde und einfach einzurichten ist.

Auf einem Ubuntu-Server würden Sie es folgendermaßen installieren und konfigurieren (z. B. in einem firejail_install.sh-Skript):

#!/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

Passen Sie einfach auf, was Sie auf die schwarze Liste setzen :)

Dies sollte in Kombination mit den richtigen Berechtigungen für /home ausreichen, um Ihr System etwas besser vor neugierigen Blicken zu schützen.

Antwort3

Entfernen Sie die globale Leseberechtigung für /home

sudo chmod o-r /home

Dies ist eine ungewöhnliche Einstellung und kann einige Dinge unerwartet beschädigen (z. B. Dateibrowser), wird aber normalen Aufgaben nicht im Wege stehen.

verwandte Informationen