chmod 777 ändert die Berechtigungen nicht auf 777

chmod 777 ändert die Berechtigungen nicht auf 777

Ich versuche, die Berechtigungen von temp_dir auf 777 zu ändern. Warum funktionieren diese Befehle nicht? Ich verwende übrigens Linux.

kylefoley@kfoley76:/mnt/disks$ chmod 777 /mnt/disks/temp_dir
kylefoley@kfoley76:/mnt/disks$ stat -c "%a %n" temp_dir
755 temp_dir

Ich habe auch den ausführlichen Schalter ausprobiert

kylefoley@kfoley76:/mnt/disks$ chmod -v 777 /mnt/disks/temp_dir
mode of '/mnt/disks/temp_dir' changed from 0755 (rwxr-xr-x) to 0777 (rwxrwxrwx)
kylefoley@kfoley76:/mnt/disks$ stat -c "%a %n" temp_dir
755 temp_dir

Ich verstehe auch nicht, warum ich nicht verwenden kannsudo

kylefoley@kfoley76:/mnt/disks/temp_dir$ sudo chmod 777 fix_mistakes
chmod: cannot access 'fix_mistakes': Permission denied

Auch wenn ich mich als Root-Benutzer anmelde

kylefoley@kfoley76:/mnt/disks/temp_dir$ sudo -i
root@kfoley76:~# sudo chmod 777 /mnt/disks/temp_dir
chmod: cannot access '/mnt/disks/temp_dir': Permission denied

Ich sollte auch hinzufügen, dass dieser Fehler etwas damit zu tun haben muss, dass das betreffende Verzeichnis eine von gcsfuse gemountete Festplatte ist, die über gcloud verfügbar ist. Andere Versuche, die Berechtigungen zu ändern, funktionierten einwandfrei:

kylefoley@kfoley76:~$ mkdir hey
kylefoley@kfoley76:~$ stat -c "%a %n" hey
755 hey
kylefoley@kfoley76:~$ chmod 777 hey
kylefoley@kfoley76:~$ stat -c "%a %n" hey
777 hey

Antwort1

gcsfuse legt beim Mounten Datei- und Verzeichnisberechtigungen fest. Im Einzelnen sind die Optionen:

  • file_mode– Berechtigungsbits für Dateien, in Oktal
  • dir_mode– Berechtigungsbits für Verzeichnisse, in Oktal

Quelle:https://github.com/GoogleCloudPlatform/gcsfuse/blob/e0a0e0826897b09581c24065fb6a92912ee79d03/flags.go#L78

Wenn Sie die Optionen nicht angeben, lauten die Standardeinstellungen dir_mode=0755,file_mode=0644.

Quelle:https://github.com/GoogleCloudPlatform/gcsfuse/blob/e0a0e0826897b09581c24065fb6a92912ee79d03/flags.go#L51

Diese Optionen gelten für alle Dateien und Verzeichnisse im Mount. Dieses FUSE-Dateisystem verfügt nicht über die Möglichkeit, die Berechtigungen für bestimmte Dateien oder Verzeichnisse zu ändern, weshalb chmodnichts geschieht.


Darüber hinaus verfügt gcsfuse über zusätzliche Zugriffsbeschränkungen, die den Zugriff auf den Benutzer beschränken, der das Dateisystem gemountet hat. Einzelheiten:

Als Sicherheitsmaßnahme beschränkt fuse selbst den Dateisystemzugriff auf den Benutzer, der das Dateisystem gemountet hat (vgl.Sicherung.txt). Aus diesem Grund zeigt gcsfuse standardmäßig alle Dateien als Eigentum des aufrufenden Benutzers an. Sie sollten gcsfuse daher als der Benutzer aufrufen, der das Dateisystem verwenden wird, und nicht als Root.

Wenn Sie wissen, was Sie tun, können Sie diese Verhaltensweisen überschreiben mit demallow_otherMount-Option wird von Fuse unterstützt und mit den Flags --uidund , die --gidvon gcsfuse unterstützt werden. Seien Sie vorsichtig, dies kann Auswirkungen auf die Sicherheit haben!

Quelle:https://github.com/GoogleCloudPlatform/gcsfuse/blob/d25be2491879e3745c3ed3d8e816774defc1cc5c/docs/mounting.md#access-permissions

Aus diesem Grund können Sie als anderer Benutzer nicht auf die Einbindung zugreifen. Um anderen Benutzern den Zugriff auf die Einbindung zu ermöglichen, geben Sie dies allow_otherin Ihren Einbindungsoptionen an.

Antwort2

Ich konnte das Problem folgendermaßen lösen: Ich musste zu den Cloud API-Zugriffsbereichen gehen und unter der VM-Konfiguration überprüfen, ob Lese-, Schreib- oder Vollzugriff auf den Speicher besteht. Dazu musste ich in der gcloud-Konsole, in der meine Instanzen aufgelistet sind, auf „Bearbeiten“ klicken. Unten auf der Seite gab es die Speicherbeschränkung, die ich auf „Voll“ geändert habe. Das hat es geschafft.

verwandte Informationen