In Ubuntu 14.04, die Auflistung der Inhalt des Verzeichnisses /var/spool/cron
mit ls -l
bietet die folgenden Berechtigungen für die Verzeichnisse innerhalb (irrelevant Spalten snipped):
drwxrwx--T daemon daemon atjobs
drwxrwx--T daemon daemon atspool
drwx-wx--T root crontab crontabs
Welchen Zweck hat das Setzen eines Sticky-Bits in einem Verzeichnis ohne das ausführbare Bit?
Antworten:
Aus der Handbuchseite für
sticky
:Das Ergebnis ist, dass nur der Eigentümer einer Datei in einem Sticky-Verzeichnis die Datei entfernen kann. Bei den
cron
Tabellen bedeutet dies, dass ich dort nicht hineingehen und Ihre Cron-Tabelle entfernen und durch eine meiner Auswahl ersetzen kann , obwohl ich möglicherweise Schreibzugriff auf das Verzeichnis habe. Aus diesem Grund/tmp
ist auch klebrig.quelle
daemon
und die Mitglieder dieser Gruppe könntenatjobs
sowieso etwas tun . Ich gehe davon aus, dass die Entwickler an Fälle gedacht haben, in denen mehr als dieser Benutzer zurdaemon
Gruppe gehörte. Ich kann mir keinen anderen Grund dafür vorstellen.chmod a+wx
. Dies ist eine Spekulation, aber es kann vorkommen, dass das Sticky-Bit in historischen Distributionsversionen platziert wurde und der Eigentümer in jüngerer Zeit gewechselt hat. In diesen Fällen gibt es keinen Grund, kein Sticky-Set zu verwenden. "Wenn es also nicht kaputt ist, brechen Sie es nicht ".Was Sie sehen, ist bei Debian ähnlich. Für das Verzeichnis ist das ausführbare Bit für den Eigentümer und die Gruppe festgelegt. 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). Für die Gruppe ist es jedoch genauso wichtig wie für weltweit beschreibbare Verzeichnisse
/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 modifizieren zu können! Debian
crontab
arbeitet mit setgid-Berechtigungen, sodass jeder normale Benutzer mit seiner eigenen UID und der GID von auf dieses Verzeichnis zugreifen kanncrontab
. Das ist etwas sicherer, als siecrontab
mit festgelegten UID- Berechtigungen ausführen zu lassen, da die Benutzer voneinander getrennt bleiben .Normalerweise sind die Dateien im Verzeichnis Eigentum der jeweiligen Eigentümer und werden von diesen benannt. Wenn
crontab
nur die eigene Crontab des Benutzers entfernt werden kann, sollte es kein Problem geben. Wenn die Dateiberechtigungen so eingerichtet sind, schützt dies vor Fehlern im Programm und macht die tatsächliche UID des zugreifenden Benutzers relevant, nicht nur dessen Namen .quelle