Полагаю, вам нужно выполнить скрипт с CAP_SYS_TTY_CONFIG
.Либо это, либо (если вы работаете на консоли), использование вашего управляющего tty (например, /dev/tty1
) вместо /dev/console
может работать.
Код ядра, который обеспечивает это, кажется, драйверы/tty/vt/vt_ioctl.c:
/*
* To have permissions to do most of the vt ioctls, we either have
* to be the owner of the tty, or have CAP_SYS_TTY_CONFIG.
*/
perm = 0;
if (current->signal->tty == tty || capable(CAP_SYS_TTY_CONFIG))
perm = 1;
⋮
case KDSETLED:
if (!perm)
goto eperm;
setledstate(kbd, arg);
break;
Итак, определенно похоже, что это ваши два варианта.