Это нормально для 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
вместо столбца user-owner x
означает, что это set-uid (и исполняемый пользователем), владелец - root; это означает, что независимо от того, кто его запускает, он будет работать как root)
Традиционно (и до сих пор имеет место в системах Mac OS X), он должен работать от имени пользователя root, поскольку необходимая ему информация доступна только через устройства, доступные для пользователя root (например, /dev /kmem), или системные вызовы только для пользователя root. Это нормально, потому что (если в реализации нет ошибок) программа ps написана так, чтобы вызывающие не могли получить информацию, которой они не должны были бы получить в противном случае.
Другие системы имеют другие механизмы, которые предоставляют доступ к информации, которая необходима для ps, и, следовательно, не нуждаются в двоичных файлах ps set-uid. В частности, виртуальная файловая система /proc в системах Linux (и других) может публиковать очень мелкозернистую информацию ядра с такими же мелкими разрешениями. Такая модель достаточна для того, чтобы непривилегированный ps мог получить все, что ему нужно, без предоставления доступа к более чувствительным битам информации ядра.