Удалить пароль sudo при подключении к * новой * сети WiFi

12

Поэтому в настоящее время, когда мой пользователь без прав администратора пытается подключиться к новой сети WiFi (например, в кафе, скажем), NetworkManager запрашивает пароль пользователя с правами администратора. Есть ли способ отключить это и разрешить пользователю без прав администратора подключаться к любой сети Wifi, которая ему нравится?

РЕДАКТИРОВАТЬ: просто чтобы уточнить, я на самом деле имею в виду новую сеть Wi-Fi, к которой никогда ранее не подключался компьютер, поэтому нажатие «Доступно для всех пользователей» на существующем установленном соединении не решит проблему, поскольку в настоящее время нет проблем с пользователем без прав администратора. повторное подключение столько раз, сколько они хотят, к домашней сети.

fpghost
источник
/etc/sudoersэто файл для редактирования, поэтому он не запрашивает пароли: help.ubuntu.com/community/Sudoers
Rinzwind
Раньше я использовал, visudoчтобы пользователь, не являющийся администратором, мог делать несколько вещей (например, sudo apt-get upateнапример), но я не уверен, что мне нужно было бы вставить туда, чтобы он не запрашивал пароль при подключении к новой сети Wi-Fi.
fpghost
ха, ты меня туда доставил. Я сделал бы это ответом, если бы знал это по памяти (искал немного, но еще не нашел его: D)
Rinzwind
да, должно быть что-то вроде формы, которую someUser ALL=(root)NOPASSWD:/path/to/somethingControllingWiFiя предполагаю, если это действительно путь.
fpghost
Это точно :) :)
Rinzwind

Ответы:

14

Я нашел успех в следующем решении в Ubuntu 13.04:

Откройте /usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policyс правами root / sudo и найдите следующую строку:

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

Несколько строк ниже должны быть такими:

<allow_active>auth_admin_keep</allow_active>

Измените это на:

<allow_active>yes</allow_active>

Сохраните файл и перезагрузите компьютер.

Кайл Спенсер
источник
посмотрите ответный удар @harlemsquirrel ниже, это упростит упаковку разрешений внутри, например, пакета deb. Также вышеупомянутый подход может быть сброшен обновлениями и т. Д., Потому что вы редактируете файл, управляемый dpkg.
Виджет
1
Хороший совет, но вы должны просто перезагрузить сеть через перезапуск менеджера сети службы sudo.
тиски
4

Как устранить ошибку: системная политика предотвращает изменение параметров сети для всех пользователей

В ответе выше отсутствует важный шаг, поэтому я включаю его здесь. :)

Это работает в Ubuntu 14.04 LTS и 16.04 LTS

  1. Открытый терминал

  2. су в корне

    su -
    
  3. Введите следующее:

    nano /usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy
    
  4. В конце файла найдите раздел с надписью:

    <action id="org.freedesktop.NetworkManager.settings.modify.system">
    
  5. В нижней части раздела org.freedesktop.NetworkManager.settings.modify.system найдите следующую строку кода:

    <allow_active>auth_admin_keep</allow_active>
    
  6. Измените эту строку следующим образом:

    <allow_active>yes</allow_active>
    
  7. Сохраните файл, используя:

    ^X
    
  8. Ответ "Сохранить измененный буфер (ОТВЕТ) Нет" УДАЛЕТ ЛИ УМЕНЬШЕНИЕ)? " по Typing :

    Y
    
  9. Нажмите Enter, когда предложено:

    File Name to Write: /usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy
    
  10. Перезагрузка .

:)

bu11etpr00f
источник
3

Вы также можете создать локальную политику для этого

[Позволить ученику изменять системные настройки для сети]
Идентичность = Unix-пользователь: ученик
Действие = org.freedesktop.NetworkManager.settings.modify.system
ResultAny = нет
ResultInactive = нет
ResultActive = да

в файле с именем /etc/polkit-1/localauthority/50-local.d/10-network-manager.pkla.

Преимущество здесь в том, что это может быть одна команда и ее можно использовать в скрипте!

printf "[Разрешить ученику изменять системные настройки для сети] \ nIdentity = unix-user: pupil \ nAction = org.freedesktop.NetworkManager.settings.modify.system \ nResultAny = no \ nResultInactive = no \ nResultActive = yes" | sudo tee /etc/polkit-1/localauthority/50-local.d/10-network-manager.pkla

Ссылка: Ubuntu Manpage: pklocalauthority

HarlemSquirrel
источник
это правильное решение
vidtige
2

Это не то исправление, на которое я надеялся, но я нашел один обходной путь - просто отключить NetworkManagerвсе вместе и вместо этого использовать Wicd.

Первая остановка NetworkManagerпри запуске:

sudo gedit /etc/NetworkManager/NetworkManager.conf

затем # из managedлинии. Также # #start on (local-filesystems and started dbus)из /etc/init/network-manager.conf. Тогда просто чтобы удостовериться

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  

Теперь можно просто использовать, Wicdи никаких запросов пароля не требуется, кажется.

fpghost
источник
0

Вы можете редактировать файлы конфигурации системы, но это грубая сила. Прежде всего, как правило, пребывает конфигурации под /etc, а не /usrили /varили где - либо еще. HarlemSquirrel объяснил, как правильно изменить политику по умолчанию. Редактирование файлов под /usrгарантированно рано или поздно взорвется вам в лицо, так как эти файлы предоставляются системными пакетами, которые со временем будут обновляться / заменяться.

Но большая проблема в том, что эти изменения совершенно не нужны, по крайней мере, с 18.04. Это проблема "ты ошибаешься". На самом деле, это проблема юзабилити со стороны апплета NM, но в любом случае. Посмотрите на /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>

То есть пользователи не могут создавать подключения, верно? Неправильно! Смотри дальше:

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

Как видите, NetworkManager поддерживает концепцию пользовательских и системных соединений. Проблема в том, что апплет создает системные соединения по умолчанию. Поэтому, когда вы открываете апплет на панели задач и нажимаете « Выбрать сеть» , затем выбираете тот, к которому хотите подключиться, он запрашивает пользователя sudo, поскольку создание системных подключений разрешено только администраторам.

НО, если вы откроете приложение « Настройки» , зайдите в Wi-Fi и нажмете нужную сеть, это позволит вам легко подключиться без пароля администратора. Гулять в парке.

Почему апплет хочет создавать системные подключения по умолчанию, я не знаю, тем более что вы можете сделать пользовательское подключение системным в любое время позже. Это опция Сделать доступной для других пользователей в свойствах соединения, и когда вы проверите это и нажмете Применить , он сразу же запросит пароль sudo, как и должно быть. Я попытаюсь найти способ заставить апплет создавать пользовательские соединения по умолчанию, я обновлю этот ответ, если выясню это.

bviktor
источник