В 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 имеет root-права: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 ответ1

0

Это ответ на мой последний вопрос: «Как я могу установить время HW вообще из пространства пользователя?"

Недавно я узнал о sudoers , который, кажется, является универсальным решением для всего, что касается победы над правами su.

Запустите visudo от имени пользователя root. Это ярлык для редактирования sudoers . Не волнуйтесь, он не запустит vi , но ваш редактор по умолчанию (если это не vi). Использование этого вместо ручного редактирования /etc/sudoers приводит к тому, что изменения применяются при закрытии, и выдает предупреждения и ошибки, если это необходимо.

Я еще не мастер sudoers (man-страница размером с 50 страниц), но в итоге я добавил это в конец:

Cmnd_Alias TIMEDATE=/usr/bin/timedatectl
pi ALL=(ALL) NOPASSWD: TIMEDATE

Использование псевдонима вместо прямого указания команды позволяет использовать случайные аргументы командной строки.

Затем пользователь pi может выполнить sudo timedatectl без запроса пароля. (примечание: sudo все еще требуется.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .