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?