Это - соображение безопасности. Это ограничивает ущерб, который может быть нанесен кем-то, кто врывается в приложение демона. Пользовательское приложение обычно принадлежит стандартному идентификатору пользователя такой как root
.
Если Ваш веб-сервер, почтовый сервер и база данных все выполнение как тот же пользователь это помогает скомпрометировать их. Если у кого-либо из них есть ошибка или неверная конфигурация, которые предоставляют системный доступ, тот доступ может использоваться для доступа ко всем трем приложениям.
Если у них всех будут отдельные учетные записи, как рекомендуется, то только поставленное под угрозу приложение, вероятно, будет доступно. В то время как общедоступные детали конфигурации другого могут быть считаны, маловероятно, что изменения могут быть внесены.
Многие демоны позволяют пользователям загружать и загружать файлы и иначе делать вещи, которые Ваш не хотели бы, чтобы они смогли сделать к конфигурациям для других демонов. Если каждое приложение имеет свой собственный идентификатор пользователя и группу, более просто защитить демонов.
При наличии демона определенная группа делает более простым надежно предоставить демону безопасный доступ, только для чтения в файлы и каталоги. Если файл или каталог будет принадлежать другому пользователю, но будет принадлежать группе демонов, то это обычно будет доступно только для чтения. Права доступа могут быть легко проверены и исправлены с инструментами теми, которые находят.
Можно использовать command
ключевое слово в authorized_keys для ограничения выполнения одной единственной командой для конкретного ключа, как это:
command="/usr/local/bin/mysync" ...sync public key...
Обновление: при определении простого сценария как команды, можно проверить пользователя команды, первоначально предоставленного:
#!/bin/sh
case "$SSH_ORIGINAL_COMMAND" in
/path/to/unison *)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "Rejected"
;;
esac
ssh server -c unison ...
в то время как любая другая попытка соединиться с тем ключом не должна выполнять почти простое соединение мусора – Tobias Kienzler 14.11.2012, 10:32case "$(basename $SSH_ORIGINAL_COMMAND)" in \n unison *)
все же. Причина, я хочу иметь закрытый ключ, который не требует пароля, таким образом, унисон может работать необслуживаемый (например, как cronjob), в то время как тот ключ не должен быть способен к предоставлению доступа SSH. Конечно, унисоном можно было злоупотребить для заменыauthorized_keys
... – Tobias Kienzler 14.11.2012, 11:28