2015-03-25 2 views
0

Я пишу программу в Java для встроенной Linux-платформы. Одна из функций ОС, которые мне нужны, должна запускаться от имени root для доступа. Платформа, которую я использую, это BeagleBone Black, и я хочу управлять контактами Gpio, используя карту памяти. У меня есть доступ к карте памяти и вы можете включать и выключать булавки с очень высокой скоростью. Проблема в том, что я не хочу, чтобы моя программа работала как суперпользователь, по крайней мере, не кажется правильным ее реализовать.Есть ли служба Linux

Есть ли стандартная технология в linux, которая будет работать от имени пользователя root и позволит пользователю выполнить вызовы?

Я знаю, что должно быть, я просто не знаю, что это такое. Любая помощь будет оценена по достоинству.

+1

Я думаю, что вы должны взглянуть на * модули ядра *. –

+1

Какая у вас внешняя проблема? Использование карты памяти просто похоже на то, чтобы сделать вещи сложнее без всякой причины. –

+0

Моя программа написана в java. Я мог бы переключать контакты, используя чтение и запись файлов, но это очень медленно. Если нет лучшего способа сделать это, я буду использовать файл io, это просто кажется ограничивающим. – Sting

ответ

2

Что вы хотите сделать, это привилегии на высылку. Вместо того, чтобы любой процесс выполнялся с правами root на время, это позволяет начать процесс с правами root, открыть ресурсы и затем перейти к другому непривилегированному пользователю. Вам все равно нужно запустить программу как root, что может быть выполнено с помощью скрипта setuid, чтобы вы не нуждались в том, чтобы пользователь был root, чтобы запустить его. (Это делается с другими программами, такими как sudo.)

Вы можете открыть файл с правами администратора, а затем изменить uid программы на непривилегированного пользователя (предположительно, пользователя, который запустил программу). Взгляните на this answer, чтобы узнать, как удалить привилегии на Java с помощью JNI и this answer для получения дополнительной информации о надежном способе сброса привилегий в целом.

Смежные вопросы