詳しくは

詳しくは

インストール暗号化ディレクトリを使用している場合エンコードされたファイルシステム一般ユーザーは、root権限でsudoを使用してその中にあるスクリプトを実行することはできません。

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

これはセキュリティ機能ですが、rootとしてインストールせずにこのインストールディレクトリにroot権限を付与するにはどうすればよいですか?

詳しくは

使っていますアーキテクチャLinux、次を使用して暗号化されたディレクトリがあります。エンコードされたファイルシステム:

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"

これにより、このコマンドは期待どおりに機能します。

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

しかし、sudoを使用すると、次のエラーが発生します。

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

後でこれがEncFSのセキュリティ機能であることに気づきました。実際には良い機能でした。ディレクトリをroot(以降)としてリストすると、su次のものが見つかります。

$ 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
[...]

しかし、私の場合、私が使用しているシステムは実際にはルートであり、sudoにパスワードがない可能性があります。したがって、このセキュリティ機能は妨害としてのみ機能します。ただし、暗号化されたディレクトリをrootとしてマウントしたくありません(ファイルマネージャと他のアプリケーションもrootとして実行する必要があるため)。

この問題に対する私の解決策は、暗号化されたディレクトリ()の外にファイルをコピーしてからルートcp "$usbpath/encfs/test.sh" /tmp/test.shsudo /tmp/test.sh)として実行することでした。

同じ問題が発生する可能性がある他の人のためにこの問題を文書化することに加えて、私に残った質問は次のとおりです。これを行うより良い方法はありますか?

答え1

Encfsはフードの下にヒューズを使用します。-oオプションを融合に渡すオプションが含まれています。追加すると、-o allow_rootルートはユーザーのマウントに加えてファイルシステムにアクセスできます(同様ですが、排他的なallow_othersフラグも参照してください)。このオプションを使用するには、サーキットブレーカ設定で有効にする必要があります。でディレクティブを/etc/fuse.conf追加します。user_allow_other

バラより取付・ヒューズ(8)そして環境ファイルシステム(1)

関連情報