Запустите мой исполняемый файл автоматически как root Ubuntu

0

Я работаю в Ubuntu 14.04 У меня есть приложение C++, которое я скомпилировал. Я получаю исполняемый файл, имя которого является "программой". Ну, дело в том, что эта программа использует opencv и сокеты, если я попытаюсь выполнить ее в терминале следующим образом:

./program

Я получил эту ошибку:

listener: socket: Operation not permitted
setsockopt: Bad file descriptor

Эта ошибка возникает из-за того, что я использую сокет, и мне нужно запустить мое приложение как root, поэтому я вот что:

sudo ./program

Этот запрос мой пароль и программа работают нормально.

Дело в том, что я хочу запустить эту "программу" автоматически, когда я запускаю Ubuntu, но это не сработает. У меня есть другое приложение, которое называется "камера", в котором используется только opencv, no socket, тогда мне не нужно запускать с правами root. Поэтому я помещал это приложение в приложение для запуска ubuntu, а приложение "камера" начиналось с самого начала без проблем.

Поэтому я предполагаю, что моя проблема в том, что мне нужно запускать как root свою "программу", но я не могу ее получить.

Кто-то может мне помочь?

Большое спасибо

  • 0
    Вы можете настроить /etc/sudoers , или запустить вашу программу через crontab , или в ваших скриптах инициализации.
  • 1
    Вы можете использовать порт, который не требует корневых разрешений для прослушивания.
Показать ещё 2 комментария
Теги:
sockets

1 ответ

1
Лучший ответ

Вам необходимо изменить право собственности на программу на root: root и использовать разрешение setuid, чтобы оно выполнялось с разрешениями его владельца, а не с пользователем, который его вызывал.

sudo chown root:root ./program
sudo chmod a+s ./program

Теперь программа будет работать с правами root для всех пользователей.

Надеюсь, это поможет.

Замечание: как программист вы должны стремиться к тому, чтобы программы, которые запускались с привилегиями root, были свободны от дыр в безопасности, чтобы они не были уязвимы для эксплойтов переполнения буфера и т.д.

  • 0
    «Примечание стороны» не может быть подчеркнуто достаточно. Если ваша программа имеет какое-либо переполнение буфера или использует библиотеку (например, libc), у которой она есть, то ваша система принадлежит. Если это вообще возможно, перепроектируйте вашу программу, чтобы она могла работать как пользователь без полномочий root (возможно, со специальными разрешениями).
  • 0
    Привет, спасибо за ваш ответ, дело в том, что когда я запускаю программу apeear, это Gtk-WARNING **: Этот процесс в настоящее время работает setuid или setgid. Это не поддерживаемое использование GTK +. Вместо этого вы должны создать вспомогательную программу. Для получения дополнительной информации см.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню