Ok, vejo algumas possibilidades:
-
A maneira mais rápida, todo o sentido das permissões POSIX e da propriedade: você quer que alguém seja capaz de ler e / ou escrever, você define as permissões de acordo. Basta colocar essas pessoas em um grupo e alterar a propriedade do dispositivo para esse grupo, concedendo permissões de gravação ao grupo. Você pode ter que colocar isso em
udev
regras, se seu/dev
for gerenciado porudev
. Isso é o que algumas ferramentas fazem, por exemplo, o bluez faz isso para permitir que os usuários usem o bluetooth, ou pelo menos esse é o método usado na minha distro, a menos que eu tente usar o "ConsoleKit". -
Se o dispositivo for simples e não houver problema em usá-lo para todos, permita que todos escrevam nele.
-
Escreva um daemon que começa como um usuário que pode escrever no dispositivo, pega o dispositivo e descarta seus privilégios alterando seu UID e processa solicitações de qualquer usuário por meio, por exemplo, do TCP.
-
Escreva um pequeno binário para escrever para o dispositivo, que é
setuid
de algum usuário que pode gravar no dispositivo e fazer com que os usuários o usem para gravar no dispositivo. Isso é o que omount
faz, ésetuid
root, para que usuários comuns possam montar sistemas de arquivos se/etc/fstab
permitir que eles façam isso.
Ele não cria quaisquer preocupações de segurança adicionais , na medida em que você concorda com a possibilidade de esses usuários usarem esse dispositivo. É claro que qualquer pessoa com acesso ao dispositivo pode explorar qualquer vulnerabilidade no módulo, mas isso seria possível, independentemente de como você conceda às pessoas acesso a ele. Se você escrever um daemon, isso pode ser explorado. Talvez seja melhor manter as coisas simples e garantir que seu código não seja vulnerável.
Eu diria que não há uma maneira padrão única de fazer isso - há algumas maneiras pelas quais partes dos sistemas UNIX fazem isso, e cada parte faz isso da maneira mais conveniente para o tipo de problema que está sendo resolvido.