Mark
Mark

Reputation: 5100

Permission denied with sudo

in a buildroot environment I added one user to the group wheel. Now I can execute commands with the root's privileges using sudo.

It seems it works but when I try to export a pin on my RPi I always get Permission denied:

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

Here the contents of that directory:

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

Isn't enough to get the root's privilege with sudo to write in the export file? I'm afraid about the owner and groups. In fact if I type:

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

then I can successfully export the pin. But I don't know if this is the best way to do this.

Upvotes: 1

Views: 6559

Answers (1)

Tom Carpenter
Tom Carpenter

Reputation: 571

When you run the command sudo echo 4 > /sys/class/gpio/export, it first executes sudo echo 4 which runs echo with elevated privileges (which is kind of pointless). Then the result is passed by the shell (not by echo) to a new command of /sys/class/gpio/export, which because it is a new command it isn't executed with elevated privileges.

There is a Unix.SE question here which explains this and the options.

In summary of that link you should be able to do something like:

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

Upvotes: 11

Related Questions