it-swarm.it

Come posso impostare Software Center per installare software per utenti non root?

Come posso impostare Software Center per consentire agli utenti non root di installare roba dai repository Ubuntu senza dover digitare la loro password?

Sono pienamente consapevole delle implicazioni per la sicurezza e sono disposto a correre il rischio. Fedora 12 veniva spedito con qualcosa del genere. (Modificando la configurazione di PolicyKit, credo)

47
snostorm

È possibile modificare le autorizzazioni di PolicyKit per consentire agli utenti di accedere al backend aptdaemon utilizzato da Software Center.

_dpkg --listfiles aptdaemon_ mostra che _/usr/share/polkit-1/actions/org.debian.apt.policy_ è il file che specifica le azioni possibili sul back-end di aptdaemon.

Guardando in quel file, i tag _< action id="">_ specificano le possibili azioni. Probabilmente vorresti _org.debian.apt.install-packages_ per consentire agli utenti di installare nuovi pacchetti dall'archivio e _org.debian.apt.update-cache_ per consentire agli utenti di aggiornare gli elenchi dei pacchetti.

Vedi _man pklocalauthority_ che documenta come impostare le autorizzazioni locali per le azioni PolicyKit. Mettendo il seguente in _/etc/polkit-1/localauthority/50-local.d/10-allow-users-to-install.pkla_ consentirà a qualsiasi utente connesso al computer locale di installare i pacchetti dopo aver digitato la propria password (anche quando non si trovano nel gruppo admin) e di aggiornare la cache del pacchetto senza digitare alcuna password.

_[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

Non penso che sia attualmente possibile farlo tramite la GUI, ma quanto segue dovrebbe funzionare, sebbene sia un po 'complicato. YMMV.

Aggiungi la seguente riga a/etc/sudoers (usa Sudo visudo per modificare il file):

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

Quindi devi solo creare e aggiungere gli utenti specifici al gruppo packageinstallers:

$ Sudo addgroup packageinstallers
$ Sudo adduser jdoe packageinstallers

Ora jdoe può effettuare le seguenti operazioni:

$ Sudo apt-get install <some-package>

e puoi modificare la voce di menu desktop per il Software Center in modo che richiami software-center anteponendo il comando con gksudo.

PolicyKit può permetterti di farlo senza Sudo, ma è al di là della mia comprensione a questo punto.

10
lfaraone

Se è necessaria solo un'autorizzazione generica per consentire/vietare l'installazione del pacchetto, selezionare PolicyKit.

Sfortunatamente PolicyKit non ha un ottimo controllo sul pacchetto da installare. Se vuoi dare ai tuoi utenti il ​​permesso di installare solo un set limitato di applicazioni, dovresti usare Sudo e installare qualcosa come softwarechannels ...

Ho anche cercato qualcosa del genere, ma poiché non ho trovato nulla, ho codificato questa semplice soluzione "softwarechannels", disponibile qui su GitHub

È un sistema molto semplice per consentire agli utenti comuni (non amministratori) di installare pacchetti da cataloghi limitati.

Definisci semplicemente "canali" (gruppi di pacchetti) in un semplice file di testo e dai ai tuoi utenti le autorizzazioni per avviare i softwarechannel.

Vedranno solo i pacchetti nei canali corrispondenti ai loro gruppi unix.

5
Alfonso E.M.

risposta di RAOF si applica solo a Ubuntu. Kubuntu utilizza QAptWorker come backend (osservato per Natty e Oneiric). Per consentire installazioni non root, crea /etc/polkit-1/localauthority/50-local.d/10-allow-non-root-install-packages.pkla contenente:

[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

Volevo consentire ad alcuni utenti non amministratori di installare software senza garantire l'accesso diretto a Sudo. Ciò è stato ottenuto inserendo le righe successive in entrambi i gruppi di configurazione:

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

Se è presente un gruppo a cui deve essere concessa l'autorizzazione, utilizzare unix-group anziché unix-user.

5
Lekensteyn