Практика заключается не в создании одного пользователя и группы для приложения, а для каждой службы. То есть программы, которые выполняются локальным пользователем, не нужно устанавливать как пользователь, отличный от пользователя 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 и группы программы).