Рейтинг:0

как разрешить непривилегированному пользователю запускать программу, требующую прав root, без пароля?

флаг au
j0h

У меня есть программа, которую я написал, и она обращается к оборудованию (файлам устройств) и требует прав root для запуска. Я хотел бы, чтобы эта программа могла выполняться непривилегированным пользователем без необходимости ввода пароля root. Я попытался изменить разрешения с помощью sudo chmod u+s имя_программы перезагружаюсь, но программа не запускается с sudo ./имя_программы

Я помню, как делал это лет 12 назад, но сейчас не могу понять. Какие-нибудь советы?

waltinator avatar
флаг it
Прочтите `man sudoers visudo`.
Рейтинг:2
флаг cn

Если вы установите владельца исполняемого файла вашей программы на корень с

sudo chown корень /путь/к/программе/исполняемому файлу

а затем установите бит setuid с помощью

sudo chmod u+s /путь/к/программе/исполняемому файлу

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

Первый шаг очень важен. Функция бита setuid состоит в том, чтобы заставить программу работать с UID владельца файла. Если этот владелец не корень то программа не будет иметь привилегий root, даже если вы запустите ее с судо, так как бит setuid переопределяет эффект судо.

Так либо запустите свою программу с судо или же установите бит setuid с помощью chmod u+s, но не оба.

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

j0h avatar
флаг au
j0h
мило, это работает. Я понимаю последствия для безопасности, но устройство - это ручка. IDK, возможно, его можно взломать, но я думаю, что это будет безопасно для того, чем я занимаюсь. веб-сервер, на котором он находится, является более вероятной целью, но не в Интернете. Я ценю помощь.

Ответить или комментировать

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