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


47

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

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


5
Fedoraは、空が落ちた後もFedoraをバックアウトしたことに注意することが重要です。
ニコラスナイト

ええ、私はそれを覚えています。これは、1人または2人のユーザーしかいないデスクトップコンピューターでのみ意味があります。
snostorm

Software Centerのような一部のアプリ市場ソフトウェアでは、システムリポジトリを変更できます。パッケージのセルフサービスは危険ですが、信頼できないパッケージソースを追加するユーザーは本当に危険です。
アルフォンソEM

回答:


36

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できるようにし、ユーザーがパッケージリストを更新できるようにする必要があります。

man pklocalauthorityPolicyKitアクションでローカルアクセス許可を設定する方法については、どのドキュメントをご覧ください。以下を/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

Kubuntuのポリシー(少なくともNattyとOneiric)は/usr/share/polkit-1/actions/org.kubuntu.qaptworker.policy
Lekensteyn

Kubuntuのための指示がで見つけることができます私の答え
Lekensteyn

命の恩人-乾杯!Identity=*これを機能させるには、askubuntu.com / a / 123260から改作して追加する必要がありました。また、たとえば/var/log/auth.log(または他のログファイル)でより多くのポリシーキットログ出力を取得する方法はありますか?authentication failsメッセージだけが表示されますが、失敗した理由はありません
...-ssc

10

現時点では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のデスクトップメニュー項目を編集してsoftware-center、コマンドの先頭にを追加して呼び出すようにできますgksudo

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


これにより、Synapticまたはaptitudeからインストールできますか、それともapt-getだけですか
snostorm

リストに「/ usr / bin / synaptic」を追加すると、それが追加されます。実際、おそらく「/ usr / bin / software-center」をリストに追加すればうまくいくでしょう。まだテストしていないので、動作するかどうか教えてください。答えを更新します。
lfaraone

やってみます。:)
snostorm

そのためには、ユーザーがsudoでソフトウェアセンターを実行することを知っているか、または.desktopファイルを変更する必要があります。PolicyKitを微調整して必要な処理を行う方法に関する私の回答を参照してください。
RAOF

同意しました、それは優れたソリューションです。
lfaraone

5

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


ルールを再適用するために、再起動しました。(おそらく再ログインも機能します)
Lekensteyn

どうやってこれをやるの?(Ubuntu 17.10)にsudo -iアクセスすることさえできなかった後でも/etc/polkit-1/localauthority:「ディレクトリ/ etc / polkit-1 / localauthorityを処理しようとしない」
-JHBonarius

5

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

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

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

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.