7

Как работают разрешения для сервисов в Linux? Я уже знаю, что могу установить разрешения на read , write и execute для файлов и каталогов с помощью chmod каждый для owner , group и other users но как разрешения работают для работающей службы? Как узнать, какие разрешения имеет служба для определенных файлов / каталогов?

1 ответ1

4

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

Например,

$ ps aux | grep apache2
root      2845  0.0  0.2  75596  4508 ?        Ss   Sep06   0:19 /usr/sbin/apache2 -k start
www-data 25608  0.0  0.1  74428  2232 ?        S    Sep09   0:00 /usr/sbin/apache2 -k start
www-data 25609  0.0  0.1  75596  2288 ?        S    Sep09   0:02 /usr/sbin/apache2 -k start
www-data 25610  0.0  0.4 2003664 8436 ?        Sl   Sep09   0:37 /usr/sbin/apache2 -k start
www-data 25611  0.0  0.4 2003788 8584 ?        Sl   Sep09   0:36 /usr/sbin/apache2 -k start
www-data 25700  0.0  0.4 2003648 8528 ?        Sl   Sep09   0:36 /usr/sbin/apache2 -k start

Вы можете видеть, что сервис запущен как пользователем root и www-data . Apache использует root процесс только для привязки к порту 80 (или любому другому порту, который вы настроили). Напомним, что привязка к портам <1024 требует, чтобы вы были пользователем root.

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

Это то же самое для любой услуги; как правило, они имеют

  • Процесс, выполняющийся от имени пользователя root (если они должны связываться с портом <1024; не все службы имеют root процесс), который делегирует задачи менее привилегированному пользователю
  • Процесс, запущенный от имени созданного ими пользователя (bind для BIND, www-data для Apache, proftpd для proftpd и т.д.). Имейте в виду, что их имена различаются в зависимости от системы (Apache иногда работает как apache или apache2 вместо www-data).

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

Это просто общие правила; некоторые процессы даже запускаются полностью как root (например, sshd , хотя он будет использовать пользовательский процесс при подключении). Используйте ps aux чтобы увидеть, под каким пользователем запущен процесс.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .