Могу ли я запустить программу на C, содержащую setuid() без sudo?
Я пытаюсь выполнить программу на C от нескольких пользователей и пытаюсь войти в систему как другой пользователь в программе для доступа к файлу. Но я получаю ошибку
setuid: операция не разрешена
Могу ли я сделать что-то такое, что мне не нужно каждый раз использовать sudo? Например, дать полный доступ к программе для использования setuid, как она хочет, без вызова sudo каждый раз?
2 ответа
В зависимости от системы и ваших привилегий в ней, вы можете изменить владельца или группу программы на того, у которого есть привилегии для setuid, а затем установить режим setuid или setgid для исполняемого файла через chmod
:
chgrp wheel my-awesome-program
chmod g+s my-awesome-program
или же
chown superduperuser my-awesome-program
chmod u+s my-awesome-program
Помните, что таким образом вы создаете потенциальную дыру в безопасности. Если кто-то может перезаписать вашу программу, он может использовать ее для получения привилегий. Делайте это с осторожностью.
Вам просто нужно использовать setuid
на самом исполняемом файле программы, используя chmod
:
sudo chmod u+s executable