Usuń hasło sudo podczas łączenia się z * nową * siecią WiFi

12

Tak więc obecnie, gdy mój użytkownik niebędący administratorem próbuje połączyć się z nową siecią Wi-Fi (np. W kawiarni powiedzieć) NetworkManager monituje o hasło administratora. Czy istnieje sposób, aby to wyłączyć i umożliwić użytkownikom niebędącym administratorami łączenie się z dowolną siecią Wi-Fi, którą lubią?

EDYCJA: tylko dla wyjaśnienia, naprawdę mam na myśli nową sieć Wi-Fi, z którą nigdy wcześniej nie łączył się komputer, więc kliknięcie „Dostępne dla wszystkich użytkowników” na istniejącym ustanowionym połączeniu nie rozwiąże problemu - ponieważ obecnie nie ma problemu z użytkownikiem niebędącym administratorem ponowne podłączanie tyle razy, ile chcą do sieci domowej.

fpghost
źródło
/etc/sudoersto plik do edycji, więc nie prosi o hasło: help.ubuntu.com/community/Sudoers
Rinzwind
Użyłem visudowcześniej, aby zezwolić użytkownikowi niebędącemu administratorem na wykonanie kilku czynności (np. sudo apt-get upateNa przykład), ale nie jestem pewien, co musiałbym tam umieścić, aby powstrzymać ich przed pytaniem o hasło przy połączeniu z nową siecią Wi-Fi
fpghost
ha, masz mnie tam.
Udzieliłbym
tak, musi to być coś w formie, someUser ALL=(root)NOPASSWD:/path/to/somethingControllingWiFiktórą zakładam, jeśli to rzeczywiście jest droga.
fpghost
Z pewnością jest :) ..
Rinzwind

Odpowiedzi:

14

Znalazłem sukces w następującym rozwiązaniu w Ubuntu 13.04:

Otwórz /usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policyz uprawnieniami root / sudo i wyszukaj następujący wiersz:

<message>System policy prevents modification of network settings for all users</message>

Oto kilka wierszy poniżej:

<allow_active>auth_admin_keep</allow_active>

Zmień na:

<allow_active>yes</allow_active>

Zapisz plik i uruchom ponownie komputer.

Kyle Spencer
źródło
zobacz odpowiedź cios @harlemsquirrel poniżej, znacznie ułatwi to upakowanie pozwolenia wewnątrz np. pakietu deb. Również powyższe podejście może zostać zresetowane przez aktualizacje itp., Ponieważ edytujesz plik zarządzany przez dpkg.
vidstige
1
Solidna rada, ale powinieneś po prostu zrestartować sieć za pomocą usługi sudo Network-manager restart.
imadło
4

Jak rozwiązać problem: Zasady systemowe uniemożliwiają zmianę ustawień sieciowych dla wszystkich użytkowników

W powyższej odpowiedzi brakuje krytycznego kroku, więc zamieszczam ją tutaj. :)

Działa to w Ubuntu 14.04 LTS i 16.04 LTS

  1. Otwórz terminal

  2. su do rootowania

    su -
    
  3. Wpisz następujące polecenie:

    nano /usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy
    
  4. Pod koniec pliku znajdź sekcję z etykietą:

    <action id="org.freedesktop.NetworkManager.settings.modify.system">
    
  5. W dolnej części sekcji org.freedesktop.NetworkManager.settings.modify.system zlokalizuj następujący wiersz kodu:

    <allow_active>auth_admin_keep</allow_active>
    
  6. Zmień ten wiersz na następujący:

    <allow_active>yes</allow_active>
    
  7. Zapisz plik, używając:

    ^X
    
  8. Odpowiedź „Zapisać zmodyfikowany bufor ( ODPOWIEDŹ ” „Nie” ZNISZCZĄ ZMIANY)? ” przez Wpisanie :

    Y
    
  9. Naciśnij Enter, gdy pojawi się monit:

    File Name to Write: /usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy
    
  10. Restart .

:)

bu11etpr00f
źródło
3

Możesz również utworzyć lokalną politykę w tym zakresie

[Pozwól uczniowi użytkownika zmodyfikować ustawienia systemowe dla sieci]
Tożsamość = użytkownik unix: uczeń
Action = org.freedesktop.NetworkManager.settings.modify.system
Wynik Dowolny = nie
ResultInactive = nie
ResultActive = tak

