LINUX.ORG.RU

Работа с параллельным портом не в root и closed source


0

0

Покопался я тут в Инете на предмет обращения в ГНУ/Линуксе к параллельному порту без прав администратора, и как-то не нашёл другой возможности как через parport. Но он не LGPL (pppdev.h). Да и в ядре не приветствуются nonGPL модули. Не уж то нет ничего кроме как грубых ioperm(), outb(), которые не переваривает обычный пользовательский аккаунт? Должно ж быть что-то другое! С последовательным портом проблем же нет (termios.h - LGPL).

Андрей

anonymous

chgrp portusers /dev/port

Далее добавляем нужных пользователей в группу portusers и всё взаимодействие с параллельным портом делаем через /dev/port.

Но это на самом деле не очень хорошо, так как пользователи в группе portusers имеют доступ ко всем портам сразу и могут чего-нибудь натворить. Лучше всего ИМХО для взаимодействия с параллельным портом написать маленькую программу-демон, которая только это и будет делать. И запускать её от имени root'а (например поставить SUID-бит). А программа, запущенная от непривилегированного пользователя, пусть обменивается данными с этим демоном через unix-сокеты, разделяемую память или ещё как нибудь.

Deleted
()
Ответ на: комментарий от Deleted

Спасибо за идею!

Я хотел использовать libieee1284: API показался кратким и понятным. Запустил уже тестовое приложение, как выяснилось, что он GPL.

На parapin взглянул на сайте, не очень понравилось, что там, насколько я понял, нужно ещё модуль подгружать. Такая зависимость внушает неуверенность: вдруг при очередном обновлении ядра, он не соберётся, а разработчик не будет быстро реагировать, т.к. проект не особо важный.

А всего-то мне нужно заменить эти две строчки: ioperm&outb. Кажись, малой кровью не выйдет :(

anonymous
()
Ответ на: комментарий от amaora

Если хочеться чтоб всё самому - то напиши мааааленький модуль ядра, который будет регистрировать какое-нибудь устройство, например /dev/myport, и будет вызовы read/write направлять в физический порт. А внутри драйвера делаешь проверку, чтоб допустим не во все порты писать можно было и не всё что хочешь.

garikello
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.