Schreibzugriff ohne Lesezugriff

14

Ist es möglich, dass ein Benutzer einen Schreibzugriff auf eine Datei hat und diese nicht lesen kann? Wie ist es möglich?

Ich habe die folgenden Befehle ausprobiert:

debianbox@debian:~/posix/io$ touch filetest
debianbox@debian:~/posix/io$ ls -l filetest
-rw-r--r-- 1 debianbox debianbox 0 14 oct.  03:10 filetest

debianbox@debian:~/posix/io$ echo "Hello World" > filetest
debianbox@debian:~/posix/io$ cat filetest
Hello World

debianbox@debian:~/posix/io$ chmod u-r filetest
debianbox@debian:~/posix/io$ cat filetest
cat: filetest: Permission forbidden

debianbox@debian:~/posix/io$

Wie Sie hier sehen können, habe ich Schreib-, aber keinen Lesezugriff auf diese Datei. Wie kann das möglich sein? Wird dies als Fehler angesehen? Wenn nicht, in welcher Situation wäre dies sinnvoll?

Dimitri
quelle

Antworten:

18

Es ist kein Fehler, es ist ein Feature TM (auch nur eine Konsequenz des universellen Unix-Zugangs zu Berechtigungen).

Abgesehen vom Dropbox-ähnlichen Verhalten bei Verzeichnissen (wie von BillThor beschrieben) ist für einige spezielle (Pseudo-) Dateien unter /procund nur ein Schreibzugriff erforderlich /sys. Solche Dateien werden verwendet, um einige Treiber- oder Kerneleigenschaften festzulegen oder eine Systemaktion auszulösen. Sie können sie nicht lesen, da sie nur für die Einweg-Signalisierung verwendet werden. Sie können nur einige Texte / Daten an sie senden. Um solche Dateien zu finden, können Sie verwenden

find /proc/[^0-9]* /sys -perm /222 ! -perm /444

Beachten Sie, dass diese Dateien root(in den meisten Fällen) nur über Schreibzugriff verfügen, da sie für die erweiterte Systemkonfiguration verwendet werden (potenziell gefährlich ).

rozcietrzewiacz
quelle
20

Der Hauptgrund für das Zulassen des Schreibzugriffs ohne Lesezugriff besteht darin, dass die Verwaltung von Berechtigungen sowohl im Kernel als auch in Benutzerprogrammen vereinfacht wird. Es gibt zwei Berechtigungen, eine zum Lesen und eine zum Schreiben. Sie werden unabhängig voneinander verwaltet. Dies ist kein Fehler, da das dokumentierte Verhalten mit dem tatsächlichen Verhalten übereinstimmt und es keinen guten Grund gibt, ein anderes Verhalten zu fordern.

Schreibrechte ohne Leserechte zu haben, macht für normale Dateien wenig Sinn. Es ist sinnvoll für verschiedene spezielle Dateien.

  • Einige Systeme erlauben nur das Anhängen von Dateien. Dies ist beispielsweise für Protokolldateien hilfreich. Es kann sinnvoll sein, vielen Benutzern das Erstellen von Protokolleinträgen zu gestatten, ihnen jedoch nicht das Löschen oder Überschreiben vorhandener Einträge zu gestatten (daher: Schreibberechtigung, sondern nur das Anhängen eines Attributs) oder das Lesen der Einträge anderer Benutzer zu gestatten (daher: Nein Leseerlaubnis).
  • Ein Programm darf möglicherweise in eine Named Pipe schreiben, ohne von dieser lesen zu dürfen.
  • Einige Geräte sind schreibgeschützt. Beispielsweise sollte ein an einen Lautsprecher angeschlossenes Audioausgabegerät ohne Mikrofon über Schreib- und Leseberechtigung verfügen.
  • Es gibt verschiedene spezielle Dateisysteme, bei denen das Lesen oder Schreiben in eine Datei eine sofortige Auswirkung hat, anstatt Daten abzurufen oder dem Speicher hinzuzufügen. Zum Beispiel unter Linux gibt es verschiedene Dateien unter /procund /sysdass damit Programme User - Space - Befehle an den Kernel senden , indem Sie auf eine bestimmte Datei zu schreiben. Wenn dieser Befehl keine Rückmeldung liefert, wird die spezielle Datei schreibgeschützt.
Gilles 'SO - hör auf böse zu sein'
quelle
2

Nein, das ist kein Fehler. Ich sehe es jedoch nicht allgemein auf Dateien angewendet.

Ich habe am häufigsten gesehen, dass nur Schreibzugriffe auf Dropbox-Verzeichnisse möglich sind. Benutzer können dem Verzeichnis Dateien hinzufügen, können jedoch nicht sehen, welche Dateien vorhanden sind.

Für eine normale Textdatei ist nur der Schreibzugriff für den Dropbox-Zugriff geeignet.

Das Festlegen des Nur-Schreibzugriffs für sich selbst wäre nicht besonders nützlich, würde jedoch den Berechtigungscode erschweren, wenn Sie dies nicht zulassen.

BEARBEITEN: Dropbox-Dateien sind wahrscheinlich nicht nützlich. Dies kann jedoch für Nicht-Root-Protokolle hilfreich sein, da das Überschreiben von Protokolleinträgen erschwert wird. Wenn Sie die Datei lesen können, ist es viel einfacher zu bestimmen, wo ein Ersatzprotokolleintrag geschrieben werden soll. Ich kenne jedoch niemanden, der seine Protokolle so erstellt. Es ist üblich, die Remote-Protokollierung zu verwenden, um lokale Änderungen an Protokolleinträgen zu verhindern.

Das Festlegen von Regeln, für die Berechtigungskombinationen zulässig sind, kann dazu führen, dass unvorhergesehene nützliche Berechtigungen vermieden werden. Viele Kombinationen sind auf Gruppen- oder Weltebene sinnvoller als auf Besitzerebene. Alle Versuche, den Zugriff durch den Eigentümer zu verhindern, können leicht außer Kraft gesetzt werden. Sie können jedoch nützlich sein, um eine nüchterne Sekunde zu erzwingen.

BillThor
quelle
Eine "Dropbox-Datei" hätte eigentlich wenig Sinn. Es konnte nur zum Schreiben einiger Daten verwendet werden, und selbst wenn es irgendwann lesbar gemacht wurde, zeigte sein Inhalt keine wirkliche Spur dessen, was damit geschah, da es zuvor gelöscht oder entfernt worden sein könnte.
rozcietrzewiacz