Из руководства bash
:
PS1 The value of this parameter is expanded (see PROMPTING below) and used as the primary prompt string. The default
value is ``\s-\v\$ ''.
PS2 The value of this parameter is expanded as with PS1 and used as the secondary prompt string. The default is ``>
''.
PS3 The value of this parameter is used as the prompt for the select command (see SHELL GRAMMAR above).
PS4 The value of this parameter is expanded as with PS1 and the value is printed before each command bash displays
during an execution trace. The first character of PS4 is replicated multiple times, as necessary, to indicate
multiple levels of indirection. The default is ``+ ''.
Определение PS3
не указывает не , что оно расширяется таким же образом, как и другие строки приглашения. Поведение, которое вы видите, соответствует документации.
Они полные противоположности:
AmbientCapabilities
предоставляет возможности, с которыми процесс обычно не начинался бы.
CapabilityBoundingSet
ограничивает возможности, которые процесс может получить. Это не дает никаких.
Для вашей задачи достаточно установить AmbientCapabilities для предоставления привилегий — ограничивающий набор уже разрешает все по умолчанию, поэтому его не нужно менять.
Вместо этого последний предназначен для усиления безопасности. Даже если служба буквально работает как root (uid 0 )— или вызывает корневую программу с setuid -, например «su» или «sudo», — она никогда не сможет получить какие-либо привилегии, которых нет в ее ограничивающем наборе.
Но вы можете (и, возможно, должны )установить и то, и другое, если вы уверены, что ваша служба не будет напрямую запускать что-либо, требующее более высоких привилегий.
Таким образом, чтобы ответить на исходный вопрос, мы должны включить
AmbientCapabilities=CAP _NET _BIND _SERVICE
в служебном файле и запустить его как непривилегированный -пользователь, правильно?