web-dev-qa-db-ja.com

非rootユーザー用のソフトウェアをインストールするようにSoftware Centerを設定するにはどうすればよいですか?

Root以外のユーザーがパスワードを入力しなくてもUbuntuリポジトリからのものをインストールできるようにSoftware Centerを設定するにはどうすればよいですか?

私はセキュリティへの影響を十分に認識しており、リスクを冒しても構わないと思っています。 Fedora 12にはこのようなものが同梱されていました。 (PolicyKit設定を変更することにより、私は信じています)

47
snostorm

PolicyKit許可を変更して、ユーザーがSoftware Centerが使用するaptdaemonバックエンドにアクセスできるようにすることができます。

dpkg --listfiles aptdaemonは、/usr/share/polkit-1/actions/org.debian.apt.policyがaptdaemonバックエンドで可能なアクションを指定するファイルであることを示しています。

そのファイルを見ると、< action id="">タグは可能なアクションを指定します。おそらくorg.debian.apt.install-packagesでユーザーがアーカイブから新しいパッケージをインストールできるようにし、org.debian.apt.update-cacheでユーザーがパッケージリストを更新できるようにする必要があります。

PolicyKitアクションにローカルパーミッションを設定する方法を文書化したman pklocalauthorityを参照してください。以下を/etc/polkit-1/localauthority/50-local.d/10-allow-users-to-install.pklaに入れると、ローカルマシンにログインしているすべてのユーザーが(adminグループにない場合でも)自分のパスワードを入力した後にパッケージをインストールし、パスワードを入力せずにパッケージキャッシュを更新できます。

[Untrusted Install]
Action=org.debian.apt.install-or-remove-packages
ResultyAny=no
ResultInactive=no
ResultActive=auth_self

[Untrusted Update]
Action=org.debian.apt.update-cache
ResultAny=no
ResultInactive=no
ResultActive=yes
36
RAOF

現在、GUIを介してこれを行うことは不可能だと思いますが、少し気味が悪いとはいえ、次のように動作するはずです。 YMMV。

/ etc/sudoersに次の行を追加します(Sudo visudoを使用してファイルを編集します)。

%packageinstallers ALL = NOPASSWD: /usr/bin/software-center /usr/bin/apt-get

次に、特定のユーザーを作成してpackageinstallersグループに追加するだけです。

$ Sudo addgroup packageinstallers
$ Sudo adduser jdoe packageinstallers

jdoeで次のことができるようになりました。

$ Sudo apt-get install <some-package>

また、ソフトウェアセンターのデスクトップメニュー項目を編集して、software-centerを呼び出してコマンドの前にgksudoを追加することができます。

PolicyKit を使用すると、Sudoを使用せずにこれを行うことができますが、現時点では理解できません。

10
lfaraone

パッケージのインストールを許可または拒否するための一般的なアクセス許可のみが必要な場合は、PolicyKitに進みます。

残念ながら、PolicyKitはインストールするパッケージを細かく制御できません。制限されたアプリケーションセットのみをインストールする権限をユーザーに付与する場合は、Sudoを使用して、softwarechannelsなどをインストールする必要があります...

私もそのようなものを探しましたが、何も見つからなかったので、この簡単なソリューション「softwarechannels」をコーディングしました GitHubで入手可能

一般的な(非管理者)ユーザーが制限付きカタログからパッケージをインストールできるようにする非常にシンプルなシステムです。

単純なテキストファイルで「チャンネル」(パッケージのグループ)を定義し、ユーザーにソフトウェアチャンネルを起動する許可を与えるだけです。

UNIXグループに一致するチャンネル内のパッケージのみが表示されます。

5
Alfonso E.M.

RAOFの答え はUbuntuにのみ適用されます。 KubuntuはQAptWorkerをバックエンドとして使用します(NattyおよびOneiricで確認)。非ルートインストールを許可するには、次を含む/etc/polkit-1/localauthority/50-local.d/10-allow-non-root-install-packages.pklaを作成します。

[Update Software Sources]
Action=org.kubuntu.qaptworker.updateCache
ResultAny=no
ResultInactive=no
ResultActive=yes

[Install Software]
Action=org.kubuntu.qaptworker.commitChanges
ResultAny=no
ResultInactive=no
ResultActive=auth_self

Sudoアクセスを直接許可せずに、一部の非管理者ユーザーにソフトウェアのインストールを許可したかった。これは、両方の構成グループに次の行を挿入することで達成されました。

Identity=unix-user:some-non-admin-user

許可が必要なグループがある場合は、unix-groupの代わりにunix-userを使用します。

5
Lekensteyn