特定のユーザーを認証せずにudisksctlが設定を繰り返すことを許可する

特定のユーザーを認証せずにudisksctlが設定を繰り返すことを許可する

ディスク容量が不足している状況でプログラムの動作を確認するためのいくつかのテストがあります。以前は、dd小さなファイルを作成し、mkfsその上にファイルシステムを作成し、sudo losetupそれをループバックデバイスとしてマウントし、テストを実行しました(注意してここでは適切ではありません。/dev/fullテストはディレクトリにあるため、次から始める必要があります)。スペースを確保してから使用してください)。

ただし、テストを実行するためにアカウントにアクセスできないCI / CD環境に移動しているため、sudo代替手段が必要です。

udisksctl私のシステムではうまくいきloop-setupますが、CI / CDシステムで実行しても認証エラーが発生します。注意深く読んでみると、ユーザーのログインが必要なので、リモートサービスでは十分ではないようです。

完全なsudoアクセス権を取得することはできませんが、このアカウントがループバックデバイスを管理できるようにpolkit例外をインストールできます。ループバックの管理に関するさまざまなセクションを見て、/usr/share/polkit-1/actions/org.freedesktop.UDisks2.policyこのファイルを編集して許可するSO質問をたくさん読んでいましたが、anyこれはおそらく良いことではありません。

ここで何をすべきかわかりません。/etc/polkit-1/localuthority特定のユーザーがログインセッションなしでループバックデバイスを管理できるように指定できる新しいファイルをどこかに追加する方法はありますか(sudoまもなく提供する予定)。systemdUser=

それとも、この状況をテストする方法が複雑すぎるため、人々は他のより簡単な方法をお勧めしますか?

答え1

まず、次の内容でファイルを作成しました/etc/polkit-1/localauthority/50-local.d/55-storage.pkla

[Storage Permissions]
Identity=unix-group:disk
Action=org.freedesktop.udisks2.loop-setup;org.freedesktop.udisks2.filesystem-mount
ResultAny=yes

上記のコマンドを使用すると、サブコマンドを使用でき、loop-setupサブコマンドを使用するとおよびを実行できます。loop-setuploop-freeudisksctlfilesystem-mountmountunmount

それから私は次のことをしました。

usermod -aG disk someuser
systemctl restart polkit.service

someuserこれで、実行時にudisksctl loop-setup -f my-iso.isoパスワードを入力しなくても機能します。これはすべてSSHを介して行われます。

これはUbuntu 20.04で行われたため、他のディストリビューションでは正確な手順が異なる場合があります。

感謝の言葉:このスーパーユーザーの答え上記のタスクを実行する方法を見つけるのに非常に役立ちます。

関連情報