Ubuntu Datei schreibgeschützt trotz aller Berechtigungen?


02.05.2022, 18:07

Nutze Ubuntu 22.04 LTS

5 Antworten

Grund dafür ist der Kernel-Parameter fs.protected_regular. Dieser sorgt dafür, dass eine Datei nicht bearbeitet werden kann, die dem aktuellen User nicht gehört und sich in einem 777er-Ordner mit Sticky Bit befindet (wie eben /tmp).

Heisst also: Der /tmp Ordner gehört root und hat die Permission 1777 (rwxrwxrwx mit Sticky Bit). Die Datei darin gehört marvin und hat auch 777er-Berechtigungen.

Nun kommt ein anderer User (in diesem Fall bob) und will die Datei bearbeiten. Geht aber eben nicht, da bob nicht root und auch nicht marvin ist und weil wir uns in einem 1777-er Ordner befinden.

Man könnte das via sysctl deaktivieren, ich würde das aber mal nicht empfehlen.

Mehr zu genanntem Parameter hier: https://www.kernel.org/doc/html/latest/admin-guide/sysctl/fs.html#protected-regular

Woher ich das weiß:eigene Erfahrung – Nutze Linux täglich, sowohl auf Server als auch Desktop

Der Ordner /tmp ist nicht für den Datenaustausch zwischen Nutzern vorgesehen sonder als Speicher für temporäre Dateien.

Wenn Du mit anderen Nutzern Daten austauschen möchtest, empfehle ich unter /home einen Ordner dafür anzulegen (z.B. /home/public) und diesen für alle Nutzer zugänglich zu machen.

Woher ich das weiß:eigene Erfahrung

Ja, das ist beim /tmp Verzeichnis normal, da dort das Sticky Bit gesetzt ist.

Das Sticky Bit (auch t-Bit oder Save Text Bit) ist ein erweitertes Dateirecht, d. h. ein Dateiattribut unter Unix. Es wirkt sich auf Verzeichnisse und Dateien unterschiedlich aus. [...] Das Sticky-Bit ermöglicht das Anlegen gemeinsam genutzter Verzeichnisse. Hat ein Verzeichnis beispielsweise für alle Benutzer alle Dateirechte gesetzt (777 bzw. rwxrwxrwx), dann kann jeder Benutzer in diesem Verzeichnis Dateien (und Unterverzeichnisse) anlegen, aber auch jede Datei darin löschen. Durch Setzen des Sticky-Bits wird der Zugriff auf die Dateien in diesem Verzeichnis eingeschränkt, so dass nur noch der Eigentümer einer Datei (oder der Eigentümer des Verzeichnisses) diese Datei löschen oder umbenennen darf. [Wikipedia]

SIyCooper 
Beitragsersteller
 02.05.2022, 18:12

"Die Rechte zum Lesen und Schreiben der Dateien bleiben davon unberührt" So wie ich das verstehe darf man also schreiben?

verreisterNutzer  02.05.2022, 18:31
@SIyCooper

Nein, du kannst die Datei nicht verändern. Was bei Wikipedia steht, ist falsch. Ich habe den Teil aus meiner Antwort entfernt.

Lezurex  02.05.2022, 18:46
@verreisterNutzer

Das stimmt schon so, wie es in Wikipedia steht. Das Sticky Bit hat nur Auswirkungen auf in der Ordner-"Datei" gespeicherten Informationen (z. Bsp. eben die weiteren Inodes im Ordner und deren Namen). Die Datei selbst (wo dann auch hingeschrieben wird) hat eigene Berechtigungen.

Ich gehe ja mal stark davon aus, dass die offizielle Dokumentation hierzu nicht falsch liegt: https://man7.org/linux/man-pages/man1/chmod.1.html#RESTRICTED_DELETION_FLAG_OR_STICKY_BIT

oder wenn du es lieber in man selbst lesen willst:

man --pager='less -p ^RESTRICTED' chmod
SIyCooper 
Beitragsersteller
 02.05.2022, 18:49
@Lezurex

Hm und wieso ist die Datei dann schreibgeschützt. Ne Idee? :/

Lezurex  02.05.2022, 18:51
@SIyCooper

Ja da bin ich auch grad am Überlegen. Ich melde mich, sobald ich dazu ne Antwort habe. Momentan wüsste ich aber auch gerade nicht, warum das so ist. Jedenfalls konnte ich das bei mir reproduzieren.

