Resolvi o problema adicionando cameron ao grupo gpio:
sudo usermod -aG gpio cameron
gpio export 18 out
echo 1 > /sys/class/gpio/gpio18/value
Agora tudo funciona.
Isto está em um Raspberry Pi.
Aqui está a saída do sudo ls -lL / sys / class / gpio / gpio18:
-rwxrwx--- 1 root gpio 4096 Mar 8 10:50 active_low
-rwxrwx--- 1 root gpio 4096 Mar 8 10:52 direction
-rwxrwx--- 1 cameron cameron 4096 Mar 8 10:50 edge
drwxrwx--- 2 root gpio 0 Mar 8 10:50 power
drwxrwx--- 2 root gpio 0 Mar 8 10:50 subsystem
-rwxrwx--- 1 root gpio 4096 Mar 8 10:50 uevent
-rwxrwx--- 1 cameron cameron 4096 Mar 8 10:50 value
Parece que agora devo ter acesso ao valor, ótimo. No entanto:
cameron@raspberrypi~ $ echo 1 > /sys/class/gpio/gpio18/value
-bash: /sys/class/gpio/gpio18/value: Permission denied
O que está acontecendo? Se eu chmod 777 tudo, então funciona, mas eu não deveria ter que fazer isso quando eu possuo o arquivo.
Eu não joguei com os pinos do GPIO dessa forma, mas com base no comentário do lgeorgets segundo e este artigo , você deve primeiro definir a direção do pin como" out ". O nó direction
é de propriedade de root, portanto:
sudo sh -c 'echo out > /sys/class/gpio/gpio18/direction'
sh -c
é necessário aqui para executar esse comando em um subshell raiz. Isso ocorre porque sudo echo out > direction
executaria echo
como root, mas o redirecionamento ( > direction
) seria feito pelo shell atual (não raiz). Você também pode fazer isso su root
.
Depois disso, você poderá, com sorte, definir value
como cameron
.
Como lgeorget menciona um comentário acima,
/sys
é um pseudo sistema de arquivos fornecido pelo kernel, se o kernel requerer que o gravador seja root, então este é um requisito fixo do kernel e não pode ser modificado com os atributos e proprietários.
Isso é explicado em mais detalhes com essa resposta em questão: Como definir permissões em / sys / permanent que fornece uma solução para acessar tal arquivo usando o comando sudo, e fornece uma receita para modificar /etc/sudoers
para evitar ter que digitar uma senha em cada vez.
Realmente não faria sentido renomear nenhum desses arquivos?
Este arquivo é um link simbólico para algum outro local? Porque nesse caso, o arquivo original pode ter propriedade diferente do link.
Quais são as permissões do diretório (verifique ls -l um diretório acima).
Você alterou a propriedade desse arquivo? Como sys
é um sistema de arquivos virtual especial que reflete o estado interno do kernel, a maioria dessas variáveis é imutável por natureza, independentemente do sistema de arquivos.
Tags permissions sysfs gpio