Скрипт запрашивает пароль root, даже если он имеет права на выполнение для всех

269
Gorkem

У меня есть скрипт с именем «somescript», который имеет права на выполнение для всех (755), но когда я пытаюсь запустить его с пользователем без полномочий root, он продолжает спрашивать пароль root. Я даже попытался установить 4755 без удачи. Только пользователь с правами администратора и пользователь с паролем root запускают скрипт в данный момент.

Как я могу сделать так, чтобы любой пользователь мог запустить скрипт (но не изменить его)

-rwxr-xr-x 1 root group1 2841 Jul 8 2014 somescript  user@node:~> somescript root's password: 

Редактировать: После того, как я запустил Setuid и Setgid и увидел, что они не работают, я проверил больше через скрипт и обнаружил, что скрипт проверяет имя пользователя root, если он не выполняется через sudo, что заставляет использовать пароль root. Закомментирование этого скрипта должно заставить его работать через установку setuid, поскольку его владельцем является root.

if [ "$uid" != "root" ] then exec sudo /someplace/somescript else 
0
Может быть, что-то ** в ** в скрипте требует повышенных привилегий? Eugen Rieck 8 лет назад 2

1 ответ на вопрос

0
nKn

Вероятно, скрипт запрашивает какую-то операцию с rootпривилегиями, которая не имеет ничего общего с разрешениями (в данном случае), так как эта операция будет выполняться текущим пользователем, а биты SETUIDили не SETGIDвключены.

Вы можете, однако, активировать SETUIDбит в сценарии. Это заставит сценарий запускаться с пользователем-владельцем, в вашем случае root, но пользователю, выполняющему сценарий, не нужно выполнять повышение прав.

Вы можете сделать это, запустив:

chmod u+s somescript 

Подробнее о SETUID/SETGID: Понимание разрешений setuid и setgid для повышения безопасности

Спасибо, обнаруженная проблема была внутри скрипта, сделанного с проверкой рута, добавила решение по моему вопросу. Gorkem 8 лет назад 0

Похожие вопросы