Не могу сделать ioctl /dev/tty1 из под юзера [Не решено]
Добрый день
Проблема началась с того, что не работает DirectFB из под юзера. Полез в исходники, нашел проблемные строки, повторил в python.
Дано:
юзер irus, состоящий в группе tty ;
файл, доступный для чтения, писания группой tty
crw-rw---- 1 root tty 4, 1 Фев 18 20:40 /dev/tty1
Код DirectFB, который выдает ошибку при запуске из под юзера:
ioctl( dfb_vt->fd, TIOCSCTTY, 0 ); if (ioctl( dfb_vt->fd, KDSKBMODE, K_MEDIUMRAW ) < 0) { D_PERROR( "DirectFB/fbdev/vt: K_MEDIUMRAW failed!\n" ); close( dfb_vt->fd ); return DFB_INIT; }
где dfb_vt->fd -- дескриптор файла /dev/tty1
Эксперимент на питоне из под того же юзера:
>>> myf=open('/dev/tty1', 'rw') >>> myf <open file '/dev/tty1', mode 'rw' at 0x7fab87232e00> >>> fcntl.ioctl(myf, termios.TIOCSCTTY,0) Traceback (most recent call last): File "<stdin>", line 1, in <module> IOError: [Errno 1] Operation not permitted
Как разрешить доступ? Не хочу я, что бы на HTPC фильмы под root'ом показывались
UPD:
Вычитал на opennet
Управление tty
TIOCSCTTY int arg
Определяет заданный tty как управляющий tty текущего процесса.
Текущий процесс должен быть основной сессией и не иметь ни одного управляющего терминала. Если этот tty уже является управляющим tty другой группы сессий, то ioctl завершается с ошибкой EPERM, если только его не вызывает root и arg не равно 1 - в этом случае tty отбирается и сбрасывается во всех процессах, где он был указан как управляющий tty.
Видимо, нужно ехать и логинить пользователя с клавиатуры HTPC, а не по ssh
UPD:
Нет, при запуске с "настоящей" консоли (/dev/tty1) та же самая ошибка
- Для комментирования войдите или зарегистрируйтесь