Was genau passiert hier?
root@bob-p7-1298c:/# ls -l /tmp/report.csv && lsof | grep "report.csv"
-rw-r--r-- 1 mysql mysql 1430 Dec 4 12:34 /tmp/report.csv
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
privileges
lsof
fuse
jmunsch
quelle
quelle
lsof
(ohne das|
und grep) ausgeben ?lsof
eine große Liste der geöffneten Dateien ausgegeben. Ich denke, es ist ein Nebenthema. Ich dachte, dass die Datei möglicherweise von einem Prozess offengehalten wurde und dass dies möglicherweise der Grund dafür war, dass root die Datei nicht verschieben konnte, aber dies scheint nicht der Fall zu sein. Daher die Verwirrung.can't stat...
ist ein anderes Problem. Ich nehme an, das eigentliche Problem ist derNo such file or directory
Fehler, den Sie bekommen. Das mag idiotisch klingen, aber existiert der Speicherort / home / bob / Desktop?Antworten:
FUSE und seine Zugriffsrechte
lsof
Standardmäßig werden alle gemounteten Dateisysteme überprüft, einschließlich FUSE- Dateisysteme, die im Benutzerbereich implementiert sind und unter Linux über besondere Zugriffsrechte verfügen.Wie Sie in dieser Antwort auf Ask Ubuntu sehen können, ist ein gemountetes GVFS- Dateisystem (Sonderfall von FUSE) normalerweise nur für den Benutzer zugänglich, der es gemountet hat (der Besitzer von
gvfsd-fuse
). Auchroot
kann nicht darauf zugreifen. Um diese Einschränkung aufzuheben, können Sie die Mount-Optionenallow_root
und verwendenallow_other
. Die Option muss auch im FUSE-Dämon aktiviert sein, der zum Beispiel in dieser Antwort beschrieben wird. In Ihrem Fall müssen (und sollten) Sie jedoch die Zugriffsrechte nicht ändern.Dateisysteme von lsof ausschließen
In Ihrem Fall
lsof
müssen Sie die GVFS-Dateisysteme nicht überprüfen, damit Sie diestat()
Aufrufe mit der-e
Option ausschließen können (oder Sie können das Waring einfach ignorieren):Überprüfen bestimmter Dateien durch lsof
Sie verwenden
lsof
, um Informationen zu allen auf Ihrem System ausgeführten Prozessen abzurufen, und filtern erst dann die gesamte Ausgabe mitgrep
. Wenn Sie nur bestimmte Dateien und die zugehörigen Prozesse überprüfen möchten, verwenden Sie die-f
Option ohne einen Wert, der direkt darauf folgt, und geben Sie eine Liste der Dateien nach dem Trennzeichen "Ende der Optionen" an--
. Dies wird erheblich schneller sein.Allgemeine lösung
Um alle gemounteten Dateisysteme auszuschließen, auf denen ein
stat()
Fehler auftritt, können Sie Folgendes ausführen (inbash
):Oder um sicher zu gehen
stat()
(test -e
könnte auch anders implementiert werden):quelle
lsof
versucht immer, einige grundlegende Informationen über alle Dateisysteme abzurufen, auch wenn die Argumente implizieren, dass von einem bestimmten Dateisystem kein Ergebnis kommt. Wenn es nicht in der Lage ist, auf ein Dateisystem zuzugreifen (insbesondere, umstat
an seinem Einhängepunkt aufzurufen , wie in der Nachricht angegeben), beschwert es sich.Als Root hätten Sie normalerweise die Berechtigung, auf Dateisysteme zuzugreifen. Aufgrund der inneren Funktionsweise von FUSE verfügt root jedoch nicht automatisch über alle Funktionen eines FUSE-Dateisystems. Dies ist keine Sicherheitsfunktion (root kann der Benutzer werden, der das Dateisystem besitzt und auf diese Weise Zugriff erhält), sondern eine technische Einschränkung.
GVFS-FUSE ist eine FUSE-Schnittstelle zu GVFS. Dies ist ein Mechanismus, mit dem Gnome-Anwendungen auf virtuelle Dateisysteme zugreifen können, die von Gnome-Plugins implementiert wurden: GVFS gewährt Nicht-Gnome-Anwendungen über die reguläre Dateisystemschnittstelle Zugriff auf diese virtuellen Dateisysteme.
quelle