verreisterNutzer  02.05.2022, 19:49
@Lezurex

Was ich gesagt habe steht auch so in den Manpages. Bei Wikipedia wurde das etwas anders dargestellt und das ist eben falsch, was dort bei Wikipedia steht.

Bitte mal ins Englische Wikipedia gehen. Da ist es richtig erklärt.

Lezurex  02.05.2022, 20:19
@verreisterNutzer

Wie gesagt, das Sticky Bit auf einem Ordner hat in erster Linie nichts mit den rwx-Rechten der Dateien im Ordner zu tun.

In der englischsprachigen Wikipedia steht:

files in that directory may only be unlinked or renamed by root or the directory owner or the file owner

Unlinken (= löschen) und umbenennen sind dabei Operationen, die direkt im Inode des Ordners getätigt werden, hat also nichts mit den Dateien an sich zu tun. So steht das auch in den Manpages.

Die deutsche Wikipedia hat da einfach noch zusätzlich dazugeschrieben, dass rwx der Dateien davon unberührt bleibt, was ja auch nicht falsch ist. Ist halt einfach eine Anmerkung.

In Zusammenhang mit dem in meiner Antwort erwähnten Kernel-Parameter trifft das dann mehr oder weniger zu, hat aber nicht direkt etwas mit dem Sticky Bit zu tun.

verreisterNutzer  02.05.2022, 21:51
@Lezurex
The modern function of the sticky bit refers to directories, and protects directories and their content from being hijacked by non-owners; this is found in most modern Unix-like systems. Files in a shared directory such as /tmp belong to individual owners, and non-owners may not delete, overwrite or rename them. [...] When [...] set on a directory, files in that directory may only be unlinked or renamed by root or the directory owner or the file owner. The fs.protected_fifos, fs.protected_regular, and fs.protected_symlinks sysctls further restrict the creation of FIFOs, creation of regular files, and the following of symlinks respectively within directories with the sticky bit set. [Wikipedia]
Lezurex  02.05.2022, 22:09
@verreisterNutzer

Experiment für dich:

Erstelle mit einem User eine Datei in /tmp und setze den Okatlwert davon auf 777. Versuche nun mit einem anderen User etwas da reinzuschreiben. Geht nicht. Wissen wir ja jetzt schon.

Nun deaktivierst du fs.protected_regular:

sudo sysctl fs.protected_regular=0

Nun probierst du nochmals was reinzuschreiben. Uns siehe da: es funktioniert. Es hat also nicht direkt etwas mit dem Sticky Bit zu tun. Der Kernel Parameter nimmt das Sticky Bit einfach als Merkmal.

Und wie schon zwei Mal erwähnt: Dieses Verhalten trifft nur auf Verzeichnisse mit Oktalwert 1777 zu. Erstelle in /home mal einen Ordner mit dem Oktalwert 1755 (und setze fs.protected_regular wieder auf 1). Mit dem User, der dazu die Permissions hat, erstellst du nun eine neue Datei. Den Oktalwert davon setzt du auf 777. Auf dem Ordner ist immer noch das Sticky Bit gesetzt, du kannst nun aber mit einem anderen User in die Datei reinschreiben.

Zudem steht in den einzelnen Beschrieben der Betriebssysteme kein einziges Mal irgendwas davon, dass man die Dateien damit überschreiben könne. Da ist im obigen Paragraphen also eher was falsch.

verreisterNutzer  03.05.2022, 07:00
@Lezurex

Nochmal: Es gibt unterschiedliche Möglichkeiten wie es interpretiert werden kann. Linux nutzt einen bestimmten Parameter in Kombination mit dem Sticky Bit. Andere Betriebssysteme interpretieren es wieder anders.

wenn sie gerade benutzt wird (wovon auch immer) , kann man sie auch nicht beschreiben . und gucken ob dein ordner auch die berechtigungen hat . system tmp und user tmp . musst dir mal die rechte angucken , wie es bei deinem system geregelt ist .


SIyCooper 
Beitragsersteller
 02.05.2022, 18:15

/tmp hat drwxrwxrwt root root Berechtigung.

Ich habe die Datei soweit ich weiß nirgends geöffnet. Komisch

Hatte das gleiche Problem mit egal welchen Berechtigungen

versuch es mal mit "sudo nano <file>"


SIyCooper 
Beitragsersteller
 02.05.2022, 18:14

Hm geht leider immer noch nicht :/