Можете ли вы назначать возможности Linux пользователям?

Open () предлагает способ блокировать файлы во время их использования. Если бы файлы автоматически открывались, читались / записывались, а затем снова закрывались ОС, ничто не мешало бы другим приложениям изменять эти файлы между операциями.

Хотя этим можно управлять (многие системы поддерживают неисключительный доступ к файлам), для простоты большинство приложений предполагают, что файлы, которые они открывают, не изменяются.

1
28.02.2019, 14:13
1 ответ

Да, можно предоставить дополнительные возможности процессам, работающим от имени не -root-пользователя в Linux, что может быть полезно, чтобы позволить этим пользователям запускать двоичный файл без -setuid pingили запускать серверы. которые привязаны к привилегированному порту (< 1024 ).

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

(Вы также можете использовать наследуемые возможности, но для этого вам потребуется пометить двоичные файлы, которые будут выполняться, соответствующими файловыми возможностями, используя setcap.)

Примером использования capsh (1)для запуска не -setuid ping от имени не -пользователя root может быть:

sudo capsh --caps="cap_net_raw+eip cap_setpcap,cap_setuid,cap_setgid+ep" \
    --keep=1 --user=nobody --addamb=cap_net_raw -- \
    -c "./ping -c1 127.0.0.1"

Обратите внимание, что вам нужны capsh и libcap версии 2.25+ (для--addamb)и ядро ​​Linux 4.3+ для поддержки внешних возможностей. См. этот вопрос для более подробной информации (источник команды выше.)

Обратите внимание, что вам нужно sudoдля приведенной выше команды (, поскольку только root может добавлять возможности ), но к тому времени, когда pingвыполняется, пользователь был удален до «никто», поэтому pingсам по себе никогда не запускается с полными привилегиями root, только с cap _net _raw.

Еще одна ситуация, в которой возможности могут быть полезны, — это запуск демона. Например,запуск HTTP-сервера на порту 80 без необходимости запускать его с правами root и сбрасывать привилегии только после привязки к порту.

systemd предлагает директивы для настройки возможностей сервисных единиц, а также может запускать процесс как не -root, настроив User=для сервиса. В случае запуска процессов от имени пользователя root, отличного от -, с дополнительными возможностями вам также может понадобиться поддержка внешних возможностей, для чего потребуется ядро ​​Linux 4.3+.

4
27.01.2020, 23:30

Теги

Похожие вопросы