Sudo diz “comando não encontrado” para script no EncFS (sem acesso root ao EncFS mount?)

1

Quando um diretório criptografado é montado usando EncFS como um usuário comum, você não pode executar um script nele com sudo (como root):

$ sudo /run/media/yeti/usbdrive/encfs/test.sh
sudo: /run/media/yeti/usbdrive/encfs/test.sh: command not found

Este é um recurso de segurança, mas como posso ainda conceder permissões de root para este diretório montado (sem montar como root)?

Mais detalhes

Estou usando o Arch Linux e tenho um diretório criptografado usando EncFS :

sudo pacman -S encfs
usbpath="/run/media/yeti/usbdrive"
encfs "$usbpath/.encfs" "$usbpath/encfs"
echo 'echo hello world' > "$usbpath/encfs/test.sh"
sudo chmod +x "$usbpath/encfs/test.sh"

Então este comando funciona exatamente como esperado:

$ /run/media/yeti/usbdrive/encfs/test.sh
hello world

Mas quando eu uso o sudo, recebo um erro:

$ sudo /run/media/yeti/usbdrive/encfs/test.sh
sudo: /run/media/yeti/usbdrive/encfs/test.sh: command not found

Então percebi que este é um recurso de segurança do EncFS, que é realmente muito bom. Quando eu faço um diretório listando como root (depois de su ), eu encontro o seguinte:

$ ls /run/media/yeti/usbdrive/encfs/
ls: cannot access '/run/media/yeti/usbdrive/encfs': Permission denied
[...]
d?????????? ? ?    ?        ?            ?  encfs
drwxrwxrwx  1 yeti yeti     0 Sep 30 00:31  .encfs
[...]

Mas, no meu caso, estou em um sistema onde, na verdade, sou root e onde o sudo pode ser sem senha. Portanto, esse recurso de segurança está apenas atrapalhando. No entanto, eu não quero montar o diretório criptografado como root (porque então eu preciso executar o meu gerenciador de arquivos e outros aplicativos como root também).

O que eu fiz como solução para esse problema é copiar o arquivo fora do diretório criptografado ( cp "$usbpath/encfs/test.sh" /tmp/test.sh ) e, em seguida, executá-lo como root ( sudo /tmp/test.sh ).

Além de documentar essa pergunta para outras pessoas que podem ter o mesmo problema, a pergunta que ainda resta é: existe uma maneira melhor de fazer isso?

    
por Yeti 30.09.2017 / 12:09

1 resposta

1

Encfs usa fusível sob o capô. Inclui uma opção -o para passar opções para fundir. Adicionar -o allow_root permitirá que o root acesse o sistema de arquivos, além da montagem do usuário (observe também o similar, mas exclusivo allow_others flag). Para usar esta opção, você precisará habilitá-la na configuração do fusível. Em /etc/fuse.conf , adicione a diretiva user_allow_other

Veja mount.fuse (8) e encfs(1)

    
por 30.09.2017 / 17:10