Sudo Java вызывает приложение C и разрешения

Я вызываю C-приложение (только консоль) из моего Java-приложения.
Я вызываю его с помощью: Process proc = rt.exec («./ Debug / CPP_CL —device 0»);
CPP_CL необходим доступ к оборудованию clinfo (), то есть к оборудованию графического процессора для обработки на графическом процессоре. Следовательно, в этом случае необходимо запустить как sudo / root.

На данный момент все работает нормально, но только если я запускаю Java JAR как sudo. В настоящее время только для тестирования CPG — это chmod 777 (я плохо знаю).

То, что я хотел бы знать, каков наилучший способ сделать это? Будет ли CPP работать как SUDO, если он вызывается SUDO Java? Или это нужно chmod’ed? Если это так, что является лучшим значением chmod?

Благодарю.

1

Решение

Запуск Java с рутом, как вы сказали, одна из возможностей, но не совсем хорошая.

Обычные флаги chmod (rwx) тоже вам не помогут.

Просто позвоните с sudo не буду ничего решать Обычно требуется пароль, и если java-программа может его ввести (т. Е. Она знает пароль пользователя root) … что ж, то же самое, что и выше.

Как сказано в комментариях, вы можете добавить исключение в sudo, но есть несколько уловок:
Вы можете указать только файл программы / скрипта, но без ограничений параметров. Вам понадобится файл скрипта, который вызывает ./Debug/CPP_CL --device 0 (лучше с полным путем) и добавьте пакетный файл в качестве исключения.
Кроме того, вы должны убедиться, что файл скрипта не может быть изменен пользователями (chmod файла) и не может быть удален (chmod директории, в которой он находится). Модификация файла будет означать, что модифицирующий пользователь может поместить в него что угодно и запустить его как root, а удаление позволит ему поместить другой файл с таким же именем name = same. Учитывая это, вы можете позвонить с помощью sudo.

Если вы хотите вызвать его без sudo, создайте другой файл сценария, который просто вызывает файл 1 с помощью sudo.

Другой возможностью является специальный SUID-флаг chmod на самой программе (если он включен / поддерживается в вашем дистрибутиве). Но и здесь вы не можете ограничить параметры.

О файлах данных: файл, созданный программой root, будет принадлежать пользователю root. chmod / chown от имени root может изменить это. Если вам нужно только прочитать файл, стандартные маски umasks позволят это во многих системах (если файлы находятся не в корневых каталогах, таких как / root)

1

Другие решения

Ответ:

https://unix.stackexchange.com/questions/18830/how-to-run-a-specific-program-as-root-without-a-password-prompt

Это сработало .. Я смог sudo из Java, и с учетом вышеизложенного PWD не требуется для этого приложения.

0

По вопросам рекламы [email protected]