Boas,

Eu ainda acho que a melhor opção até agora seria a de usar o sudoers como o Fred Maranhão recomendou. Você já tentou essa opção?

eu teria receio de fazer isto:

fulano ALL=(ALL) NOPASSWD: ALL

mas não isto:

fulano ALL=(ALL) NOPASSWD: /usr/local/bin/initsat.sh

Abraço

Em qui, 2 de nov de 2017 às 11:56, Luís Cláudio A. Gama <luisg...@gmail.com> escreveu:
Bom dia,

Em primeiro lugar, gostaria de agradecer todas as sugestões....estou tentando entender tudo e aprender mais com isso.

Na inicialização da máquina, eu coloquei em /etc/rc.local

chmod 777 /dev/tty/TS0

e isso faz que na inicialização da máquina tudo esteja funcionando, já que o Linux cria o /dev/ACM0 e também é criado o link para TS0.

Porém minha preocupação é com algum funcionário ( usuário normal não root )xereta, dê uma fuçada na máquina e desplugue o SAT e replugue novamente...aí o sistema deixa de funcionar, pois o Linux cria um novo ACM1 apontando para TS0.

Seguem minhas observações com suas sugestões:


Junior Polegato:

  O conteúdo do script initsat contém somente a linha chmod

script initsat.sh
*******
#!/bin/bash
chmod 777 /dev/ttyTS0
*****

De acordo com sua sugestão, coloquei o grupo tty para o meu usuário e diz:

luis@hal9000:/mnt/midia4/prj/qt/scripts$ ./initsat.sh
chmod: alterando permissões de “/dev/ttyTS0”: Operação não permitida
luis@hal9000:/mnt/midia4/prj/qt/scripts$


Paulo K. Sato:

Coloquei o grupo dialout pra esse usuário...o tty já estava ( seguindo a sugestão anterior ) e ainda não permite essa operação.

Sim, o dispositivo TS0 é criado por udev.... pois de acordo com o fabricante do sat, eu coloquei o arquivo que eles forneceram em /etc/udev/rules

instruções recebidas do fabricante:
********
2. Arquivo de configuração para o serviço udev do Linux:

99-SAT.rules

Conteúdo:

SUBSYSTEM=="tty", ACTION=="add", KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="0525", SYMLINK+="ttyTS0" SUBSYSTEM=="tty", ACTION=="remove", KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="0525", SYMLINK-="ttyTS0"

Deve ser copiado no diretório: /etc/udev/rules
A função desta configuração é alterar o nome do dispositivo reconhecido pelo Linux pela
presença do SAT TANCA, que é /dev/ttyACMx, para /dev/ttyTSx.
Recomendamos esta alteração para previnir conflitos com outros dispositivos.

********

Eu fiz algumas testes sem essa regra udev...o device criado na inicialização é o ACM0, sendo incrementado a cada replugue de USB.

Com essa regra udev, mesmo incrementando o ACMx, permanece o link simbólico ttyTS0, por isso estou mirando alterar as permissões nesse link simbólico.


Eduardo Klosowski

O setuid foi minha primeira tentativa, tanto é que mudei o user e grupo do script para root

chown root:root initsat.sh
e
chmod +s initsat.sh

  Mas continua dizendo "operação não permitida"

saída do script
chmod: alterando permissões de “/dev/ttyTS0”: Operação não permitida

Antonio Terceiro

Também mudei a regra 777 para 660 e cessou a comunicação com o SAT.


  Agradeço fortemente a ajuda de todos.

‌
Luís Cláudio A. Gama
Fones: TIM:  11 9 7765-1735  Res: 11-4602-3400
Skype: luisclaudiogama       http://luisgama.googlepages.com

br.linkedin.com/in/luisclaudiogama



|""""""""""""""""""""""""""""|\|_
|          Voto Distrital !        |||"'|""\__
|______________________|||_|____|)
!(@)'(@)""""*********!(@)(@)*****!(@)

Em 1 de novembro de 2017 16:21, Antonio Terceiro <terce...@debian.org> escreveu:
On Wed, Nov 01, 2017 at 02:20:18PM -0200, Luís Cláudio A. Gama wrote:
> Boa tarde a todos,
>
> Vou instalar um SAT fiscal plugado em USB na máquina.
>
> Esse SAT cria:
>
> lrwxrwxrwx 1 root root 7 Nov 1 13:52 */dev/ttyTS0* -> ttyACM0
>
> E eu preciso dar permissões nesse ttyTS0 para que o usuário possa executar
> minha aplicacaçao e acessar o SAT.
>
> já coloquei em /etc/rc.local
> chmod 777 /dev/TS0
>
> Ao inicializar a máquina tudo funciona ok.
>
> Porém estou pensando numa situação em que o SAT é desplugado da USB e > replugado novamente, e isso irá fazer com que as permissões sejam perdidas.
>
> Para não ter que reiniciar a máquina nessa situação, pesquisei a respeito
> de executar um script para essas permissões como root.
>
> Criei o scritp initsat.sh
>  #!/bin/bash
> chmod 777 /dev/ttyTS0
>
> Aí dei os comandos:
>
> chown root:root initsat.sh
>
> chmod 777 initsat.sh
>
> e também chmod +s initsat.sh
>
>
> As permissões ficaram assim:
>
> -rwsrwsrwx  1 root root   34 Nov  1 14:00 initsat.sh
>
>
> porém ao executar o script com meu user:
>
>
> luis@hal9000:/mnt/midia4/prj/qt/scripts$ ./initsat.sh
>
> chmod: alterando permissões de “/dev/ttyTS0”: Operação não permitida
>
> luis@hal9000:/mnt/midia4/prj/qt/scripts$
>
> Alguém pode me dar uma sugestão?

se tudo que que você precisa é configurar as permissões do dispositivo
quando ele for plugado, sugiro escrever e instalar uma regra do udev.
tem documentação disso na internet.

e ao invés de usar 777, eu sugiro usar 660 e configurar o dono/grupo do
dispositivo pra o usuario/grupo que roda a sua aplicação.

 Sent with Mailtrack

Responder a