
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 passwd
von 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/passwd
alle 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.