Jak ustawić Centrum oprogramowania, aby instalowało oprogramowanie dla użytkowników innych niż root?

47

Jak ustawić Centrum oprogramowania, aby zezwalać użytkownikom innym niż root na instalowanie rzeczy z repozytoriów Ubuntu bez konieczności wpisywania hasła?

Jestem w pełni świadomy konsekwencji dla bezpieczeństwa i jestem gotów podjąć ryzyko. Fedora 12 dostarczana z czymś takim. (Myślę, że poprzez modyfikację konfiguracji PolicyKit)

burza śnieżna
źródło
5
Ważne jest, aby pamiętać, że Fedora wycofała się również po tym, jak spadło na nich niebo.
Nicholas Knight
Tak, pamiętam to. To naprawdę ma sens tylko na komputerach stacjonarnych z jednym lub dwoma użytkownikami.
burza śnieżna
Pamiętaj, że niektóre aplikacje z rynku aplikacji, takie jak Software Center, pozwalają zmieniać repozytoria systemowe. Samoobsługa pakietów jest ryzykowna, ale użytkownicy dodający niezaufane źródła pakietów są naprawdę niebezpieczne.
Alfonso EM

Odpowiedzi:

36

Możesz zmodyfikować uprawnienia PolicyKit, aby umożliwić użytkownikom dostęp do zaplecza aptdaemon, z którego korzysta Software Center.

dpkg --listfiles aptdaemonpokazuje, że /usr/share/polkit-1/actions/org.debian.apt.policyjest to plik określający możliwe działania na backendie aptdaemon.

W tym pliku < action id="">znaczniki określają możliwe działania. Prawdopodobnie chcesz org.debian.apt.install-packageszezwolić użytkownikom na instalowanie nowych pakietów z archiwum i org.debian.apt.update-cacheumożliwić użytkownikom aktualizację list pakietów.

Zobacz, man pklocalauthorityjakie dokumenty ustawiają lokalne uprawnienia do akcji PolicyKit. Włączenie następujących opcji /etc/polkit-1/localauthority/50-local.d/10-allow-users-to-install.pklapozwoli każdemu użytkownikowi zalogowanemu na komputerze lokalnym na zainstalowanie pakietów po wpisaniu własnego hasła (nawet gdy nie ma ich w grupie administracyjnej) oraz na aktualizację pamięci podręcznej pakietów bez wpisywania hasła.

[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
RAOF
źródło
Zasady Kubuntu (przynajmniej w Natty i Oneiric) są w/usr/share/polkit-1/actions/org.kubuntu.qaptworker.policy
Lekensteyn
Instrukcje dotyczące Kubuntu można znaleźć w mojej odpowiedzi
Lekensteyn,
Oszczędzanie życia - na zdrowie kolego! Musiałem dodać, Identity=*aby to zadziałało, dostosowane z askubuntu.com/a/123260 . Ponadto, czy jest jakiś sposób, aby uzyskać więcej danych wyjściowych dziennika zestawu zasad w np. /var/log/auth.log(Lub w innych plikach dziennika)? Dostaję tylko authentication failswiadomości, ale bez powodu, dlaczego się nie udało ...
ssc
10

Nie sądzę, że obecnie można to zrobić za pomocą GUI, ale poniższe powinny działać, choć być trochę niechlujne. YMMV.

Dodaj następujący wiersz do / etc / sudoers (użyj sudo visudodo edycji pliku):

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

Następnie wystarczy utworzyć i dodać określonych użytkowników do packageinstallersgrupy:

$ sudo addgroup packageinstallers
$ sudo adduser jdoe packageinstallers

Teraz jdoemożesz wykonać następujące czynności:

$ sudo apt-get install <some-package>

i możesz edytować element menu na pulpicie Centrum oprogramowania, aby wywoływał software-centerpolecenie poprzedzające gksudo.

PolicyKit może ci na to pozwolić bez sudo, ale w tej chwili nie rozumiem.

lfaraone
źródło
Czy to pozwala im instalować z Synaptic lub aptitude, czy po prostu apt-get?
burza śnieżna
Gdyby dodać „/ usr / bin / synaptic” do listy, zrobiłby to. W rzeczywistości możesz prawdopodobnie dodać „/ usr / bin / software-center” do listy i działałoby. Nie testowałem tego jednak, daj mi znać, czy to działa, a ja zaktualizuję odpowiedź.
lfaraone
Spróbuję tego. :)
burza śnieżna
Wymagałoby to, aby użytkownicy wiedzieli, jak uruchomić centrum oprogramowania z sudo lub aby zmodyfikować plik .desktop. Zobacz moją odpowiedź na temat dostosowywania PolicyKit do robienia tego, co chcesz.
RAOF,
Zgadzam się, to byłoby lepsze rozwiązanie.
lfaraone
5

Odpowiedź RAOF dotyczy tylko Ubuntu. Kubuntu używa QAptWorker jako backendu (obserwowane dla Natty i Oneiric). Aby zezwolić na instalacje użytkownika innego niż root, utwórz /etc/polkit-1/localauthority/50-local.d/10-allow-non-root-install-packages.pklazawierające:

[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

Chciałem zezwolić niektórym użytkownikom niebędącym administratorami na instalowanie oprogramowania bez bezpośredniego udzielania dostępu do sudo. Osiągnięto to, wstawiając kolejne wiersze do obu grup konfiguracji:

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

Jeśli istnieje grupa, której należy przyznać pozwolenie, użyj unix-groupzamiast unix-user.

Lekensteyn
źródło
Aby ponownie zastosować reguły, uruchomiłem ponownie. (prawdopodobnie ponowne logowanie też by zadziałało)
Lekensteyn,
Jak masz to zrobić? Nawet po sudo -itym, jak nie mam nawet dostępu do /etc/polkit-1/localauthority(Ubuntu 17.10): „Nie będę próbował przetwarzać katalogu / etc / polkit-1 / localauthority”
JHBonarius 19.01.18
5

Jeśli potrzebujesz tylko ogólnego uprawnienia, aby zezwolić / zabronić instalacji pakietu, przejdź do PolicyKit.

Niestety PolicyKit nie ma dokładnej kontroli nad pakietem do zainstalowania. Jeśli chcesz zezwolić użytkownikom na instalację tylko ograniczonego zestawu aplikacji, powinieneś użyć sudoi zainstalować coś w rodzaju kanałów oprogramowania ...

Szukałem również czegoś takiego, ale ponieważ nic nie znalazłem, kodowałem to łatwe rozwiązanie „kanały programowe”, dostępne tutaj na GitHub

Jest to bardzo prosty system, który pozwala zwykłym użytkownikom (niebędącym administratorami) instalować pakiety z ograniczonych katalogów.

Wystarczy zdefiniować „kanały” (grupy pakietów) w prostym pliku tekstowym i dać użytkownikom uprawnienia do uruchamiania kanałów oprogramowania.

Będą widzieć tylko pakiety w kanałach pasujących do ich grup uniksowych.

Alfonso EM
źródło