Могу ли я запустить программу на 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
Другие вопросы по тегам