Как сделать RTC sysfs доступным для пользователя
В Armbian я смог сделать sysfs GPIO доступным для пользователей в gpio
группа, используя инструкции в этом первом посте, и это работает. Это успешно сработало для моего непривилегированного пользователя.
Теперь я пытаюсь сделать то же самое для RTC sysfs без удачи.
То, что я пробовал, это большинство шагов от этого поста до того, где они редактируют файл rules.d: там нет /sys/devices/soc.0
на моем устройстве. Вместо этого я добавил под он gpio*
Список команд, эта строка:
chown -R root:gpio /sys/class/rtc && chmod -R 770 /sys/class/rtc;\
Это не похоже на работу. Даже если я выполняю эти команды вручную и подтверждаю, что дерево папок rtc является корневым:gpio с разрешениями 770, оно все равно не работает (отказано в праве непривилегированного пользователя).
$ cat /sys/class/rtc/rtc1/since_epoch # this works!
$ echo 10 > /sys/class/rtc/rtc1/since_epoch # permission denied
Извините, я только что понял, что sysfs RTC, похоже, только для чтения. Теперь мой вопрос переходит на, как я могу установить время HW через sysfs? (В качестве альтернативы, как я могу установить время HW вообще из пространства пользователя?)
1 ответ
Это ответ на мой последний вопрос "как я могу установить время HW вообще из пространства пользователя?"
Недавно я узнал о sudoers
что, кажется, является универсальным решением для всего, что касается победы над правами.
Бежать visudo
как корень. Это ярлык для редактирования sudoers
, Не волнуйся, это не начнется vi
, но ваш редактор по умолчанию (если это не vi
). Используя это вместо ручного редактирования /etc/sudoers
заставляет изменения быть примененными после закрытия, и это дает предупреждения и ошибки при необходимости.
Я еще не мастер sudoers (man-страница размером с 50 страниц), но в итоге я добавил это в конец:
Cmnd_Alias TIMEDATE=/usr/bin/timedatectl
pi ALL=(ALL) NOPASSWD: TIMEDATE
Использование псевдонима вместо прямого указания команды позволяет использовать случайные аргументы командной строки.
Тогда пользователь pi
может выполнить sudo timedatectl
без запроса пароля. (нота: sudo
все еще требуется.)