Пользователь «balanceofpain» на Reddit предлагает:
--
FFmpeg/avconv может это сделать. Вам придется запустить его как другой пользователь, чтобы проверяемый человек не мог вмешиваться в него. Команда будет аналогична:
avconv -f x11grab -s 1366x768 -r 25 -i :0.0 /tmp/out.mpg
Не забудьте разрешить этому пользователю доступ к X с помощьюxhost +si:localuser:
--
Следовательно, я мог бы использовать автозапуск XDG, но отдельные привилегии с помощью sudo (, чтобы предотвратить задачу уничтожения пользователем ). Остается вопрос, заканчивается ли запись в конце сеанса.
/sys
— это виртуальная файловая система на основе оперативной памяти , поэтому изменение прав доступа к ее файлам не сохраняется после перезагрузки.
В приведенных ниже решениях замените ideapad
соответствующим компонентом пути в вашей системе. intel_backlight
и acpi_video0
являются общими.
Убедитесь, что video
присутствует в выводе команды groups
. Если нет, добавьте своего пользователя в эту группу.
Затем создайте файл правил Udev с sudo -e /etc/udev/rules.d/backlight.rules
. Содержание:
RUN+="/bin/chgrp video /sys/class/backlight/ideapad/brightness"
RUN+="/bin/chmod 0664 /sys/class/backlight/ideapad/brightness"
Перезагрузка. Спасибо:Fistrosan на форуме Arch Linux .
Эта программа на C представляет собой решение, которое я написал некоторое время назад и никогда не подводил. меня. Для этого не требуется ничего, чего нет в стандартной системе Linux, кроме компилятора C.
#include <stdlib.h>
#include <stdio.h>
#define BUFSIZE 10
int main(int argc, char **argv) {
FILE *fp;
char scurr[BUFSIZE];
long new, curr, incr, min = 10;
/* An argument with an integer increment must be supplied */
if (argc != 2 || (incr = strtol(argv[1], NULL, 10)) == 0) { return(1); }
/* Retrieve the current brightness and increment it in the brightness file */
if ((fp = fopen("/sys/class/backlight/ideapad/brightness", "r+"))
&& fgets(scurr, BUFSIZE, fp)) {
curr = strtol(scurr, NULL, 10);
rewind(fp);
new = curr + incr;
if (new < min) { new = min; }
fprintf(fp, "%ld\n", new);
fclose(fp);
} else { return(2); }
return(0);
}
Скомпилируйте его(br.c
это имя файла, br
исполняемый файл ), сделайте root владельцем, включите бит setuid и поместите исполняемый файл где-то в вашемPATH
(/usr/local/bin/
есть типичный выбор ).
cc br.c -o br
chown root br
chmod u+s br
mv br /usr/local/bin/
Теперь простое выполнение br -100
уменьшит вашу яркость на 100.
Обратите внимание, что я также установил минимальную яркость на min = 10
. Это довольно низко для меня машина, которая едва замечает, что дисплей включен. Настройте это значение в соответствии с вашим потребности.
Setuid дает br
полные права root. Если вы хотите быть очень осторожным и дать ему только необходимый набор привилегий, а именно, чтобы обойти проверку прав доступа к файлу, замените строки chown
и chmod
выше на соответствующую возможность
setcap cap_dac_override+ep br