Это нормально для Mac OS X. Раньше было нормально почти на всех системах Unix-oid. Он запускается с правами root без sudo, потому что бинарный файл ps настроен для запуска с правами root (например, в моей системе 10.4):
% ls -l $(which ps) -rwsr-xr-x 1 root wheel 31932 Mar 20 2005 /bin/ps
( s
вместо x
столбца user-owner означает, что он является set-uid (и исполняемым пользователем), владелец является root; это означает, что независимо от того, кто его запускает, он будет работать от имени root)
Традиционно (и до сих пор имеет место в системах Mac OS X), он должен работать от имени пользователя root, поскольку необходимая ему информация доступна только через устройства, доступные для пользователя root (например, / dev / kmem), или системные вызовы только root. Это нормально, потому что (если в реализации нет ошибок) программа ps написана так, чтобы вызывающие не могли получить информацию, которой они не должны были бы получить в противном случае.
Другие системы имеют другие механизмы, которые предоставляют доступ к информации, которая необходима для ps, и, следовательно, не нуждаются в двоичных файлах ps set-uid . В частности, виртуальная файловая система / proc в системах Linux (и других) может публиковать очень мелкозернистую информацию ядра с такими же мелкими разрешениями. Такая модель достаточна для того, чтобы непривилегированный ps мог получить все, что ему нужно, без предоставления доступа к более чувствительным битам информации ядра.