Назад | Перейти на главную страницу

Владелец не может читать / proc / $ pid / io

В CentOS 7 я пытаюсь отладить проблему, при которой агент усиления nginx не может читать / proc / $ pid / io, даже если он принадлежит соответствующему пользователю.

Один из рабочих процессов nginx сейчас - pid 5693:

# ps aux | grep 5693
nginx     5693  0.5  0.0 129000 14120 ?        S    Jul18  16:10 nginx: worker process

у пользователя nginx есть разрешение на чтение файла:

# ls -lAh /proc/5693/io
-r-------- 1 nginx nginx 0 Jul 20 11:30 /proc/5693/io

... но не могу его прочитать:

# sudo -u nginx /bin/sh -c 'cat /proc/5693/io'
cat: /proc/5693/io: Permission denied

... даже если selinux отключен:

# sestatus
SELinux status:                 disabled

Root может нормально читать / proc / 5693 / io, а пользователь nginx может читать другие файлы в / proc / 5693. Похоже, должен быть какой-то другой механизм безопасности, который предотвращает доступ, но я понятия не имею, что это может быть.

Примечание: не уверен, разрешено ли это, но я передаю этот вопрос из U&L, поскольку он не привлекает внимания и влияет на наш производственный сервер. Исходный вопрос здесь: https://unix.stackexchange.com/questions/297190/owner-cant-read-proc-pid-io - Я бы просто перенес его, но не вижу способа сделать это.

Ответили здесь: https://unix.stackexchange.com/questions/297190/owner-cant-read-proc-pid-io

Проблема, похоже, в том, что помимо uid необходимо установить GID.

Для процесса агента амплификации может потребоваться предоставить PTRACE. Это выглядит несколько необычно и, вероятно, лучше всего обсудить с ребятами из nginx, но вы можете попробовать посмотреть на man 8 setcap, чтобы узнать, как предоставить PTRACE любой программе расширения.