У меня есть определенная двоичная программа на OS X, которая может быть запущена только от имени пользователя root.
Я устал от предвосхищения sudo
каждый раз, когда я вызываю его и вводю пароль, и хотел бы, чтобы он автоматически запускался с правами root, когда я регулярно вызываю его, не запрашивая пароль.
Владелец программы - root, а ее группа - wheel.
Я попытался chmod ug+s
установить для имени пользователя и groupid при выполнении значение root / wheel, но когда я запускаю программу без sudo, она по-прежнему жалуется, что она может работать только с sudo или с правами root.
nosuid
параметр монтирования… в дополнение к тому, почему вы должны регулярно запускать программу в качестве суперпользователя.Ответы:
Вы уверены, что программа, которую вы пытаетесь выполнить, на самом деле является двоичным файлом, а не сценарием оболочки? Большинство оболочек игнорируют suid-скрипты, потому что их действительно очень сложно сделать безопасно. Простой способ проверить это использовать
file
команду в программе.источник
Половина решения вашей проблемы:
в файле sudoers добавьте следующее:
Затем из командной строки вы можете ввести:
и он запустит команду, не спрашивая ваш пароль. Эта команда будет работать от имени пользователя root.
Обратите внимание, вам нужно будет заменить имя пользователя на фактическое имя пользователя.
источник
Если вы действительно не можете вызвать его как демон по какой-либо причине (этот вопрос будет актуален в этом случае) , этот метод можно взломать вместе, но он довольно грязный и совсем не безопасный.
Идея состоит в том, чтобы запустить его с помощью AppleScript. Сначала вам нужно знать, как вызвать процесс из командной строки (что, если вы уже используете sudo, означает, что вы должны быть полностью настроены). Вы запустите этот процесс с помощью
do shell script
команды и вместо sudo запишите свои учетные данные в AppleScript:Я повторяю часть о том, что это небезопасно: ЭТО ОЗНАЧАЕТ, ЧТО ВАШИ АДМИНИСТИЧЕСКИЕ КРЕДИТЫ ХРАНЯТСЯ В РАВНОМ ТЕКСТЕ. Если это вообще возможно, вы должны найти способ справиться с этим как LaunchDaemon.
источник
В OSX предположим, что ваша программа находится в / usr / local / bin / YourProgramName ... Чтобы решить эту проблему, выполните следующую команду: Чтобы изменить идентификатор пользователя / идентификатор группы для файловых иерархий, коренящихся в файлах, а не только в самих файлах ,
sudo chown -R $(whoami) /usr/local/bin/
... затем в терминале вызовите имя вашей программы, $ YourProgramName
источник
Ты можешь сделать
который поместит вас в корневую оболочку.
источник
похоже сама программа проверяет, работает ли с ID = 0
источник
Вы могли бы
sudo chown YOUR-USERNAME-HERE BINARY-NAME-HERE
.Тем не менее, я полностью согласен с комментарием dmckee.
источник