Pelo menos no meu sistema Linux de desktop, o errno 2 é ENOENT , ou seja, nenhum desses arquivos ou diretórios. Você pode descobrir com o comando errno (embora você provavelmente não tenha isso no telefone).
Isso pode significar que você não tem um / data nesse telefone (o que seria estranho). Meu telefone com root (Galaxy Nexus, jelly Jean 4.2.2) deixa a permissão negada quando tento isso em um shell (não em um programa C, como você parece estar fazendo)
Sugiro ls -ld /data para começar e talvez também which echo para ver se algo é diferente lá. Ou possivelmente você não tem uma concha; o system("true") funciona?