3

Я использую OS X 10.6.1. Когда я вошел в систему как обычный пользователь группы сотрудников и сделать

ps ux

она перечисляет мою команду ps ux как выполняемую пользователем root:

snies   181   0.0  0.3  2774328  12500   ??  S     6:00PM   0:20.96 /System/Library...
root   1673   0.0  0.0  2434788    508 s001  R+    8:16AM   0:00.00 ps ux
snies   177   0.0  0.0  2457208    984   ??  Ss    6:00PM   0:00.52 /sbin/launchd
snies  1638   0.0  0.0  2435468   1064 s001  S     8:13AM   0:00.03 -bash

Это нормальное поведение? И если так, то почему? Обратите внимание, что пользователь не является учетной записью администратора и не может выполнять sudo.

1 ответ1

10

Это нормально для 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 мог получить все, что ему нужно, без предоставления доступа к более чувствительным битам информации ядра.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .