
In Ubuntu 14.04 werden beim Auflisten des Inhalts des Verzeichnisses /var/spool/cron
mit ls -l
die folgenden Berechtigungen für die darin enthaltenen Verzeichnisse bereitgestellt (irrelevante Spalten entfernt):
drwxrwx--T daemon daemon atjobs
drwxrwx--T daemon daemon atspool
drwx-wx--T root crontab crontabs
Welchen Zweck erfüllt das Setzen eines Sticky-Bits auf einem Verzeichnis ohne das ausführbare Bit?
Antwort1
Aus der Handbuchseite für sticky
:
STICKY-VERZEICHNISSE
Ein Verzeichnis, dessen „Sticky Bit“ gesetzt ist, wird zu einem Nur-Anhängen-Verzeichnis oder genauer gesagt zu einem Verzeichnis, in dem das Löschen von Dateien eingeschränkt ist. Eine Datei in einem Sticky-Verzeichnis kann von einem Benutzer nur dann entfernt oder umbenannt werden, wenn der Benutzer Schreibberechtigung für das Verzeichnis hat und der Benutzer der Eigentümer der Datei, der Eigentümer des Verzeichnisses oder der Superuser ist. Diese Funktion wird sinnvollerweise auf Verzeichnisse wie /tmp angewendet, die öffentlich beschreibbar sein müssen, Benutzern aber die Lizenz verweigern sollten, willkürlich die Dateien anderer zu löschen oder umzubenennen.
Jeder Benutzer kann ein Sticky-Verzeichnis erstellen. Einzelheiten zum Ändern der Dateimodi finden Sie unter chmod(1).
Das Ergebnis davon ist, dass nur der Besitzer einer Datei in einem Sticky-Verzeichnis die Datei entfernen kann. Im Fall der cron
Tabellen bedeutet dies, dassICHkann nicht hineingehen und entfernendeinCron-Tabelle und ersetzen Sie sie durch eine derMeinauswählen, obwohl ich möglicherweise Schreibzugriff auf das Verzeichnis habe. Aus diesem Grund /tmp
ist das auch klebrig.
Antwort2
Welchen Zweck erfüllt das Setzen eines Sticky-Bits auf einem Verzeichnis ohne das ausführbare Bit?
drwx-wx--T 2 root crontab 4096 Apr 24 15:00 /var/spool/cron/crontabs/
Was Sie sehen, ist bei Debian ähnlich. Das Verzeichnistutdas Ausführbare-Bit muss für den Besitzer und die Gruppe gesetzt sein. Nur für den Besitzer macht Sticky nicht viel Sinn, da dies per Definition nur ein Benutzer ist (und der Besitzer Sticky sowieso überschreiben kann). Aber für die Gruppe ist es genauso wichtig wie für allgemein beschreibbare Verzeichnisse wie /tmp
, nämlich dass normale Benutzer keine Dateien entfernen können, die anderen Benutzern gehören.
Aber warum sollte jemand Mitglied der Gruppe sein crontab
?
Natürlich um ihre Crontabs ändern zu können! Debian crontab
arbeitet mit setgid-Privilegien und ermöglicht so jedem normalen Benutzer den Zugriff auf dieses Verzeichnis mit seiner eigenen UID und der GID von crontab
. Das ist etwas sicherer, als sie crontab
mit set laufen zu lassen.BenutzerkennungPrivileg, da die Benutzer voneinander getrennt bleiben.
-rwxr-Srx 1 root crontab 36008 11. Juni 2015 /usr/bin/crontab
Normalerweise gehören die Dateien im Verzeichnis ihren jeweiligen Besitzern und werden von ihnen benannt. Wenn crontab
nur das Entfernen der eigenen Crontab des Benutzers erlaubt wird, sollte es kein Problem geben. Wenn die Dateiberechtigungen so eingerichtet sind, schützt dies vor Programmfehlern.Undmacht die tatsächliche UID des zugreifenden Benutzers relevant, nicht nur derenName.