GNU/Linux >> Znalost Linux >  >> Linux

Připojte pomocí sshfs a oprávnění k zápisu do souboru

Otázka byla zodpovězena v linuxovém mailing listu; Pro úplnost zde zveřejňuji přeloženou odpověď.

Řešení

Řešením je nepoužívat obě možnosti default_permissions a allow_other (což jsem ve svých původních experimentech nezkoušel).

Vysvětlení

Problém se zdá být docela jednoduchý. Když dáte možnost default_permissions v fusermount pak kontrolu oprávnění fuser uchycení pojistky řeší kernel a ne pomocí pojistky . To znamená, že uid/gid REMOTE_USER nejsou mapovány na LOCAL_USER (sshfs.c IDMAP_NONE). Funguje to stejně jako jednoduchý nfs fs bez mapování.

Takže má smysl zakázat přístup, pokud se čísla uid/gid neshodují.

Pokud máte možnost allow_other pak do tohoto adresáře může zapisovat pouze místní uživatel s uid 699, pokud existuje.

Od pojistkového muže:

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

Nespouštějte sshfs pomocí sudo. Pokud to uděláte, ssh bude považovat souborový systém za root. Spusťte jej jako vy, pak budete moci zapisovat do souborů.

vysvětlení

Když běžíte bez sudo, musíte se připojit na svůj vlastní adresář, protože pravděpodobně nemůžete zapisovat do /mnt. Zde je příklad, jak používat sshfs, jakmile přidáte user_allow_other do /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

Jedním z možných důvodů - jedním, který jsem zasáhl - bylo to, že na disku, který jsem připojil, už nebylo volné místo.


Linux
  1. Jak povolit oprávnění k souborům Unix na sdílení Samba s Smb 2.0+?

  2. Linux – Mount Cifs Network Drive:Oprávnění k zápisu a Chown?

  3. Jak změnit oprávnění k souborům a adresářům pomocí Správce souborů

  1. Oprávnění souborů v Linuxu s příkladem

  2. Zkontrolujte oprávnění souborů Linux pomocí ls

  3. Jak vytvořit a připojit souborový systém Btrfs (vysvětleno na příkladech)

  1. Oprávnění a ukládání souborů?

  2. Oprávnění souborů v Linuxu – čtení/zápis/spouštění

  3. AWK a názvy souborů s mezerou.