Исполняемый файл 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 для запуска команд, которые нужно запустить как корень, хотя.