Регулярная сборка gnome44 от 31 мая 2023 sudo apt-get install steam steam.1.0.0.78-alt3 Шаги воспроизведения: 1. Установить программу: # apt-get install steam. 2. Убрать стим в фон и не пользоваться им Ожидаемый результат: Стим находится в фоне и не требует ничего. Фактический результат: Стим каждые пару минут требует какого-либо входа в режим рута и просит пароль. так, же по всей видимости это проблема именно стима, которая была решена коммьюнити разных дистрибутивов, в убунту даже вшили какой-то фикс, ссылка на issue с этой проблемой: https://github.com/ValveSoftware/steam-for-linux/issues/7856 и нашел что-то похожее тут: https://steamcommunity.com/app/221410/discussions/0/3106901665845459558/ steam.1.0.0.78-alt3
Как временное решение проблемы: 1. Ставим пакет polkit-pkla-compat (ВАЖНО) 2. sudo nano /etc/polkit-1/localauthority/50-local.d/10-network-manager.pkla Пишем туда: [We block Steam] Identity=unix-user:myuser Action=org.freedesktop.NetworkManager.settings.modify.system ResultAny=no ResultInactive=no ResultActive=no ............................... ВМЕСТО myuser свой юзер либо звездочка 3. ребут
Либо: В файл /etc/polkit-1/rules.d/10-steam-nm.rules: polkit.addRule(function(action, subject) { if (action.id=="org.freedesktop.NetworkManager.settings.modify.system") { return polkit.Result.NO; } }); Этр правило в современном виде и без всяких pkla (Пакет polkit-pkla-compat не нужен)
Смог сделать проверку, стим ли это: polkit.addRule(function(action, subject) { if (action.id == "org.freedesktop.NetworkManager.settings.modify.system" && subject.process.binary.indexOf("steam") !== -1) { return polkit.Result.NO; } });
steam-1.0.0.78-alt4 -> sisyphus: Mon Jun 12 2023 Nazarov Denis <nenderus@altlinux> 1.0.0.78-alt4 - Prevent prompts Network Manager without admin permissions (ALT #46456)
(In reply to Roman Alifanov from comment #3) > Смог сделать проверку, стим ли это: > polkit.addRule(function(action, subject) { > if (action.id == "org.freedesktop.NetworkManager.settings.modify.system" > && > subject.process.binary.indexOf("steam") !== -1) { > return polkit.Result.NO; > } > }); Проверка на steam в этом правиле не работает, с этим правилом nm-connection-editor получает NO от polkit и не позволяет редактировать системные соединения.
(Ответ для Mikhail Efremov на комментарий #5) > > Проверка на steam в этом правиле не работает, с этим правилом > nm-connection-editor получает NO от polkit и не позволяет редактировать > системные соединения. Странно. Я проверял и правило работало только на стим.
(Ответ для Roman Alifanov на комментарий #6) > Странно. Я проверял и правило работало только на стим. Остальное отправляло системное значение (в моем случае AUTH_ADMIN_KEEP).
Так polkit вообще не понимает что такое subject.process, в типе subject никакого process нет, см. https://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html
У меня нет устройств c WiFi, поэтому проблема не воспроизводится. Если попробовать так? polkit.addRule(function(action, subject) { if (action.id === "org.freedesktop.NetworkManager.settings.modify.system") { var name = polkit.spawn(["cat", "/proc/" + subject.pid + "/comm"]); if (name.includes("steam")) { return polkit.Result.NO; } } });
(Ответ для Mikhail Efremov на комментарий #8) > Так polkit вообще не понимает что такое subject.process, в типе subject > никакого process нет, см. Как же оно тогда работает? Было проверено на трех машинах. > https://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html "Rules files are written in the programming language and interface with polkitd through the global polkit object (of type Polkit)." Есть в node.js как минимум: https://nodejs.org/api/process.html
(Ответ для Roman Alifanov на комментарий #10) "Rules files are written in the programming language and interface with > polkitd through the global polkit object (of type Polkit)." Rules files are written in the JavaScript programming language and interface with polkitd through the global polkit object (of type Polkit).*
(In reply to Денис Назаров from comment #9) > У меня нет устройств c WiFi, поэтому проблема не воспроизводится. > > Если попробовать так? > > polkit.addRule(function(action, subject) { > if (action.id === > "org.freedesktop.NetworkManager.settings.modify.system") { > var name = polkit.spawn(["cat", "/proc/" + subject.pid + "/comm"]); > if (name.includes("steam")) { > return polkit.Result.NO; > } > } > }); Да, так работает. Правда я совершенно не доверяю cat на /proc/*/comm, мало ли какой там comm произвольного вида себе процесс сделает и как на это отреагирует libmozjs. Безопаснее grep использовать, думаю. Ничего не понимаю в JS, набросал такое правило: polkit.addRule(function(action, subject) { if (action.id === "org.freedesktop.NetworkManager.settings.modify.system") { try { if (polkit.spawn(["grep", "^steam$", "/proc/" + subject.pid + "/comm"]) !== "") { return polkit.Result.NO; } } catch(err) { return polkit.Result.NOT_HANDLED; } } }); Впрочем, лично у себя я все равно такие правила использовать не буду, мне не нравится постоянный exec процесса (хоть cat, хоть grep). У меня обнаружилось правило, запрещающее "org.freedesktop.NetworkManager.settings.modify.system" для того пользователя, под которым я steam запускаю (ну не под своим же пользователем такие вещи запускать). Даже и не помню когда я его себе написал. Но это не дистрибутивно, конечно :(.
(In reply to Roman Alifanov from comment #10) > (Ответ для Mikhail Efremov на комментарий #8) > > Так polkit вообще не понимает что такое subject.process, в типе subject > > никакого process нет, см. > Как же оно тогда работает? Было проверено на трех машинах. Запустите polkitd без --no-debug и увидите как он ругается при наличии subject.process. Можно еще вставить polkit.log("subject=" + subject); и увидеть что на самом деле есть в subject.
(Ответ для Mikhail Efremov на комментарий #13) > Запустите polkitd без --no-debug и увидите как он ругается при наличии > subject.process. > Можно еще вставить polkit.log("subject=" + subject); и увидеть что на самом > деле есть в subject. Странно конечно, почему оно тогда работает, ну ладно. Могу протестировать вариант с cat или grep выше.
Кстати, правила лучше паковать в /usr/share/polkit-1/rules.d/. А /etc/polkit-1/rules.d/ - это для админа системы.
(In reply to Roman Alifanov from comment #14) > Странно конечно, почему оно тогда работает, ну ладно. > Могу протестировать вариант с cat или grep выше. Так запрет на org.freedesktop.NetworkManager.settings.modify.system все равно работает, просто для всех, а не только для steam.
(Ответ для Mikhail Efremov на комментарий #15) > Кстати, правила лучше паковать в /usr/share/polkit-1/rules.d/. А > /etc/polkit-1/rules.d/ - это для админа системы. Я просто видел в некоторых пакетах использование /etc/polkit-1/. Буду знать.
(Ответ для Mikhail Efremov на комментарий #16) > (In reply to Roman Alifanov from comment #14) > > Странно конечно, почему оно тогда работает, ну ладно. > > Могу протестировать вариант с cat или grep выше. > > Так запрет на org.freedesktop.NetworkManager.settings.modify.system все > равно работает, просто для всех, а не только для steam. В том то и дело, что настройки wifi успешно изменяются через настройки, а блокируется только стим. Когда сделанно: polkit.addRule(function(action, subject) { if (action.id == "org.freedesktop.NetworkManager.settings.modify.system") { return polkit.Result.NO; } }); Блокируются и изменение параметров через параметры системы.
(Ответ для Roman Alifanov на комментарий #18) > Блокируются и изменение параметров через параметры системы. Из чего делаю вывод, что правило работает как надо и не затрагивает всю систему...
Как в итоге лучше сделать то? cat'ом или grep'ом?
Или оставляем как есть, т.к. похоже всё же работает?
(Ответ для Денис Назаров на комментарий #20) > Как в итоге лучше сделать то? cat'ом или grep'ом? grep бывает медленным, так что это сложный вопрос...
(Ответ для Денис Назаров на комментарий #21) > Или оставляем как есть, т.к. похоже всё же работает? У меня как минимум. И у трех людей точно. И изменение настроек сети у них при этом осталось.
kworkstation p10 С установленным steam, NetworkManager потерял привилегии и не давал подключаться к VPN. Удалил steam и подключение заработало.
У меня подключение к VPN c установленным steam работает корректно
(Ответ для Денис Назаров на комментарий #25) > У меня подключение к VPN c установленным steam работает корректно А удалить, или создать новое подключение есть возможность через GUI системы?
Не мог удалить и заново настроить VPN подключение, пока не удалил steam. В KDE даже не было окна запроса с вводом пароля. Система: Alt regular KDE.
(Ответ для Mikhail Tergoev на комментарий #26) > (Ответ для Денис Назаров на комментарий #25) > > У меня подключение к VPN c установленным steam работает корректно > > А удалить, или создать новое подключение есть возможность через GUI системы? Да, удаление, редактирование и добавление действительно не работает (
Если /etc/polkit-1/rules.d/10-steam-nm.rules заменить на polkit.addRule(function(action, subject) { if (action.id === "org.freedesktop.NetworkManager.settings.modify.system") { var name = polkit.spawn(["cat", "/proc/" + subject.pid + "/comm"]); if (name.includes("steam")) { return polkit.Result.NO; } } }); то работает. Но я так понимаю, что cat лучше не использовать тут.
Предлагаю всё же решить, использовать cat, grep или что-то ещё и переместить в итоге правило в /usr/share/polkit-1/rules.d/
steam-1.0.0.78-alt7 -> sisyphus: Fri Jun 30 2023 Nazarov Denis <nenderus@altlinux> 1.0.0.78-alt7 - Prevent prompts Network Manager without admin permissions only for steam (ALT #46456)
Я думаю все же лучше использовать ps, а не лезть напрямую в /proc: ps -q <pid> -o comm=
Возможно ли исправить steam-nm.rules на такого вида содержание: polkit.addRule(function(action, subject) { if (action.id === "org.freedesktop.NetworkManager.settings.modify.system") { var cmd_line = polkit.spawn(["ps", subject.pid]); if (cmd_line.includes("steamdeck")) { return polkit.Result.YES; } else if (cmd_line.includes("steam")) { return polkit.Result.NO; } } }); Смысл в том что steamdeck режим, это практически полноценное рабочее окружение в Wayland сессии и без доступа к org.freedesktop.NetworkManager.settings.modify.system не получится подключиться к Wi-Fi. + в данной реализации мы не лезем в /proc Возможно можно как то и красивее сделать, буду рад услышать предложения и варианты. Заранее спасибо!
(Ответ для Mikhail Tergoev на комментарий #33) > Смысл в том что steamdeck режим, это практически полноценное рабочее > окружение в Wayland сессии и без доступа к > org.freedesktop.NetworkManager.settings.modify.system не получится > подключиться к Wi-Fi. Это на случай установки альта на Steam Deck вместо SteamOS?
(Ответ для Денис Назаров на комментарий #34) > (Ответ для Mikhail Tergoev на комментарий #33) > > Смысл в том что steamdeck режим, это практически полноценное рабочее > > окружение в Wayland сессии и без доступа к > > org.freedesktop.NetworkManager.settings.modify.system не получится > > подключиться к Wi-Fi. > Это на случай установки альта на Steam Deck вместо SteamOS? Не только. Можно сделать игровую станцию почти из любого ПК + телевизор + геймпад.
(Ответ для Денис Назаров на комментарий #34) > Это на случай установки альта на Steam Deck вместо SteamOS? Уточню, для работы gamescope-session-steam который уже в Сизифе.
Готово - https://packages.altlinux.org/ru/tasks/354304/
(Ответ для Денис Назаров на комментарий #37) > Готово - https://packages.altlinux.org/ru/tasks/354304/ Денис, большое спасибо.
(Ответ для Денис Назаров на комментарий #37) > Готово - https://packages.altlinux.org/ru/tasks/354304/ Все еще раз препроверил. Работает. Обычный стим вопросов не задает, в NM не лезет, а в игровой сессии SteamDeck подключается в Wi-Fi без проблем. Жду в p11 (в p10 всё равно не завести gamescope, так что там не столь важно)
(Ответ для Mikhail Tergoev на комментарий #39) > Жду в p11 (в p10 всё равно не завести gamescope, так что там не столь важно) https://packages.altlinux.org/tasks/354334