Не могу сделать 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) та же самая ошибка
- Для комментирования войдите или зарегистрируйтесь
