Datei mit rw-Zugriff nicht löschbar

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
Benutzeravatar
MartinV
Beiträge: 788
Registriert: 31.07.2015 19:38:52
Wohnort: Hyperion
Kontaktdaten:

Datei mit rw-Zugriff nicht löschbar

Beitrag von MartinV » 20.03.2017 16:15:23

Hallo!

Ich habe hier eine Datei,von root erzeugt, und mit chmod 666 Lese/Schreibzugriff für alle gesetzt. Ich kann sie als normaler User aber trotzdem nicht löschen:

Code: Alles auswählen

$ ls -l /home/lauscher/.cache/x11docker/X512/share/socket/X512
srw-rw-rw- 1 root root 0 Mär 20 15:36 /home/lauscher/.cache/x11docker/X512/share/socket/X512
$ rm /home/lauscher/.cache/x11docker/X512/share/socket/X512
rm: das Entfernen von '/home/lauscher/.cache/x11docker/X512/share/socket/X512' ist nicht möglich: Die Operation ist nicht erlaubt
Warum? (Nebenbei ist mir nicht klar, was das "s" in der Ausgabe von ls bedeutet).
Die Vernunft kann einem schon leidtun. Sie verliert eigentlich immer.

halo44
Beiträge: 703
Registriert: 12.05.2015 15:19:13

Re: Datei mit rw-Zugriff nicht löschbar

Beitrag von halo44 » 20.03.2017 16:21:04

was zeigt

Code: Alles auswählen

lsattr Dateiname
Gruss H.

Benutzeravatar
MartinV
Beiträge: 788
Registriert: 31.07.2015 19:38:52
Wohnort: Hyperion
Kontaktdaten:

Re: Datei mit rw-Zugriff nicht löschbar

Beitrag von MartinV » 20.03.2017 17:23:26

lsattr gibt eine Fehlermeldung, als user wie auch als root:

Code: Alles auswählen

# lsattr /home/lauscher/.cache/x11docker/X512/share/socket/X512
lsattr: Die Operation wird nicht unterstützt Beim Lesen der Flags von /home/lauscher/.cache/x11docker/X512/share/socket/X512
Vielleicht liegt eine Fehlerursache darin, daß die Datei ursprünglich von einem docker container erzeugt wurde. Der Container ist beendet und gelöscht.
Die Datei war ein unix socket für einen X server. Der X server ist beendet.
Die Vernunft kann einem schon leidtun. Sie verliert eigentlich immer.

Benutzeravatar
jph
Beiträge: 1049
Registriert: 06.12.2015 15:06:07
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Greven/Westf.

Re: Datei mit rw-Zugriff nicht löschbar

Beitrag von jph » 20.03.2017 17:27:22

MartinV hat geschrieben:(Nebenbei ist mir nicht klar, was das "s" in der Ausgabe von ls bedeutet).
https://de.m.wikipedia.org/wiki/Unix-Dateirechte

Benutzeravatar
MartinV
Beiträge: 788
Registriert: 31.07.2015 19:38:52
Wohnort: Hyperion
Kontaktdaten:

Re: Datei mit rw-Zugriff nicht löschbar

Beitrag von MartinV » 20.03.2017 17:44:27

Nützlicher Link, danke! Da wird einiges erklärt, was mir anderswo unklar blieb.
Soweit ich sehe,steht das kleine s für setuid oder setgid, was mir die Blockade nicht erklärt.
Ein kleines t für "sticky" wäre eine Erklärung, warum Löschen verboten ist. Insofern bleibt mir unklar, warum das Verbot bestehen bleibt.
Ich setze jetzt chmod 0666, jetzt kann ich die Datei als user löschen, das Problem ist insoweit gelöst. :)
Das Rätsel als solches bleibt ... :roll:
Die Vernunft kann einem schon leidtun. Sie verliert eigentlich immer.

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: Datei mit rw-Zugriff nicht löschbar

Beitrag von MSfree » 20.03.2017 17:51:52

MartinV hat geschrieben:Soweit ich sehe,steht das kleine s für setuid oder setgid
Nein, der erste Buchstabe in srw-rw-rw- steht für den Dateityp:
d steht für directory
c steht für character special device
l steht für symbolic link
s steht (AFAIK) für socket special device

