перед входом:
$ ps -elf | grep sshd
5 S root 26135 1 0 80 0 - 13115 ? 17:26 ? 00:00:00 /usr/sbin/sshd
0 S test 26480 21337 0 80 0 - 4154 - 18:41 pts/27 00:00:00 grep --colour=auto sshd
после входа в систему:
$ ps -elf | grep sshd
5 S root 26135 1 0 80 0 - 13115 ? 17:26 ? 00:00:00 /usr/sbin/sshd
4 S root 26577 26135 0 80 0 - 24204 ? 18:42 ? 00:00:00 sshd: test [priv]
5 S test 26582 26577 0 80 0 - 24204 ? 18:42 ? 00:00:00 sshd: test@pts/30
0 S test 26653 21337 0 80 0 - 4155 - 18:42 pts/27 00:00:00 grep --colour=auto sshd
Для чего нужны эти два процесса?
4 S root 26577 26135 0 80 0 - 24204 ? 18:42 ? 00:00:00 sshd: test [priv]
5 S test 26582 26577 0 80 0 - 24204 ? 18:42 ? 00:00:00 sshd: test@pts/30
Спасибо,
Разделение привилегий - один процесс сохраняет привилегии root для выполнения действий, которые может делать только root, а другой - все остальное.
В то время, когда задавался этот вопрос, разделение привилегий контролировалось опцией в sshd_config
, а sshd_config
страница руководства объяснила, для чего это нужно. Разделение привилегий стало обязательным в версия 7.5, так что этот вариант и его документация исчезли. Я больше не знаю, где найти каноническую документацию по функции разделения привилегий, если такая документация существует.
В последней версии элемента справочной страницы перед удалением говорилось:
UsePrivilegeSeparation
- Указывает, разделяет ли sshd (8) привилегии путем создания непривилегированного дочернего процесса для обработки входящего сетевого трафика. После успешной аутентификации будет создан другой процесс с привилегиями аутентифицированного пользователя. Цель разделения привилегий - предотвратить эскалацию привилегий путем сдерживания любых повреждений непривилегированных процессов. Аргумент должен бытьyes
,no
, илиsandbox
. ЕслиUsePrivilegeSeparation
установлен наsandbox
то на непривилегированный процесс предварительной аутентификации накладываются дополнительные ограничения. По умолчаниюsandbox
.