it-swarm.com.de

Was sind die richtigen Berechtigungen für / tmp? Ich habe alles ungewollt rekursiv öffentlich gemacht

Ich habe ein wirklich sehr kurzes temporäres Verzeichnis erstellt, das ich für einige Stunden zwischen einigen Benutzern teilen wollte: /some/path/tmp

Leider habe ich Sudo chown 777 -R /tmp Anstelle von Sudo chown 777 -R tmp Gestartet, sodass meine /tmp - Datei jetzt vollständig öffentlich ist.

Ist es jetzt ein Sicherheitsbedenken, da es vollständig öffentlich ist? Sollte ich es wieder auf sicherere Einstellungen ändern? Was sind die richtigen Berechtigungen für /tmp?

84

Die normalen Einstellungen für /tmp sind 1777, was ls als drwxrwxrwt anzeigt. Das heißt: weit offen, außer dass nur der Eigentümer einer Datei sie entfernen kann (das bedeutet dieses zusätzliche t-Bit für ein Verzeichnis).

Das Problem mit einem /tmp im Modus 777 kann ein anderer Benutzer eine von Ihnen erstellte Datei entfernen und den Inhalt seiner Wahl ersetzen.

Wenn dein /tmp ist ein tmpfs-Dateisystem, ein Neustart stellt alles wieder her. Andernfalls führen Sie chmod 1777 /tmp.

Zusätzlich viele Dateien in /tmp müssen privat sein. Mindestens ein Verzeichnis muss jedoch unbedingt lesbar sein: /tmp/.X11-unix und möglicherweise einige andere ähnliche Verzeichnisse (/tmp/.XIM-unix, usw.). Der folgende Befehl sollte meistens Abhilfe schaffen:

chmod 1777 /tmp
find /tmp -mindepth 1 -name '.*-unix' -exec chmod 1777 {} + -Prune -o -exec chmod go-rwx {} +

Das heißt, Machen Sie alle Dateien und Verzeichnisse privat (entfernen Sie alle Berechtigungen für Gruppen und andere), aber machen Sie die X11-Sockets für alle zugänglich. Die Zugriffskontrolle für diese Sockets wird vom Server und nicht von den Dateiberechtigungen erzwungen. Möglicherweise müssen andere Steckdosen öffentlich verfügbar sein. Lauf find /tmp -type s -user 0 um Root-Sockets zu entdecken, die Sie möglicherweise benötigen, um weltweit zugänglich zu machen. Es können Sockets vorhanden sein, die auch anderen Systembenutzern gehören (z. B. um mit einem Systembus zu kommunizieren); erkunden mit find /tmp -type s ! -user $UID (wo $UID ist Ihre Benutzer-ID).

/tmp Und /var/tmp Sollten Lese-, Schreib- und Ausführungsrechte für alle haben. Normalerweise fügen Sie jedoch auch das Sticky-Bit (o+t) hinzu, um zu verhindern, dass Benutzer Dateien/Verzeichnisse anderer Benutzer entfernen. Also sollte chmod a=rwx,o+t /tmp Funktionieren.

Was das rekursive Ändern von Berechtigungen betrifft ... Solange der Eigentümer/die Gruppe so bleibt wie für die Dateien und Verzeichnisse, sollte dies kein so großes Problem sein. Sie können jedoch möglicherweise die Berechtigung für alles unter /tmp (Nicht/tmp selbst) ändern, um die Privatsphäre der Benutzer zu gewährleisten, indem Sie die rx -Rechte anderer und möglicherweise der Gruppe entfernen.

Finden ist ein guter Weg, dies zu tun. Als Wurzel tun Sie:

cd /tmp
find . -type f -exec chmod u=rw,go= {} \;   # (or u=rw,g=r,o= {})
find . -type d -exec chmod u=rwx,go= {} \;  # (or u=rwx,g=rx,o= {})
11
Baard Kopperud
[[email protected] tmp]# ls -alF .
total 1632
drwxrwxrwt 15 root root    4096 Apr  7 04:24 ./
drwxr-xr-x 28 root root    4096 Apr  2 21:02 ../
[[email protected] tmp]# stat -c '%A %a %n' .
drwxrwxrwt 1777 .

Von einem CentOS 5.9-Computer.

3