Ein gesetztes SUID würde so aussehen:
-rwsr-xr-x

Benutzeravatar
MartinV
Beiträge: 788
Registriert: 31.07.2015 19:38:52
Wohnort: Hyperion
Kontaktdaten:

Re: Datei mit rw-Zugriff nicht löschbar

Beitrag von MartinV » 20.03.2017 18:40:14

Ein gesetztes SUID würde so aussehen:
-rwsr-xr-x
Ah, ok, danke!
Ich habe mal testweise chmod 777 gesetzt, um zu sehen, ob dann vielleicht ein sticky-bit erkennbar wird, aber es erscheint nur x für ausführbar:

Code: Alles auswählen

$ ls -l /home/lauscher/.cache/x11docker/X501/share/socket/X501
srwxrwxrwx 1 root root 0 Mär 20 18:25 /home/lauscher/.cache/x11docker/X501/share/socket/X501
Ich setze jetzt chmod 0666, jetzt kann ich die Datei als user löschen, das Problem ist insoweit gelöst. :)
Ich muß mich korrigieren: Das Problem tritt wieder auf bzw. war nie weg. :( Es schien nur verschwunden zu sein, weil bei Experimenten vorhin root im container die Dateien gelöscht hat, nicht der user auf dem host. chmod 0666 macht also keinen Unterschied.
Die Vernunft kann einem schon leidtun. Sie verliert eigentlich immer.

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: Datei mit rw-Zugriff nicht löschbar

Beitrag von MSfree » 20.03.2017 18:54:42

MartinV hat geschrieben:Ich habe mal testweise chmod 777 gesetzt, um zu sehen, ob dann vielleicht ein sticky-bit erkennbar wird, aber es erscheint nur x für ausführbar:
Das sticky Bit würde am Ende als "T" sichtbar werden. Um das sticky Bit zu setzen, mußt du chmod 1777 Dateiname eingeben, die erste Oktalziffer (hier 1) setzt das sticky bit.
Ich muß mich korrigieren: Das Problem tritt wieder auf bzw. war nie weg.
Da es keine normale Datei sondern eine Socket ist, kann es sein, daß du sie solange nicht löschen darfst, solange sie in Benutzung ist.

Schau doch mal, ob lsof | grep X501 anzeigt, daß jemand die Socket benutzt.

Benutzeravatar
MartinV
Beiträge: 788
Registriert: 31.07.2015 19:38:52
Wohnort: Hyperion
Kontaktdaten:

Re: Datei mit rw-Zugriff nicht löschbar

Beitrag von MartinV » 20.03.2017 19:33:18

Schau doch mal, ob lsof | grep X501 anzeigt, daß jemand die Socket benutzt.
Das ist eine gute Idee!
Als user:

Code: Alles auswählen

$ lsof | grep X501
lsof: WARNING: can't stat() aufs file system /sda7docker/docker.storage/aufs/mnt/888f31029adfe52a522dc9c39c09d2584f51283113a4c99f3424c8de2aef413f
      Output information may be incomplete.
lsof: WARNING: can't stat() tmpfs file system /sda7docker/docker.storage/containers/4add640b3c04cf17ce91031ef659e8667d15d6314da4ab481157079582c2e763/shm
      Output information may be incomplete.
lsof: WARNING: can't stat() nsfs file system /run/docker/netns/59dd8d53292d
      Output information may be incomplete.
Als root:

Code: Alles auswählen

# lsof | grep X501
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
Seltsam, daß ich als root weniger Informationen bekomme denn als user, dennoch ein Hinweis, daß docker immer noch irgendwie den Finger auf die Datei legt, obwohl der Container, der sie erzeugt hat, längst Geschichte ist.
root kann die Datei problemlos löschen; lsof zeigt nach dem Löschen aber immer noch dieselbe Ausgabe.

Edit: docker beenden mit systemctl stop docker macht keinen Unterschied.
Ein reboot führt dazu, daß lsof nichts mehr anzeigt; die Datei ist trotzdem nicht löschbar.
Die Vernunft kann einem schon leidtun. Sie verliert eigentlich immer.

Antworten