Как в скрипте, который запускется от обычного пользователя,
получить доступ к последовтельному порту?
--
EM
Средствами, типичными для администрирования данной системы, дать
пользователю доступ к оному порту. В *nix может, например, потребоваться
включить пользователя в группу dialout.
Когда-то давно я делал расширение (вернее custom интерпретатор), который
был предназначен для решения ровно этой задачи - обеспечить доступ к
последовательному порту с более высокими правами, чем те, с которыми
выполняется весь скрипт. Оно у меня еще и uucp-style locking делало
http://www.45.free.net/~vitus/software/tcl/modemtcl.html
Disclaimer. Компилировать это дело я не проболал по-моему со времен tcl
8.0.x
--
EM> Как в скрипте, который запускется от обычного пользователя,
EM> получить доступ к последовтельному порту?
Дать этому пользователю права чтения и записи на этот порт, и дальше
точно так же, как от рута.
--
Artem Chuprina
RFC2822: <ran{}ran.pp.ru> Jabber: r...@jabber.ran.pp.ru
Если ты не боишься синего экрана, то почему боишься черного?
(c) Д.Белявский
Victor Wagner wrote:
> Средствами, типичными для администрирования данной системы, дать
> пользователю доступ к оному порту. В *nix может, например, потребоваться
> включить пользователя в группу dialout.
У меня (Gentoo) для /dev/ttySx (tts/x) определена группа tty, а к dialout
тносятся всякие isdn и ippp. К группе tty относится довольно много всяких
устройств.
Хорошо ли разрешать обычному пользователю доступ к этим устроствам?
> Когда-то давно я делал расширение (вернее custom интерпретатор), который
> был предназначен для решения ровно этой задачи - обеспечить доступ к
> последовательному порту с более высокими правами, чем те, с которыми
> выполняется весь скрипт. Оно у меня еще и uucp-style locking делало
http://www.45.free.net/~vitus/software/tcl/modemtcl.html
Кстати :)
The requested URL /pub/tcl/modemtcl-0.1.tar.gz was not found on this server.
Но мне это, наверно не понадобится.
--
> Как в скрипте, который запускется от обычного пользователя,
> получить доступ к последовтельному порту?
open /dev/ttyN {NONBLOCK RDWR} ?
Только пользователя зачислить в группу, для которой запись в порты
разрешена (в Debian, например, это dialout). И ещё ВЕСЬМА ЖЕЛАТЕЛЬНО
создать lock-файл для данного порта, в /var/lock обычно, где (в файле)
записан PID твой. Это чтоб две программы за один порт не передрались.
Kirill Frolov wrote:
> open /dev/ttyN {NONBLOCK RDWR} ?
Это-то понятно.
> Только пользователя зачислить в группу, для которой запись в порты
> разрешена (в Debian, например, это dialout).
Как я уже писал, у меня это группа tty. К ней относится довольно много
устройсв,
а я по своей неопытности в nix, не знаю хорошо ли помещать в эту группу
обычного
пользователя.
В принципе, потом этот скрипт можно пускать из под sudo (это программатор
для атмеловских микроконтроллеров at89c51rd/ed). Но вот на время отладки
хотелось
бы больше удобств. В емаксовом соминте я его тоже запускаю через sudo вот так
-----------------
#!/bin/sh
# The next line is executed by /bin/sh, but not tcl \
exec sudo /usr/bin/tclsh "$0" ${1+"$@"}
....
------------
но если что внем пошло не так, то его хрен прибьешь через C-c C-c.
только через root-вый терминал. А это неудобно :(
> И ещё ВЕСЬМА ЖЕЛАТЕЛЬHО
> создать lock-файл для данного порта, в /var/lock обычно, где (в файле)
> записан PID твой. Это чтоб две программы за один порт не передрались.
Кстати...
--
EM
>> Только пользователя зачислить в группу, для которой запись в порты
>> разрешена (в Debian, например, это dialout).
EM> Как я уже писал, у меня это группа tty. К ней относится довольно много
EM> устройсв,
EM> а я по своей неопытности в nix, не знаю хорошо ли помещать в эту группу
EM> обычного
EM> пользователя.
Обычно в таких случаях нужному устройству присваивают другую группу.
--
Artem Chuprina
RFC2822: <ran{}ran.pp.ru> Jabber: r...@jabber.ran.pp.ru
/dev/null-транспортировка