Вопрос или проблема
Я хочу выполнить команду sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
при запуске, чтобы включить работу etcher.
Как выполнить такую команду с sudo при запуске, не вводя пароль?
Резюме: Выполните следующую команду и перезагрузите.
echo 'kernel.apparmor_restrict_unprivileged_userns = 0' |
sudo tee /etc/sysctl.d/20-apparmor-donotrestrict.conf
Команда sudo
на самом деле предназначена для повышения привилегий в интерактивной сессии – в частности, она ожидает получения пароля аутентифицированного пользователя через tty (или другой интерактивный механизм, указанный через SUDO_ASKPASS
). В любое время, когда вы хотите выполнить команду с повышенными привилегиями не интерактивно, обычно есть лучший способ это сделать – например
- через запись в
crontab
для root - через системную службу systemd
В случае с sysctl
есть еще лучший вариант: через файл конфигурации drop-in. Из man sysctl.d
:
ОПИСАНИЕ При загрузке systemd-sysctl.service(8) считывает конфигурационные файлы из указанных директорий, чтобы настроить параметры ядра sysctl(8).
Так что вы можете просто создать файл в /etc/sysctl.d
и добавить туда имя = значение
– либо с помощью вашего любимого текстового редактора, либо, например, используя
echo 'kernel.apparmor_restrict_unprivileged_userns = 0' |
sudo tee /etc/sysctl.d/20-apparmor-donotrestrict.conf
(кроме суффикса .conf
, имя файла произвольно – я предлагаю выбрать что-то, что имеет значение для вас).
Перезагрузите.
Мое текущее ядро (5.15.0-105-generic), похоже, не имеет параметра kernel.apparmor_restrict_unprivileged_userns
, поэтому я протестировал с kernel.unprivileged_userns_apparmor_policy
вместо этого.
О возможных проблемах с безопасностью: Может показаться, что это открывает множество проблем с безопасностью, но это не так, потому что вредоносное ПО, получившее административные привилегии, может отменить такие ограничения и сделать что угодно. А вредоносное ПО с административными привилегиями в принципе может сделать всё. Единственный способ повысить безопасность – это придерживаться официальных репозиториев и не устанавливать ненадежные приложения вообще, а также не передавать им свой пароль. Другие дистрибутивы, такие как Mint и Solus, отменяют это изменение в apparmor. Другие дистрибутивы, такие как Debian, Fedora или Arch, вообще не имеют этого ограничения.
Ответ или решение
Чтобы навсегда отключить ограничения на создание пространств имен пользователей в AppArmor в Ubuntu, что позволит запускать AppImage и веб-приложения, вы можете выполнить следующие шаги:
-
Создайте конфигурационный файл для sysctl: Вам необходимо создать файл в каталоге
/etc/sysctl.d/
, который будет содержать настройку для вашего ядра. Вы можете сделать это с помощью следующей команды в терминале:echo 'kernel.apparmor_restrict_unprivileged_userns = 0' | sudo tee /etc/sysctl.d/20-apparmor-donotrestrict.conf
Здесь мы создаём файл
20-apparmor-donotrestrict.conf
, который будет содержать настройку, отключающую ограничения AppArmor на создание пространств имен для непривилегированных пользователей. -
Примените изменения: После создания файла нужно применить настройки. Это можно сделать командой:
sudo sysctl --system
Эта команда загрузит все конфигурации из каталога
/etc/sysctl.d/
, включая только что созданный вами файл. -
Перезагрузите систему: После выполнения вышеуказанных команд, рекомендуется перезагрузить систему, чтобы убедиться, что изменения были применены правильно. Вы можете перезагрузить систему с помощью команды:
sudo reboot
-
Проверка настройки: После перезагрузки вы можете проверить, применились ли изменения, выполнив:
sysctl kernel.apparmor_restrict_unprivileged_userns
Если всё сделано правильно, вы должны увидеть значение
0
.
О безопасности
Важно понимать, что изменение этих настроек может открыть определенные уязвимости в системе. Хотя откровенно говоря, если злоумышленник получает привилегированный доступ к системе, он сможет изменить любые настройки, включая и эту. Наиболее эффективный способ повышения безопасности — это ограничение установки не доверенных приложений и работа только с программами, полученными из официальных репозиториев.
Заключение
Этот процесс позволяет вам отключить ограничения AppArmor, тем самым позволяя запускать приложения, такие как Etcher и другие, которые требуют создания пространств имен пользователей. Если у вас возникнут дополнительные вопросы или проблемы, не стесняйтесь обращаться за помощью.