在buildroot环境中,我将一个用户添加到组轮。现在我可以使用sudo以root权限执行命令。
它似乎有效,但当我尝试在我的RPi上导出一个引脚时,我总是得到Permission denied:
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/*
然后我可以成功导出引脚。但我不知道这是否是最好的方法。
答案 0 :(得分:7)
当您运行命令sudo echo 4 > /sys/class/gpio/export
时,它首先执行sudo echo 4
,它以提升的权限运行echo
(这是毫无意义的)。然后结果由shell(而不是echo
)传递给/sys/class/gpio/export
的新命令,因为它是一个新命令,它不会以提升的权限执行。
有一个Unix.SE问题here解释了这个和选项。
在该链接的摘要中,您应该能够执行以下操作:
sudo sh -c 'echo 4 > /sys/class/gpio/export'