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

В большинстве случаев при установке программы из исходного кода рекомендуется создать нового пользователя и новую группу и предоставить /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
  • ltconfig не найден
  • Обновление ffmpeg
  • Как установить Scala?
  • Как мне перейти на новый Firefox через YaST в OpenSuSE 11.x?
  • установка Scilab в OpenSUSE 11.3
  • Почему старый двоичный файл все еще работает?
  • Где должен быть размещен локальный исполняемый файл?
  • Почему я не могу запускать программы, извлеченные из архива?
  • Как установить компилятор C в Linux?
  • Приложение «Календарь / Планирование»
  • Interesting Posts

    Интерпретация вывода dmesg и /var/log/boot.log

    закодированные по электронной почте электронные письма и сжатие

    Абсолютный путь от пользовательского ввода без потери символических ссылок внутри

    Изменение пустой строковой переменной внутри оператора switch в функции bash

    Прямой доступ к видеокарте QEMU (или видеовыход QEMU без X11)

    Ограничения файла getrlimit (RLIMIT_NOFILE) не удалось

    Как имитировать периодическое нажатие кнопки на веб-странице?

    Как определить службу системы Ubuntu Linux16.04 для fastcgi-mono-server4 или xsp4?

    запустить tcpdump не до содержимого пакета interpert

    как настроить для каждой сессии bash

    CentOS Live CD не будет устанавливать сервер

    Какова настройка в bash для globbing, чтобы контролировать, совпадает ли * с точечными файлами

    Как я могу перенаправить порты 80 и 443 на 8080 и 8443 с помощью iptables?

    Какая команда всегда генерирует один и тот же UUID через / proc / sys / kernel

    kioclient KMimeTypeRepository :: родители: "/ usr / share / mime / subclasses" относится к неизвестному mimetype "application / vnd.ms-excel …"

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