sshfs não respeitam o mapeamento de UID / GID

2

Estou montando meu diretório / home remotamente usando o sshfs. Como os UIDs e os GIDs não são os mesmos no servidor e no cliente, estou usando idmap=file . Além disso, devido aos requisitos do aplicativo, devo montar todos os diretórios / home em vez de individuais.

sshfs_uids:

user1:1001
user2:1000

sshfs_gids:

user1:1001
user2:1000

Comando para montar:

sudo sshfs -o nonempty -o transform_symlinks -o hard_remove -o allow_other -o nomap=ignore -o idmap=file -o uidfile=/root/sshfs_uids -o gidfile=/root/sshfs_gids root@myserver:/home /home

Ao ler arquivos, tudo funciona conforme o esperado (arquivos que devem pertencer ao user1: user1 são realmente assim). No entanto, quando escrevo como user1, isso acontece:

user1@myclient:~$ touch foo
user1@myclient:~$ ls -l foo
-rw-r--r--. 1 root root 0 Jun 13 13:54 foo

Meu usuário escreve arquivos como root! Mesmo fazendo um ls -l do meu servidor, fica com a mesma propriedade de root. Posso corrigi-lo manualmente, embora:

user1@myclient:~$ chown user1:user1 foo
user1@myclient:~$ ls -l foo
-rw-r--r--. 1 user1 user1 0 Jun 13 13:54 foo

É possível, usando uma opção sshfs ou fuser, fazer com que novos arquivos sejam de propriedade do usuário que os criou? Caso contrário, posso fazer com que o sshfs ou o fusor chame um script personalizado toda vez que um arquivo é gravado, para que eu possa corrigir a propriedade do arquivo usando o chown?

EDITAR:
Se nenhuma das opções acima for possível, alguém pode recomendar algum software alternativo de sistema de arquivos remoto que seja:

  • seguro para uso na internet pública
  • transparente (após a instalação) para usuários / scripts (portanto, não scp simples)     
  • por Nathan Vance 13.06.2017 / 16:27

    2 respostas

    0

    Para qualquer um que tenha um problema semelhante, descobri que o nfs de tunelamento ssh fez o truque.

    / etc / exports em myserver :

    /home localhost(insecure,rw,sync,no_subtree_check,no_root_squash)
    

    /etc/idmap.conf em myserver e myclient ( citação ):

    ...
    Domain = localdomain
    ...
    

    /etc/modprobe.d/nfsd.conf em myserver :

    options nfsd nfs4_disable_idmapping=0
    

    /etc/modprobe.d/nfs.conf em myclient :

    options nfs nfs4_disable_idmapping=0
    

    Os dois arquivos acima definem /sys/module/nfsd/parameters/nfs4_disable_idmapping e /sys/module/nfs/parameters/nfs4_disable_idmapping como "N" na inicialização ( citação ).

    Reinicialize ou reinicie os serviços relacionados a nfs / idmap em ambas as máquinas e execute nfsidmap -c . Então, tunelize a conexão :

    user1@myclient:~$ ssh -fN -L 3049:localhost:2049 user1@myserver
    user1@myclient:~$ sudo mount -t nfs4 -o port=3049 localhost:/home /home
    

    Neste ponto, o firewall para myserver só precisa estar aberto na porta 22, e o tráfego nfs será tão seguro quanto o ssh.

    EDITAR:
    Isso não funcionou, mas só pareceu funcionar. Aparentemente, enquanto alguém poderia pensar que o idmap deveria mapear IDs, isso não acontece. Pelo menos, isso só acontece em um nível alto, então certas operações passam despercebidas.

        
    por 15.06.2017 / 17:55
    0

    Eu suspeito que você estava tentando montar sshfs com root (sudo), portanto seus arquivos serão criados com o usuário que o sistema de arquivos foi montado.

        
    por 11.01.2018 / 23:23