Использование setcap
для предоставления дополнительных разрешений двоичному файлу должно записать новое разрешение где-нибудь, в хранилище или в памяти, где оно хранится?
Использование lsof
as is не работает, потому что процесс исчезает слишком быстро.
capabilities
setcap
Zulgrib
источник
источник
/usr/bin/sleep
и дайте возможности этой копии.Ответы:
Расширенные разрешения, такие как списки контроля доступа, установленные с помощью
setfacl
и установленные флаги возможностейsetcap
, хранятся в том же месте, что и традиционные разрешения, и устанавливают флаги идентификатора [ug], установленные с помощьюchmod
: в inode файла.(Они могут фактически храниться в отдельном блоке на диске, потому что индекс имеет фиксированный размер, в котором есть место для традиционных битов разрешений, но не для потенциально неограниченных расширенных разрешений. Но это имеет значение только в редких случаях, таких как необходимость заботиться о том, что
setcap
может не хватить места на диске. Но дажеchmod
может не хватить места на диске в системе, которая использует дедупликацию!)GNU ls не отображает атрибуты setcap файла. Вы можете отобразить их с помощью
getcap
. Вы можете перечислить все расширенные атрибуты с помощьюgetfattr -d -m -
; Атрибут setcap вызывается,security.capability
и он кодируется в двоичном формате, которыйgetcap
декодирует для вас.источник
setcap устанавливает возможности файлов, которые хранятся в расширенном атрибуте файловой системы. Это объясняется в
man 7 capabilities
:Вы можете проверить возможности запущенного процесса, изучив поля CapInh / CapPrm / CapEff в
/proc/PID/status
. См. Мой ответ на « Как установить возможности с помощью команды setcap? » Для объяснения того, как эти возможности применяются к процессу в exec.источник