В 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 любой программе расширения.