keepassxc実行可能ファイルにのみキーファイルへのアクセスを制限します。

keepassxc実行可能ファイルにのみキーファイルへのアクセスを制限します。

KDBXを手に入れることができたらいいのにキーファイル(およびルート)以外に誰もアクセスでき$HOMEないようにkeepassxc自分を除いても

私の唯一の解決策は、実行可能ファイルのビットを使用してキーファイルに適切なグループメンバーシップを提供することでしたが、残念ながらkeepassxcのGUIはGTK +アプリケーションであるため、またはビットが気に入らsetgidず、自己終了が検出されたときに発生します。setuidsetgid

仮想KDBXボルトとキーファイルを使用してテスト環境を設定するには、次の手順を実行します。

sudo addgroup keepassxc

sudo chgrp keepassxc $(which -P keepassxc)
sudo chmod g+s $(which -P keepassxc)

# to revert back afterwards:
# sudo delgroup keepassxc
# sudo chgrp root $(which -P keepassxc)
# sudo chmod g-s $(which -P keepassxc)

# create test files
keepassxc-cli db-create -p -k key.file test.kdbx
chmod -rwx,g+r key.file
sudo chown root:keepassxc key.file

# access test
keepassxc --keyfile key.file test.kdbx # should succeed
sha256sum key.file                     # should fail

しかし、前述したように、keepassxc GUIは次のように終了します。

Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.

(process:102257): Gtk-WARNING **: 19:45:45.157: This process is currently running setuid or setgid.
This is not a supported use of GTK+. You must create a helper
program instead. For further details, see:

    http://www.gtk.org/setuid.html

Refusing to initialize GTK+.

私はもはやkeepassxcを台無しにすることを拒否します。制限されたビットsetu/gidには妥当な理由が必要です。

私のアプローチに対する解決策を知っていますか?望ましいですか?
上記のヘルパーの単純なテンプレート/ソリューションはありますか?ただ大きな打撃?
単一の実行可能ファイルの制限されたファイルアクセス目標を達成するためのより良い方法はありますか?

ベストアンサー1

ちょっとした調査の終わりに@muruのおかげで動作することがわかりました。安全に見える解決策。

sudo特定のユーザーとホストが特定のコマンドに対してグループ切り替えを実行できるようにするために使用されます。keepassxcバイナリの権限を変更する必要はありません。

グループとキーファイルを設定したら(上記の質問のコードブロックを参照)、新しいsudoersファイルを作成します。たとえば、次のようになります。

# creation
echo "$USER $HOSTNAME=(:keepassxc) NOPASSWD:NOEXEC:NOFOLLOW: /usr/bin/keepassxc" \
| sudo tee /etc/sudoers.d/keepassxc

# validation
sudo visudo -sc /etc/sudoers.d/keepassxc

これにより、$USERコマンドはグループのメンバーとしてのみ実行できます。コマンド文字列は正確である必要があるため、後でkeepassxcに追加のパラメータを渡したり絶対パスを変更したりするには、sudoersファイルにも反映する必要があります。それ以外の場合はsudoによって拒否されます。/usr/bin/keepassxc(:keepassxc)

権限のない環境でkeepassxcを起動する最後のコマンドは、簡単にエイリアスにできることです$USERsudo -g keepassxc /usr/bin/keepassxc

おすすめ記事