O proprietário do diretório sshfs-mounted com permissão 777 não pode abri-lo (sem ACL, sem SELinux)

2

Portanto, tenho um problema de permissão com a minha montagem sshfs:

root@server01:/mnt# sshfs -o uid=$(id -u www-data) -o gid=$(id -g www-data) user@host:/path mountpoint
root@server01:/mnt# ls -Zlah
total 12K
drwxr-xr-x  3 root     root     ? 4.0K Nov 29 20:00 .
drwxr-xr-x 23 root         1001 ? 4.0K Nov 29 13:03 ..
drwxrwxrwx  1 www-data www-data ? 4.0K Nov 29 18:53 mountpoint
root@server01:/mnt# getfacl mountpoint/
# file: mountpoint/
# owner: www-data
# group: www-data
user::rwx
group::rwx
other::rwx
root@server01:/mnt# sudo -u www-data ls -lah
ls: cannot access mountpoint: Permission denied
total 8.0K
drwxr-xr-x  3 root root 4.0K Nov 29 20:00 .
drwxr-xr-x 23 root 1001 4.0K Nov 29 13:03 ..
d?????????  ? ?    ?       ?            ? mountpoint

Talvez o problema esteja aqui:

root@server01:/mnt# mount
# unrelated stuff skipped
user@host:/path/ on /mnt/mountpoint type fuse.sshfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0)

Aqui diz que o uid e gid da montagem são ambos 0, que é raiz. Mas no meu comando mount e ao usar o ls como root, ele me diz que tudo pertence ao gid / uid 33 que é www-data.

    
por Nobody 29.11.2016 / 20:33

1 resposta

3

sshfs = FUSE, você está montando como root e tentando acessar usando outro usuário.

para uma brincadeira / teste, você pode sshfs como usuário regular, então mude para root, cd, ohh permissão negada, como root pode ser negado, é raiz ...

execute o sshfs como o usuário que você deseja acessar.

atualize com o exemplo:

**test**@mike-laptop4:/mnt$ sshfs [email protected]:/home/mike moo
test@mike-laptop4:/mnt$ ls moo/
src
mike@mike-laptop4:/mnt$ ls moo 
ls: cannot access 'moo': Permission denied
mike@mike-laptop4:/mnt$ sudo su
root@mike-laptop4:/mnt# ls moo 
ls: cannot access 'moo': Permission denied

e vice-versa:

**mike**@mike-laptop4:/mnt$ sshfs [email protected]:/home/mike moo
mike@mike-laptop4:/mnt$ ls moo
src
test@mike-laptop4:/mnt$ ls moo
ls: cannot access 'moo': Permission denied
mike@mike-laptop4:/mnt$ sudo su
root@mike-laptop4:/mnt# ls moo
ls: cannot access 'moo': Permission denied

UPDATE, expandir as soluções:

Solução 1 : monte como o usuário solicitou para acessar os dados (preferência de segurança).

$ sshfs [email protected]:/home/mike moo

O uso dessa opção permitirá que apenas o usuário de montagem acesse os dados.

A seguinte solução 2x requer (a menos que seja montada como root, a raiz não deve ser usada para sshfs);

/etc/fuse.conf user_allow_other

Solução 2 : permite que qualquer usuário acesse a caixa

$ sshfs -o allow_other [email protected]:/home/mike moo

Literalmente qualquer usuário no host de origem pode criar, editar, deletar arquivos, esta é uma idéia terrível na maioria das circunstâncias, e eu não posso imaginar que alguma vez seria permitido em um ambiente PCI.

Você não só arrisca todos os dados no controle remoto, como também corre o risco de um usuário local manipular dados que podem ser usados posteriormente por outro usuário local.

Solução 3 : permite a qualquer usuário na caixa, mas honra o sistema de arquivos local permanente.

$ sshfs -o allow_other,default_permissions [email protected]:/home/mike moo

Esta opção é muito mais aceitável do que a anterior devido ao fato de que apenas usuários autorizados pelo sistema de arquivos local terão permissão para acessar / editar arquivos na montagem.

Também seria possível configurar permissões baseadas em grupos.

    
por 29.11.2016 / 21:11