Ich habe einem Linux-Server eine zusätzliche Festplatte hinzugefügt.
Ich habe der fstab folgende Zeile hinzugefügt:
UUID=e277f402-bbac-4830-bc1d-5a849ffe7f9c /disk1 ext4 defaults 0 0
Ich habe dann einen Einhängepunkt /disk1 erstellt und ihn eingehängt
sudo mkdir /disk1
sudo mount /disk1
Ich habe dann eine leere Datei touch1.txt als Benutzer "hari" erstellt und die Berechtigungen waren wie folgt
sudo touch test1.txt
-rw-rw-r-- 1 hari hari 0 Sep 12 18:23 test1.txt
Wenn ich mich jetzt als anderer Benutzer anmelde und die Datei test1.txt lösche, werde ich tatsächlich gefragt und dann abgelehnt, anstatt zu sagen „Zugriff verweigert“. Warum ist das so? Und wie kann ich dafür sorgen, dass es sich wie „normal“ verhält?
hari2@UBUNTU01:/disk1$ rm test2.txt
rm: remove write-protected regular empty file ‘test2.txt’? y
rm: cannot remove ‘test2.txt’: Operation not permitted
Antwort1
Unix-Berechtigungen sind beim Entfernungsvorgang etwas seltsam.
Zunächst einmal bedeutet das Löschen einer Datei, dass man den Link zu der Datei aus einem Verzeichnis entfernt. Da die meisten Unix-Dateisysteme Hardlinks zulassen, ist es möglich, dass die Datei von mehr als einem Verzeichnis aus verlinkt ist, sodass mehr als ein Link existiert. Und wenn Sie einen Link entfernen, wird die Datei nicht gelöscht, sofern keine anderen Links zu ihr existieren.
Aus diesem Grund heißt der eigentliche Systemaufruf zum „Entfernen“ einer Datei unlink
. Das Shell-Befehlsdienstprogramm, das die Aufhebung der Verknüpfung durchführt, heißt jedoch rm
, was eine Mnemonik für „remove“ (entfernen) ist.
Da der Vorgang zum Aufheben der Verknüpfung dieVerzeichnis(durch Entfernen des Verzeichniseintrags) und nicht der Datei, ist für den Vorgang die Schreibberechtigung erforderlichim VerzeichnisDie Berechtigungen für die Datei selbst sind irrelevant.
Es stellt sich jedoch heraus, dass es ein häufiger Fehler ist, eine Datei aus einem Verzeichnis zu löschen, für das Sie Schreibrechte haben und die Ihnen eigentlich gar nicht gehört. (Genauer gesagt ist diese Situation nicht alltäglich, aber in den Fällen, in denen sie vorkommt, kommt es recht häufig vor, dass Sie fälschlicherweise versuchen, die Datei zu löschen.)
Um zu verhindern, dass sich Systemadministratoren ins eigene Fleisch schneiden, rm
überprüft das Dienstprogramm zunächst, ob die Person, die es aufruft, Schreibberechtigung für denDatei, obwohl diese Berechtigung zum Aufheben der Verknüpfung der Datei nicht erforderlich ist. Aus offensichtlichen Gründen wird diese Prüfung vor dem Versuch durchgeführt, die Datei zu löschen.
Das rm
DienstprogrammnichtÜberprüfen Sie, ob der Benutzer die Verknüpfung der Datei aufheben darf, da „vor der Aktion prüfen“ im Allgemeinen als schlechter Stil gilt. Stattdessen führt es die gewünschte Aktion aus und meldet einen Fehler, wenn das Betriebssystem einen Fehler zurückgibt. In diesem Fall meldet das Betriebssystem EACCES, da der Benutzer keinen Schreibzugriff auf das Verzeichnis hat.
Die unglückliche Konsequenz ist, dass Sie beim Versuch, eine Datei aus einem Verzeichnis ohne Schreibberechtigung zu löschen, für das Sie keine Schreibberechtigung haben, rm
eher vergeblich gefragt werden, ob Sie fortfahren möchten, und dann ein Fehler gemeldet wird.