Gibt Ihnen das "Besitzen" eines Verzeichnisses oder einer Datei spezielle Berechtigungen?

7

Ich habe ein wenig über chmod gelesen und habe ein umfassendes Verständnis der Dateiberechtigungen. Aber ich bin ein wenig verwirrt über das Konzept eines "Besitzers".

Wenn mein Benutzerkonto der 'Eigentümer' eines Verzeichnisses ist, aber keine Berechtigungen hat (chmod 0000), kann mein Benutzer dann mehr tun als ein anderer zufälliger Benutzer im System? Angenommen, keiner der Benutzer ist ein Superuser?

Rob P.
quelle

Antworten:

6

chmod 00000macht das Verzeichnis / die Datei für Eigentümer und Gruppe unzugänglich. Das einzige, was Sie und die Gruppe, der die Datei gehört, tun können, ist, sie mit zu entfernen rm -rf tmp/. Nichts ist besser als ein Beispiel:

$ mkdir tmp
$ chmod 00000 tmp
$ cd tmp
bash: cd: tmp: Permission denied

Sie können das Verzeichnis mit sehen ls -l

d--------- 2 rinzwind rinzwind   4096 Oct 13 14:35 tmp

und aber nur mit sudo Berechtigungen können Sie das Verzeichnis eingeben ...

 $ sudo su
 # cd tmp
 #

In Bezug auf die anderen Beiträge: Ja, Sie können eine Datei / ein Verzeichnis entfernen, die / das auf 00000 geändert wurde:

$ mkdir tmp
$ chmod 00000 tmp
$ rm -rf tmp/
$ touch 1
$ chmod 00000 1
$ rm 1
rm: remove write-protected regular empty file `1'? y
$ 

Als Eigentümer dürfen Sie auch die Berechtigungen zurücksetzen. Das ist auch jemand anderem (außer root) erlaubt.

Rinzwind
quelle
Das hat mich überrascht; aber ich kann bestätigen, dass es richtig ist. Eigentümer können Verzeichnisse entfernen, auch wenn sie keine anderen Rechte haben.
Rob P.
IIRC: Das Entfernen einer Datei hat mit den Berechtigungen des Verzeichnisses zu tun, in dem sich die Datei befindet, da die Datei selbst nicht geändert wird. Der Verweis auf die Datei im Verzeichnis wird entfernt. Ich vermute, Sie können auch einen Hardlink zu dieser Datei erstellen.
Izkata
@RobP. Wie das Skript zeigt, das ich zu meiner Antwortdatei hinzugefügt habe, können Sie diese nicht löschen. Sie benötigen Schreibzugriff auf das Verzeichnis.
BillThor
Der wichtigste Teil der Antwort ist, dass der Eigentümer die Berechtigungen ändern kann. Sie können diese Informationen am Anfang Ihrer Antwort einfügen.
Jeremy Stein
5

Ein Verzeichnis ist nur eine spezielle Art von Datei, daher gilt Folgendes für Verzeichnisse und Dateien gleichermaßen.

Als Eigentümer können Sie den Zugriff auf die Datei zurücksetzen, um die Datei dann lesen zu können. Anders als root können andere Benutzer dies nicht.

Bis Sie den Zugriff zurücksetzen, ist die Datei für Sie genauso unzugänglich wie für andere Benutzer.

Als Eigentümer der Datei können Sie diese nicht entfernen (löschen). Sie müssen Schreibzugriff auf das enthaltene Verzeichnis haben, um es entfernen zu können.

Beispielskript, das zeigt, was getan werden kann und was nicht. (Nicht als Root ausführen, sondern Sudo-Zugriff erforderlich.):

#!/bin/bash

DIR=directory$$
FILE=$DIR/file$$

echo We can remove it - own both file and directory
mkdir $DIR
date > $FILE
chmod 0000 $FILE
ls -ld $DIR $FILE
rm -f $FILE
ls -ld $DIR $FILE
echo

echo We can not remove it - no write access to directory
date > $FILE
chmod 0000 $FILE
chmod -w $DIR
ls -ld $DIR $FILE
rm -f $FILE
ls -ld $DIR $FILE
echo

echo We can remove it - even if we do not own it
chmod 0000 $FILE
chmod +w $DIR
sudo chown root:root $FILE
ls -ld $DIR $FILE
rm -f $FILE
ls -ld $DIR $FILE
echo

echo We can not remove it - even if we can read it - do not own directory
date > $FILE
cat $FILE
sudo chown root:root $DIR
ls -ld $DIR $FILE
cat $$FILE
rm -f $FILE
ls -ld $DIR $FILE
echo

sudo chown $LOGNAME $DIR
echo Now we can clean up
rm -f $FILE
rmdir $DIR

# EOF
BillThor
quelle
Entschuldigung, aber Sie können ein Verzeichnis / eine Datei mit 00000 als Berechtigungen entfernen, wenn Sie der Eigentümer sind.
Rinzwind
@Rinzwind Ich habe vor dem Posten überprüft. Das Löschen ist eine Änderung des enthaltenen Verzeichnisses. Sie müssen die Datei nicht besitzen oder darauf zugreifen können, um sie zu löschen, wenn Sie das Verzeichnis aktualisieren können, dem sie gehört.
BillThor
Richtig, aber es war Teil der Frage: Der Eigentümer besitzt das Verzeichnis und das Entfernen ist der 1 deutliche Unterschied zu dem, was jeder andere tun kann (außer root ofc.) :) Ich stimme auch Ihrer Einschätzung zu;) Der Grund für das Löschen von Sein Die Überprüfung des Verzeichnisses verhindert, dass Sie irreparable Fehler machen.
Rinzwind
3

Wenn mein Benutzerkonto der 'Eigentümer' eines Verzeichnisses ist, aber keine Berechtigungen hat (chmod 0000), kann mein Benutzer dann mehr tun als ein anderer zufälliger Benutzer im System?

Die einfache Antwort lautet: Nein , der Eigentümer hat keine andere Möglichkeit, Eigentümer des Verzeichnisses zu sein, wenn es geändert wird 0000. Weil das Berechtigungsbit für den Eigentümer auch ist 0, was bedeutet, dass er keine Lese- / Schreib- / Ausführungsberechtigungen hat.

Überprüfen Sie das Linux-Dateiberechtigungsbit

Anwar
quelle
1
Außer dass der Besitzer / die Gruppe es löschen kann;)
Rinzwind
3

Ja. Als Eigentümer können Sie sich chmodselbst die erforderlichen Berechtigungen erteilen.

Hammar
quelle