好的...所以我按照许多教程的指示使用 chown 和 chmod 来访问/dev/
外围设备的一些文件。
chown 和 chmod 不会使其通过重新启动。这没关系。我看到的问题与无法操作/dev/
目录文件有关,例如gpio
和/或i2c
,即使在使用 chmod 和/或 chown 后也能成功...
因此,我为当前用户设置命名方案,然后为该用户设置组,但仍然无法访问我的文件。我正在使用一台嵌入式计算机,其规范规定/dev/bone/
为一些外围文件(如pwm
、uart
和 )填写文件i2c
。
特殊之处/dev/
在于,从内部控制文件/dev/
不会受到命令权限和用户:使用 chown 和 chmod 添加的组的影响?
仍在尝试围绕 /dev/ 中的构建进行教育,而不使用 /sys/class/gpio/ 和/或 /sys/class/pwm/。
答案1
/dev/
系统启动时会重新生成目录树。毕竟,您可能添加/删除了硬件。
许多设备访问问题都是权限问题,可以通过组成员身份更改来解决。
sudo journalctl --follow
您可以通过观看连接设备来找到设备名称。或者ls -1 -l /dev >dev.before
,连接设备,等待 10 秒ls -1 -l /dev >dev.after;diff dev.{before,after}
。
具体来说,如果ls -l
显示组权限(第二个“ rwx
”三元组)为“ rw
”(例如“ -rw-rw----
”),则将自己添加到拥有该设备的组中将授予rw
访问权限。
就是这样:
# change to your device name
device="/dev/YourDevice"
sudo adduser $USER $(stat -c "%G" $device)
这允许您成为可以使用该设备的组的成员身份rw
,但还有一步。
要使所有进程成为新组的成员,请注销并登录。小组成员资格是按时间设立的login
。
要在新组中创建单个进程(用于测试,在注销/登录之前):
newgrp $(stat -c "%G" $device)
或者,只需键入组名称。看man newgrp
。