У меня есть скрипт с именем "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

1 ответ1

0

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

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

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

chmod u+s somescript

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

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