[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: como executar script em user normal com "poderes" de root



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="" KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="0525", SYMLINK+="ttyTS0" 
SUBSYSTEM=="tty", ACTION="" 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
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



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


Em 1 de novembro de 2017 16:21, Antonio Terceiro <terceiro@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

Reply to: