Может быть, для вас может быть проверка группы файлов устройства:
adam@sabayon ~ $ ls -lash /dev/ttyS*
0 crw-rw---- 1 root uucp 4, 64 03-10 13:20 /dev/ttyS0
0 crw-rw---- 1 root uucp 4, 65 03-10 13:20 /dev/ttyS1
0 crw-rw---- 1 root uucp 4, 66 03-10 13:20 /dev/ttyS2
0 crw-rw---- 1 root uucp 4, 67 03-10 13:20 /dev/ttyS3
Для меня это uucp.И добавьте в эту группу пользователя, который запускает ваш скрипт cgi (для моей системы uucp).Но вы должны помнить, что все другие сценарии cgi, запущенные этим пользователем, также будут иметь доступ к UART.
РЕДАКТИРОВАТЬ:
Для веб-сервера apache это выглядит как suEXEC может быть решением для вас.
Функция suEXEC предоставляет пользователям Apache возможность запускать программы CGI и SSI под идентификаторами пользователей, отличными от идентификатора пользователя вызывающего веб-сервера.Обычно, когда выполняется программа CGI или SSI, она запускается как тот же пользователь, который запускает веб-сервер.
Таким образом, вы можете создать нового пользователя для своего сценария cgi, настроить его правильно и затемиспользуйте его со своим сценарием apache.
Вот документация для suEXEC: http://httpd.apache.org/docs/2.0/suexec.html
Я никогда не использовал его, но надеюсь, что это поможет.