В OS X, как я могу определить, было ли приложение, запущенное с помощью команды open, запущено с повышенными разрешениями?

В качестве примера я попытался sudo open http://www.google.com/ , но в Activity Monitor не отображается информация, показывающая, что процесс Safari выполняется от имени пользователя root.

3 ответа3

3

(Добавление второго ответа на уточненный вопрос)

Когда вы использовали sudo open http://google.com то система побежала open , как корень, но open на самом деле просто клиент для MacOS LaunchServices , который до сих пор работает как вошедший в системе пользователя.

На самом деле Activity Monitor показывает, что экземпляр Safari, открытый sudo open http:/google.com , не работает от имени пользователя root, поскольку в столбце "Пользователь" отображается ваше имя пользователя, а не пользователь root .

Однако вы можете просто запустить Safari непосредственно из командной строки с помощью sudo, минуя Launch Services:

$ sudo /Applications/Safari.app/Contents/MacOS/Safari http://google.com

Теперь в Activity Monitor вы можете подтвердить, что он работает от имени пользователя root .

0

Я предполагаю, что вы имеете в виду "работает как корень". Обратите внимание, что если вы работаете с правами root, это не значит, что вы работаете с наивысшим приоритетом; использование команды sudo обязательно означает, что процесс выполняется от имени пользователя root.

Но эти два предостережения в стороне, попробуйте это из командной строки терминала:

$ ps aux | grep ^root

Чтобы отфильтровать список процессов для тех, кто работает от имени пользователя root. Или даже (в зависимости от вашей версии Mac OS):

$ ps -u root
0

Чтобы просмотреть журнал процессов, которые были запущены с помощью sudo вы можете выполнить grep system.log:

$ grep sudo /var/log/system.log

Вы также можете использовать консольное приложение. Выберите «system.log» из списка журналов и введите "sudo" в строке поиска.

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