Практика заключается не в создании одного пользователя и группы для приложения, а для каждой службы. То есть программы, которые выполняются локальным пользователем, не нужно устанавливать как пользователь, отличный от пользователя root. Это демоны , программы, работающие в фоновом режиме и выполняющие запросы, поступающие через сеть или другие средства связи, которые должны запускаться как выделенный пользователь.
Демон запускается как выделенный пользователь, поэтому, если он плохо себя ведет (из-за ошибки, возможно, вызванной злоумышленником), ущерб, который он может нанести, ограничен: затрагиваются только файлы данных демона (если злоумышленнику не удалось найти локальную корневую дыру) , что может случиться). Например, демон базы данных mysqldработает как выделенный пользователь и группа, mysql:mysqlи файлы данных базы данных ( /var/lib/mysql/*) принадлежат mysql:mysql.
Обратите внимание, что исполняемый файл демона и другие статические данные и файлы конфигурации, которые используются, но не должны изменяться демоном, не должны принадлежать выделенному пользователю; они должны принадлежать 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 и группы программы).