w pliku o nazwie /etc/polkit-1/localauthority/50-local.d/10-network-manager.pkla.

Zaletą jest to, że może to być jedno polecenie i można je wykorzystać w skrypcie!

printf "[Pozwól uczniowi użytkownika modyfikować ustawienia systemowe dla sieci] \ nIdentity = użytkownik unix: uczeń \ nAction = org.freedesktop.NetworkManager.settings.modify.system \ nResultAny = no \ nResultInactive = no \ nResultActive = tak" | sudo tee /etc/polkit-1/localauthority/50-local.d/10-network-manager.pkla

Odniesienie: Ubuntu Manpage: pklocalauthority

Harlem Wiewiórka
źródło
to jest właściwe rozwiązanie
vidstige
2

Naprawdę nie jest to poprawka, na którą liczyłem, ale jednym obejściem, które znalazłem, jest wyłączenie NetworkManagerwszystkich razem i użycie Wicd.

Pierwsze zatrzymanie NetworkManagerprzy uruchamianiu:

sudo gedit /etc/NetworkManager/NetworkManager.conf

następnie # z managedlinii. Również # #start on (local-filesystems and started dbus)z /etc/init/network-manager.conf. Następnie, aby się upewnić

sudo mv /etc/init/network-manager.conf /etc/init/network-manager.conf-disabled
sudo mv /etc/xdg/autostart/nm-applet.desktop /etc/xdg/autostart /nm-applet.desktop.disabled  

Teraz można go używać Wicdi wydaje się, że nie są potrzebne żadne monity o podanie hasła.

fpghost
źródło
1

Możesz edytować pliki konfiguracji systemu, ale to brutalna siła. Przede wszystkim, jako zasada, rezyduje konfiguracyjnych pod /etcnie /usrlub /varczy gdziekolwiek indziej. HarlemSquirrel wyjaśnił, jak dokonać właściwej zmiany domyślnej polityki. Edytowanie plików poniżej /usrgwarantuje prędzej czy później wysadzenie w twarz, ponieważ pliki te są dostarczane przez pakiety systemowe, które zostaną w końcu zaktualizowane / zastąpione.

Ale większym problemem jest to, że zmiany te są całkowicie niepotrzebne, przynajmniej od 18.04. Jest to problem „źle uważasz”. W rzeczywistości jest to problem użyteczności ze strony apletu NM, ale i tak. Spójrz na /usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy:

  <action id="org.freedesktop.NetworkManager.settings.modify.system">
    <description>Modify network connections for all users</description>
    <defaults>
      <allow_any>auth_admin_keep</allow_any>
      <allow_inactive>auth_admin_keep</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>

Czyli użytkownicy nie mogą tworzyć połączeń, prawda? Źle! Spójrz dalej:

  <action id="org.freedesktop.NetworkManager.settings.modify.own">
    <description>Modify personal network connections</description>
    <defaults>
      <allow_any>auth_self_keep</allow_any>
      <allow_inactive>yes</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>

Jak widać, NetworkManager obsługuje koncepcję połączeń użytkownika i systemu. Problem polega na tym, że aplet domyślnie tworzy połączenia systemowe. Kiedy więc otworzysz aplet na pasku zadań i klikniesz Wybierz sieć , a następnie wybierz ten, z którym chcesz się połączyć, prosi on użytkownika sudo, ponieważ tworzenie połączeń systemowych jest dozwolone tylko dla administratorów.

ALE jeśli otworzysz aplikację Ustawienia , przejdź do Wi-Fi i kliknij żądaną sieć, to pozwoli ci łatwo połączyć się bez hasła administratora. Spacerować w parku.

Dlaczego aplet chce domyślnie tworzyć połączenia systemowe, jest poza mną, tym bardziej, że w dowolnym momencie możesz skonfigurować połączenie użytkownika jako systemowe. Jest to opcja Udostępnij innym użytkownikom w obszarze właściwości połączenia, a gdy to zaznaczysz i klikniesz Zastosuj , natychmiast poprosi o hasło sudo, tak jak powinno. Spróbuję znaleźć sposób, aby aplet domyślnie tworzył połączenia użytkownika, zaktualizuję tę odpowiedź, jeśli się zorientuję.

Bviktor
źródło
OMG, dziękuję za te informacje, tak długo mnie męczyły. Właśnie przesłałem raport o błędzie: bugs.launchpad.net/ubuntu/+source/network-manager-applet/+bug/…
gpothier