Почему рекомендуется создавать группу и пользователя для некоторых приложений?

В большинстве случаев при установке программы из исходного кода рекомендуется создать нового пользователя и новую группу и предоставить /usr/local/<myapp> недавно созданный пользовательский и групповой доступ.

Пример: mysql user / mysql group для сервера базы данных MySQL.

5 Solutions collect form web for “Почему рекомендуется создавать группу и пользователя для некоторых приложений?”

Практика заключается не в создании одного пользователя и группы для каждого приложения, а для службы. То есть программы, выполняемые локальным пользователем, не должны устанавливаться как пользователь, отличный от root. Это демоны , программы, работающие в фоновом режиме и выполняющие запросы, поступающие через сеть или другие средства связи, которые должны выполняться как выделенный пользователь.

Демон запускается как выделенный пользователь, так что если он ошибается (из-за ошибки, вероятно вызванной злоумышленником) ущерб, который он может сделать, ограничен: только файлы данных демона затронуты (если злоумышленнику не удалось найти локальное корневое отверстие , что может случиться). Например, демона базы данных mysqld работает как выделенный пользователь и группа mysql:mysql а файлы данных базы данных ( /var/lib/mysql/* ) относятся к mysql:mysql .

Обратите внимание, что исполняемый файл daemon и другие статические данные и файлы конфигурации, которые используются, но не должны быть изменены демоном, не должны принадлежать выделенному пользователю; они должны принадлежать root:root , как и большинство файлов программы и конфигурации. В процессе mysqld нет перезаписывания бизнеса /usr/sbin/mysqld или /etc/mysql/my.cnf , поэтому эти файлы не должны принадлежать пользователю mysql или быть доступны для записи пользователем mysql или группой mysql . Если некоторые файлы должны быть доступны для чтения только демонам и администратору, они должны принадлежать пользователю root и выделенной группе и иметь режим 0640 ( rw-r----- ).

Специальная категория исполняемых файлов, которые не могут принадлежать root:root – это программы, которые вызывается пользователем, но их нужно запускать с дополнительными привилегиями. Эти исполняемые файлы должны быть setuid root, если они должны запускаться (по крайней мере частично) с правами root; то исполняемый файл должен иметь режим 4755 ( rwsr-xr-x ). Если программа нуждается в дополнительных привилегиях, но не как root, тогда программа должна быть установлена ​​setgid, так что дополнительные привилегии будут проходить через группу, а не через пользователя. Тогда исполняемый файл имеет режим 2755 ( rwxr-sr-x ). Причины двоякие:

  • Исполнителю не должно быть позволено модифицировать себя, так что, если пользователю удастся воспользоваться уязвимостью, они могут модифицировать файлы данных, используемые программой, но не внедрять троянский конь в исполняемый файл, чтобы атаковать других пользователей, запускающих программу ,
  • Файл данных исполняемого файла принадлежит группе. Программа setuid должна переключаться между реальным пользователем (пользователем, который вызывал программу), чтобы взаимодействовать с пользователем и с эффективным пользователем (пользователем, которого программа работает как) для доступа к своим личным файлам данных (причина для этого иметь дополнительные привилегии). Программа setgid может дополнительно выделять данные для каждого пользователя, доступные только для группы (например, путем хранения файлов, принадлежащих пользователю, в каталоге, доступном только для root и группы программы).

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

Создание новой группы / пользователя для нового установленного демона улучшает безопасность. Когда серверный процесс запускается под таким пользователем, он ограничен правами доступа этого пользователя. Для сравнения: когда он запускается как root, он может делать все.

Эта разница важна, если ваш демон настроен неправильно и / или содержит ошибку, связанную с безопасностью.

Я не уверен, что вы имеете в виду со второй частью вашего вопроса, т. Е. О части /usr/local ownership. В общем, не имеет смысла, что один и тот же пользователь X под которым работает демон, по соображениям безопасности также владеет каталогом с двоичными файлами (потому что в этом случае он может изменить их в случае эксплойта). Но каталог с файлами данных, над которыми работает демон, должен быть доступен X – самый простой способ настроить это – сделать X владельцем каталогов / файлов данных.

Запуск демона под его собственным специальным пользователем – это всего лишь одна техника безопасности, другие – своего рода «chrooting» или система обязательного контроля доступа (MAC) (например, SELinux).

Это соображение безопасности. Он ограничивает ущерб, который может быть нанесен кем-то, кто попадает в приложение-демон. Пользовательское приложение обычно принадлежит стандартным идентификаторам пользователя, таким как root .

Если ваш веб-сервер, почтовый сервер и база данных работают как один и тот же пользователь, это упрощает их компрометацию. Если какой-либо из них имеет ошибку или неправильную конфигурацию, позволяющую получить доступ к системе, этот доступ можно использовать для доступа ко всем трем приложениям.

Если у всех их есть отдельные учетные записи, как рекомендовано, возможно, будет доступно только скомпрометированное приложение. В то время как сведения о другой конфигурации могут быть прочитаны, маловероятно, что изменения могут быть сделаны.

Многие демоны позволяют пользователям загружать и загружать файлы и в противном случае делать то, что вы не хотите, чтобы они могли выполнять настройки для других демонов. Если каждое приложение имеет свой собственный идентификатор пользователя и группу, проще защитить демонов.

Наличие определенной группы демона упрощает безопасный доступ к файлу и каталогам для безопасного доступа к демонам. Если файл или каталог принадлежит другому пользователю, но принадлежит группе демонов, он обычно будет доступен только для чтения. Разрешения доступа могут быть легко проверены и исправлены с помощью таких инструментов, как find.

Причина, по которой считается хорошей практикой, состоит в том, чтобы предотвратить использование другими пользователями системы данных и конфигурационных файлов для конкретного приложения.

В качестве примера mysql / mysql являющийся владельцем хранилища для файлов базы данных mysql, не позволяет любому, кто не использует API-интерфейс приложения, не повреждать базы данных. Кроме того, пользователь mysql обычно не имеет реальной оболочки, поэтому никто не может войти в систему как этот пользователь.

  • Развертывание приложения поверх ssh
  • Что произойдет, если я обновлю Fedora?
  • Где я могу проверить информацию об обновлениях Arch-Linux?
  • Обновление ffmpeg
  • Как установить dvd-слайд-шоу на Centos 5?
  • Проблема обновления / Kubuntu
  • Программное обеспечение для мониторинга сервера Linux
  • Какую программу я могу использовать для получения функций копирования / факса из отдельного сканера и принтера?
  • Каков предпочтительный способ обновления всего программного обеспечения в установке Fedora?
  • Проблема с установкой свойств python-software
  • Почему Debian недооценивает пространство, доступное при установке Qt?
  • Interesting Posts

    Запустите программу dbus в crontab, как узнать о идентификаторе SESSION?

    Как преобразовать таблицу sc в Excel?

    Изменение цвета текста имени файла

    Пользовательский сервис (systemd) не запускается при запуске

    Как скопировать все мои настройки XFCE между настольным компьютером и ноутбуком?

    Я хотел бы присоединиться к двум файлам csv

    Удаление разрывов строк, пробелов и вкладок из каждого файла

    Предоставление разрешения записи по умолчанию для группировки в любые вновь созданные файлы и папки

    Есть ли одна '03 зарегистрированная UNIX, которая не может делать rm -foo в этот момент?

    Программа автозапуска в Xfce

    Как изменить переменную, которая является частью значения другой переменной

    Открытый ключ f3: 6e: 87: 04: ea: 2d: b3: 60: ff: 42: ad: 26: 67: 17: 94: d5 черный список (см. Ssh-vulnkey (1)); отказавшись отправить его

    Можно ли установить Synapse Launcher в Debian?

    Смущен, почему служба systemd не запускается при загрузке

    Удаление строк из файла, который открывается в меньшем режиме

    Linux и Unix - лучшая ОС в мире.