Warum sollte in einem Verzeichnis das Sticky-Bit ohne das Ausführbare-Bit gesetzt sein?

Warum sollte in einem Verzeichnis das Sticky-Bit ohne das Ausführbare-Bit gesetzt sein?

In Ubuntu 14.04 werden beim Auflisten des Inhalts des Verzeichnisses /var/spool/cronmit ls -ldie 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 cronTabellen 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 /tmpist 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 crontabarbeitet 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 crontabmit 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 crontabnur 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.

verwandte Informationen