权限被 sudo 拒绝

Permission denied with sudo

在 buildroot 环境中,我向组 wheel 添加了一个用户。现在我可以使用 sudo 以 root 权限执行命令。

它似乎有效,但是当我尝试在我的 RPi 上导出一个 pin 时,我总是得到权限被拒绝:

rpi:~$ sudo echo 4 > /sys/class/gpio/export
sh: can't create /sys/class/gpio/export: Permission denied

这是该目录的内容:

rpi:~$ ls -l /sys/class/gpio/
total 0
--w-------    1 root     root          4096 Jan  1 00:00 export
lrwxrwxrwx    1 root     root             0 Jan  1 00:00 gpiochip0 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpiochip0
--w-------    1 root     root          4096 Jan  1 00:00 unexport

通过 sudo 获取 root 权限来写入导出文件还不够吗?我担心所有者和团体。事实上,如果我输入:

rpi:~$ sudo chmod a+w /sys/class/gpio/*

然后我就可以成功导出pin了。但我不知道这是否是最好的方法。

当您 运行 命令 sudo echo 4 > /sys/class/gpio/export 时,它首先执行 sudo echo 4,其中 运行 s echo 具有更高的权限(这有点毫无意义) .然后结果由 shell(而不是 echo)传递给 /sys/class/gpio/export 的新命令,因为它是一个新命令,所以不会以提升的权限执行。

有一个 Unix.SE 问题 here 解释了这个问题和选项。

综上所述,link 您应该可以执行以下操作:

sudo sh -c 'echo 4 > /sys/class/gpio/export'