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


47

Come posso impostare il Software Center per consentire agli utenti non root di installare elementi dai repository di 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)


5
È importante notare che anche Fedora ha fatto marcia indietro dopo che il cielo è caduto su di loro.
Nicholas Knight,

Sì, me lo ricordo. Ha davvero senso solo su computer desktop con solo uno o due utenti.
snostorm il

Tieni presente che alcuni software del mercato delle app come Software Center consentono di modificare i repository di sistema. Un self-service di pacchetti è rischioso, ma gli utenti che aggiungono fonti di pacchetti non attendibili è davvero pericoloso.
Alfonso EM,

Risposte:


36

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

dpkg --listfiles aptdaemonmostra 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 < action id="">tag specificano le possibili azioni. Probabilmente vorresti org.debian.apt.install-packagesconsentire agli utenti di installare nuovi pacchetti dall'archivio e org.debian.apt.update-cacheconsentire agli utenti di aggiornare gli elenchi dei pacchetti.

Scopri man pklocalauthorityquali documenti come impostare le autorizzazioni locali per le azioni PolicyKit. Se si inserisce quanto segue /etc/polkit-1/localauthority/50-local.d/10-allow-users-to-install.pkla, tutti gli utenti che hanno effettuato l'accesso al computer locale possono installare i pacchetti dopo aver digitato la propria password (anche quando non si trovano nel gruppo admin) e 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

Le politiche di Kubuntu (almeno in Natty e Oneiric) sono in/usr/share/polkit-1/actions/org.kubuntu.qaptworker.policy
Lekensteyn,

Le istruzioni per Kubuntu sono disponibili nella mia risposta
Lekensteyn,

Life saver - evviva amico! Ho dovuto aggiungere Identity=*per farlo funzionare, adattato da askubuntu.com/a/123260 . Inoltre, esiste un modo per ottenere più output del registro del kit di politiche, ad esempio /var/log/auth.log(o in qualsiasi altro file di registro)? Ricevo solo authentication failsmessaggi, ma nessun motivo per cui non è riuscito ...
ssc,

10

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 visudoper modificare il file):

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

Quindi devi solo creare e aggiungere gli utenti specifici al packageinstallersgruppo:

$ sudo addgroup packageinstallers
$ sudo adduser jdoe packageinstallers

Ora jdoepuoi fare quanto segue:

$ sudo apt-get install <some-package>

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

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


Ciò consente loro di installarli da Synaptic o aptitude o semplicemente apt-get?
Snostorm

Se dovessi aggiungere "/ usr / bin / synaptic" all'elenco, lo farebbe. In effetti, potresti probabilmente aggiungere "/ usr / bin / software-center" all'elenco e funzionerebbe. Non l'ho ancora verificato, fammi sapere se funziona e aggiornerò la risposta.
lfaraone,

Ci proverò. :)
snostorm il

Ciò richiederebbe agli utenti di eseguire il software-center con sudo o di modificare il file .desktop. Vedi la mia risposta su come modificare PolicyKit per fare quello che vuoi.
RAOF,

D'accordo, sarebbe una soluzione superiore.
lfaraone,

5

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

[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 concedere direttamente l'accesso sudo. Ciò è stato ottenuto inserendo le righe successive in entrambi i gruppi di configurazione:

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

Se esiste un gruppo a cui deve essere concessa l'autorizzazione, utilizzare unix-groupinvece di unix-user.


Per riapplicare le regole, ho riavviato. (probabilmente un nuovo accesso potrebbe funzionare anche)
Lekensteyn,

Come dovresti farlo? Anche dopo sudo -iche non ho nemmeno accesso a /etc/polkit-1/localauthority(Ubuntu 17.10): "Non tenterò di elaborare la directory / etc / polkit-1 /
localauthority

5

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 sudoe 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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.