在 Armbian 中,我能够gpio
使用这第一篇帖子并且成功了。这对于我的非特权用户来说成功了。
现在我尝试对 RTC sysfs 执行相同的操作,但没有成功。
我尝试过的大多数步骤来自这个帖子/sys/devices/soc.0
直到他们编辑 rules.d 文件的位置:我的设备上没有。相反,我在gpio*
命令列表下添加了以下行:
chown -R root:gpio /sys/class/rtc && chmod -R 770 /sys/class/rtc;\
这似乎不起作用。即使我手动执行这些命令并确认 rtc 文件夹树是具有 770 权限的 root:gpio,它仍然不起作用(非特权用户的权限被拒绝)。
$ cat /sys/class/rtc/rtc1/since_epoch # this works!
$ echo 10 > /sys/class/rtc/rtc1/since_epoch # permission denied
抱歉,我刚刚意识到 RTC 的 sysfs 似乎是只读的。现在我的问题变成了,如何通过 sysfs 设置硬件时间?(或者,如何从用户空间设置硬件时间?)
答案1
这是对我最后的疑问“我如何从用户空间设置硬件时间?”的回答。
最近我了解了sudoers
,这似乎是解决与侵犯人权有关的一切问题的通用解决方案。
以 root 身份运行visudo
。这是编辑的快捷方式sudoers
。别担心,它不会启动vi
,但您的默认编辑器(除非是 vi
)。使用此功能而不是手动编辑/etc/sudoers
会导致更改在关闭时应用,并且它会在必要时发出警告和错误。
我还不是一个 sudoers 专家(手册页有 50 页长)但我最终在最后添加了以下内容:
Cmnd_Alias TIMEDATE=/usr/bin/timedatectl
pi ALL=(ALL) NOPASSWD: TIMEDATE
使用别名而不是直接指定命令允许您使用随机命令行参数。
然后用户无需输入密码pi
即可执行。(注意:仍然需要。)sudo timedatectl
sudo