sudo拒绝许可

Mar*_*ark 0 sudo root buildroot raspberry-pi2

在buildroot环境中,我将一个用户添加到组轮.现在我可以使用sudo以root权限执行命令.

它似乎有效,但当我尝试在我的RPi上导出一个引脚时,我总是得到Permission denied:

rpi:~$ sudo echo 4 > /sys/class/gpio/export
sh: can't create /sys/class/gpio/export: Permission denied
Run Code Online (Sandbox Code Playgroud)

这里是该目录的内容:

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
Run Code Online (Sandbox Code Playgroud)

使用sudo获取root权限是否足以在导出文件中写入?我害怕所有者和团体.事实上,如果我输入:

rpi:~$ sudo chmod a+w /sys/class/gpio/*
Run Code Online (Sandbox Code Playgroud)

然后我可以成功导出引脚.但我不知道这是否是最好的方法.

Tom*_*ter 7

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

有一个Unix.SE问题在这里,说明此项和选项.

总结该链接,您应该可以执行以下操作:

sudo sh -c 'echo 4 > /sys/class/gpio/export'
Run Code Online (Sandbox Code Playgroud)