GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Mounten Sie mit sshfs und schreiben Sie Dateiberechtigungen

Die Frage wurde in einer Linux-Mailingliste beantwortet; Der Vollständigkeit halber poste ich hier eine übersetzte Antwort.

Lösung

Die Lösung besteht darin, nicht beide Optionen default_permissions zu verwenden und allow_other (was ich in meinen ursprünglichen Experimenten nicht ausprobiert habe).

Erklärung

Das Problem scheint ganz einfach zu sein. Wenn Sie die Option default_permissions angeben in fusermount dann wird die Berechtigungssteuerung von fuse durch den Kernel gehandhabt und nicht durch Sicherung . Das bedeutet, dass die uid/gid des REMOTE_USER nicht dem LOCAL_USER zugeordnet werden (sshfs.c IDMAP_NONE). Es funktioniert genauso wie ein einfaches nfs fs ohne Mapping.

Es ist also sinnvoll, den Zugriff zu verbieten, wenn die uid/gid-Nummern nicht übereinstimmen.

Wenn Sie die Option allow_other haben dann ist dieses Verzeichnis nur vom lokalen Benutzer mit UID 699 beschreibbar, falls es existiert.

Vom Mann der Sicherung:

'default_permissions'

   By default FUSE doesn't check file access permissions, the
   filesystem is free to implement its access policy or leave it to
   the underlying file access mechanism (e.g. in case of network
   filesystems).  This option enables permission checking, restricting
   access based on file mode.  It is usually useful together with the
   'allow_other' mount option.

'allow_other'

   This option overrides the security measure restricting file access
   to the user mounting the filesystem.  This option is by default only
   allowed to root, but this restriction can be removed with a
   (userspace) configuration option.

Führen Sie sshfs nicht mit sudo aus. Wenn Sie das tun, geht ssh davon aus, dass das Dateisystem root gehört. Führen Sie es als Sie selbst aus, dann können Sie in die Dateien schreiben.

Klarstellung

Wenn Sie ohne sudo laufen, müssen Sie in Ihrem eigenen Verzeichnis mounten, da Sie wahrscheinlich nicht in /mnt schreiben können. Hier ist also ein Beispiel für die Verwendung von sshfs, nachdem Sie user_allow_other zu /etc/fuse.conf hinzugefügt haben:

$ cd                      # make sure you are in home directory
$ mkdir mnt               # create empty directory
$ sshfs server.com: mnt   # mount my home directory on server.com on ./mnt
$ ls mnt
[contents of home directory on server]
$ touch mnt/new_file      # no problem creating a new file
$ fusermount -u mnt       # unmount file system
$ rmdir mnt

Ein möglicher Grund dafür – einer, auf den ich stieß – war, dass ich keinen freien Speicherplatz mehr auf der Festplatte hatte, die ich gemountet hatte.


Linux
  1. Wie aktiviere ich Unix-Dateiberechtigungen auf Samba Share mit Smb 2.0+?

  2. Linux – Mount Cifs Network Drive:Schreibrechte und Chown?

  3. So ändern Sie Datei- und Verzeichnisberechtigungen mit dem Dateimanager

  4. Überprüfen Sie die Linux-Dateiberechtigungen mit ls

  5. So erstellen und mounten Sie das Btrfs-Dateisystem (mit Beispielen erklärt)

So mounten und unmounten Sie Dateisysteme in Linux

Mounten Sie einen Remote-Ordner mit sshfs

Linux-Dateiberechtigungen und Eigentumsrechte mit Beispielen erklärt

Verwalten Sie Verzeichnis- und Dateiberechtigungen mit chmod Recursive

Linux-Mount-Befehl mit Beispielen

Dateiberechtigungen mit Git beibehalten