Почему зарегистрированный пользователь «root», когда «обычный пользователь» выполняет «ps ux» в OS X? Это нормальное поведение?

642
snies

Я использую 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.

3
Кто-нибудь с 10,5 и раньше? Всегда ли так было? Thilo 14 лет назад 0

1 ответ на вопрос

10
Chris Johnsen

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