9

У меня есть определенная двоичная программа на OS X, которая может быть запущена только от имени пользователя root.

Я устал от добавления sudo каждый раз, когда я вызываю его и вводю пароль, и хотел бы, чтобы он автоматически запускался с правами root, когда я регулярно вызываю его, не запрашивая пароль.

Владелец программы - root, а ее группа - wheel.

Я попытался с помощью chmod ug+s установить для имени пользователя и groupid при выполнении значение root/wheel, но когда я запускаю программу без sudo, она все равно жалуется, что она может работать только с sudo или с правами root.

7 ответов7

14

Половина решения вашей проблемы:

в файле sudoers добавьте следующее:

username ALL= NOPASSWD: /path/to/command

Затем из командной строки вы можете ввести:

sudo command

и он запустит команду, не спрашивая ваш пароль. Эта команда будет работать от имени пользователя root.

Обратите внимание, вам нужно будет заменить имя пользователя на фактическое имя пользователя.

4

Если вы действительно не можете вызвать его как демон по какой-либо причине (этот вопрос был бы уместен в этом случае), этот метод можно взломать вместе, но он довольно грязный и совсем не безопасный.

Идея состоит в том, чтобы запустить его с помощью AppleScript. Сначала вам нужно знать, как вызвать процесс из командной строки (что, если вы уже используете sudo, означает, что вы должны быть полностью настроены). Вы запустите этот процесс с помощью команды do shell script и вместо sudo запишите свои учетные данные в AppleScript:

do shell script "/path/to/your/executable/here" user name "me" password "mypassword" with administrator privileges

Я повторяю часть о том, что это небезопасно: ЭТО ОЗНАЧАЕТ, ЧТО ВАШИ АДМИНИСТИЧЕСКИЕ КРЕДИТЫ ХРАНЯТСЯ В РАВНОМ ТЕКСТЕ. Если это вообще возможно, вы должны найти способ справиться с этим как LaunchDaemon.

2

В OSX предположим, что ваша программа находится в /usr /local /bin /YourProgramName ... Чтобы решить эту проблему, выполните следующую команду: Чтобы изменить идентификатор пользователя / идентификатор группы для иерархий файлов, имеющих корни в файлах, а не только в самих файлах.

sudo chown -R $(whoami) /usr/local/bin/

... затем в терминале вызовите имя вашей программы, $ YourProgramName

1

Вы уверены, что программа, которую вы пытаетесь выполнить, на самом деле является двоичным файлом, а не сценарием оболочки? Большинство оболочек игнорируют suid-скрипты, потому что их действительно очень сложно сделать безопасно. Простой способ проверить это - использовать команду file в программе.

0

Ты можешь сделать

sudo tcsh

который поместит вас в корневую оболочку.

0

похоже сама программа проверяет, работает ли с ID = 0

-1

Вы можете sudo chown YOUR-USERNAME-HERE BINARY-NAME-HERE .

Тем не менее, я полностью согласен с комментарием dmckee.

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