Ola,
Continuo insistindo que o local correto de tratar os dispositivos e pelo
udev.
Pode ser que o /dev/ttyACMx não pertença ao grupo dialout, confira qual o
grupo pertence esse dev (ls -l /dev/ttyACM0).
O fabricante forneceu as regras do udev, então basta melhorar-lo, por
exemplo acrescentando o modo.

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

Ou um modo mais permissivo, como 0666.

Verifique qual e o grupo do device, inclua os usuários nesse grupo (precisa
fazer o login para validar as mudanças, existe um comando que recerrega,
mas não lembro)

# adduser fulano grupo_do_dev

Verifiquei que o dialout e um dos grupos em que um usuário novo e
adicionado ao criar-lo.
Caso necessite adicionar um novo grupo ao criar um usuário, modique o
arquivo /etc/adduser.conf. (pode ser que isso tenha mudado)
Talvez, o ttyACM* não esteja sendo associado a nenhum grupo, então podemos
mudar a regrar para:

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

Depois de modificar as regras do udev e necessario reinicar os serviços
relacionados
# udevadm control --reload-rules && service udev restart && udevadm trigger

Dependendo o tipo de aplicação, o ideal seria impedir o usuário de ter
acesso físico as conexão usb, e outros.


2017-11-02 9:56 GMT-02:00 Luís Cláudio A. Gama <luisg...@gmail.com>:

> 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.
>>
>
> <https://mailtrack.io/> Sent with Mailtrack
> <https://chrome.google.com/webstore/detail/mailtrack-for-gmail-inbox/ndnaehgpjlnokgebbaldlmgkapkpjkkb?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality>
>



-- 
Paulino Kenji Sato

Responder a