GNU/Linux >> Tutoriels Linux >  >> Linux

Monter avec sshfs et écrire les autorisations de fichiers

La question a été répondue dans une liste de diffusion Linux; Je poste une réponse traduite ici pour être complet.

Solution

La solution est de ne pas utiliser les deux options default_permissions et allow_other (ce que je n'ai pas essayé dans mes expériences originales).

Explication

Le problème semble assez simple. Lorsque vous donnez l'option default_permissions dans fusermount, le contrôle des autorisations de fuse sur le montage du fusible est géré par le noyau et non par fusible . Cela signifie que les uid/gid de REMOTE_USER ne sont pas mappés sur LOCAL_USER (sshfs.c IDMAP_NONE). Cela fonctionne de la même manière qu'un simple nfs fs sans mappage.

Il est donc logique d'interdire l'accès si les numéros uid/gid ne correspondent pas.

Si vous avez l'option allow_other alors ce répertoire est accessible en écriture uniquement par l'utilisateur local avec l'uid 699, s'il existe.

De l'homme du fusible :

'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.

N'exécutez pas sshfs avec sudo. Si vous faites cela, ssh considérera que le système de fichiers appartient à root. Exécutez-le en tant que vous-même, vous pourrez alors écrire dans les fichiers.

clarification

Lorsque vous exécutez sans sudo, vous devez monter sur votre propre répertoire, car vous ne pouvez probablement pas écrire sur /mnt. Voici donc un exemple d'utilisation de sshfs une fois que vous avez ajouté user_allow_other à /etc/fuse.conf :

$ 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

Une des raisons possibles à cela - celle que j'ai trouvée - était que je n'avais plus d'espace libre sur le disque que j'ai monté.


Linux
  1. Comment activer les autorisations de fichiers Unix sur le partage Samba avec Smb 2.0+ ?

  2. Linux – Mount Cifs Network Drive :Autorisations d'écriture et Chown ?

  3. Vérifiez les autorisations de fichiers Linux avec ls

  4. Comment écrire un fichier avec C sous Linux ?

  5. Conserver les autorisations de fichiers avec Git

Comment monter et démonter des systèmes de fichiers sous Linux

Monter un dossier distant avec sshfs

Autorisations et propriété des fichiers Linux expliquées avec des exemples

Autorisations de fichiers sous Linux – Lecture/Écriture/Exécution

Gérer les autorisations de répertoire et de fichier avec chmod Recursive

Commande de montage Linux avec exemples