Перейти к содержимому

Как запустить программу от имени пользователя root без «sudo»?

9

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

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

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

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

26 267 просмотров
UrEl спросил 15 лет назад
U 511

7 ответов

14

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

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

username ALL= NOPASSWD: /path/to/command 

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

sudo command 

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

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

Удивленный, чтобы найти лучший ответ внизу. Спасибо!

CDR · 14 лет назад · 0

К вашему сведению, чтобы решить другую половину (не нужно вводить команду sudo), создайте псевдоним оболочки, который включает в себя sudo (например, surm = sudo rm "$ @")

Walter · 8 лет назад · 0
Walter ответил 14 лет назад
W 416
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.

Способ "Runas" для вашего Mac :) Спасибо

Vlueboy · 15 лет назад · 0
NReilingh ответил 15 лет назад
N 5 044
2

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

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

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

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

atwixtor · 10 лет назад · 0
abdimuna ответил 13 лет назад
A 21
1
Принятый ответ

Are you sure that the program you are trying to execute is actually a binary, and not a shell script. Most shells ignore suid scripts because they are really, really hard to do safely. An easy way to check is to use the file command on the program.

KeithB ответил 15 лет назад
K 7 666
0

You can do

sudo tcsh 

which will put you in a root shell.

DTest ответил 15 лет назад
D 205
0

looks like the program itself checks if is running with ID=0

… Что, конечно, будет, если это суперпользователь set-UID (оставив в стороне проблемы, выраженные выше). Вероятно, вы пытаетесь сказать, что программа проверяет real UID 0, а не только effective UID 0.

JdeBP · 15 лет назад · 1
jet ответил 15 лет назад
J 2 575
-1

You could sudo chown YOUR-USERNAME-HERE BINARY-NAME-HERE.

Still, I totally agree with dmckee's comment.

Как это поможет? ⁠

Scott · 8 лет назад · 0
dag729 ответил 15 лет назад
D 1 581