Исполняемый файл Ruby gem с SUID не работает должным образом

Как вы можете видеть на изображении ниже, я сменил владельца моего emerald_setupСкрипт для root:root, а также установить SUID.

введите описание изображения здесь

Бывает, что когда я устанавливаю гем и проверяю этот скрипт, он принадлежит edvaldo:edvaldo (мое имя пользователя) и вообще не имеет SUID!

введите описание изображения здесь

Я не знаю точно, что происходит, но этот скрипт вносит изменения в /etc/hosts а также создает некоторые правила брандмауэра. Это требует прав суперпользователя.

Итак, мои вопросы:

  • Что мне не хватает в этом случае SUID?

  • Как мне убедиться, что для исполняемого файла gem будет установлен SUID?

Конечно, я знаю, что могу попросить пользователя запустить этот скрипт, используя

$ sudo emerald_setup

но это привело бы меня к другой проблеме, так как исполняемый файл gem установлен в пространстве пользователя, и его местоположение НЕ находится в пути суперпользователя, и для установки этого (угадайте, что?!) требуются привилегии суперпользователя.

Какие-либо предложения?

1 ответ

Решение

Вы не можете упаковать программу / скрипт с привилегиями suid в гем (или даже в tar-архив) и восстановить эти привилегии при распаковке как обычный пользователь. В какой-то момент, кто бы ни установил ваш гем, он должен будет предоставить пароль для root-доступа. Вы можете сделать так, чтобы это происходило, когда gem установлен, с помощью цели: install для gem Rakefile запустил скрипт, который запрашивал бы у пользователя пароль su (do), а затем использовал sudo для запуска команд, которые нужно запустить как корень, хотя.

Другие вопросы по тегам