Não é possível dar permissão através de sudoers para um script acessando / dev / tty13

0

Aqui abc é o nome de usuário e ak.sh é o arquivo que eu desejo obter todas as permissões. Adicionamos a seguinte linha na parte superior de sudoers.tmp , que abri como sudo visudo :

abc ALL=NOPASSWD: /home/abc/ak.sh

ak.sh contém:

#!/bin/bash
sudo cat /dev/tty13

Quando executo o arquivo de script, ele me pergunta por senha.

    
por Aquarius_Girl 11.07.2017 / 08:50

2 respostas

1

Você precisa realmente usar sudo para que uma regra de sudo seja útil. Qualquer um:

  1. Use a regra atual de sudoers e execute sudo /home/abc/ak.sh
  2. Use a outra regra mencionada, mas com o caminho absoluto para cat , como este:% abc ALL=NOPASSWD: /bin/cat /dev/tty13 e execute sudo cat /dev/tty13 no script.
por muru 11.07.2017 / 09:06
-1

Supondo que seu método de isenção de senha funciona da mesma maneira que a mudança de sudoers, você precisa chamar o SCRIPT com sudo, não o comando IN no script. Ou mude os sudoers. Em outras palavras:

sudo /home/abc/ak.sh

é o que você isentou de exigir uma senha, não cat . Você ainda tem que usar sudo , mas se você fez certo, você não precisará inserir um passe.

@muru

# # # # # # # # # # # # # # # # # # # #

Por que parece ser melhor excluir senhas do script? Contendo um comando cat em vez de cat:

$ ls / | grep secrets
secrets_root_does_not_want_to_share_.txt
$ # hmmm, that looks interesting . . .
$ cat /secrets_root_does_not_want_to_share_.txt
cat: /secrets_root_does_not_want_to_share_.txt: Permission denied
$ # Curses! My evil plans are foiled because:
$ stat /secrets_root_does_not_want_to_share_.txt | grep 'Access: ('
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
$ # But wait! I'm pass exempted! So:
$ sudo cat /secrets_root_does_not_want_to_share_.txt
Oh, my. Sensitive stuff is exposed to ordinary users.

A exclusão de senha sudo cat não é tão perigosa quanto, por exemplo, a isenção de senha sudo echo , mas parece-me ser uma prática bastante ruim.

# # # # # # # # # # # # # # # # # # # #

Adicionado mais tarde para resolver o ceticismo de Muru em relação à equivalência de sudo cat quando a senha não expirou de um uso anterior de sudo para sudo cat quando o gato foi isento de senha:

Eu adicionei uma regra ao início da minha seção de isenção de aprovação em / etc / sudoers da seguinte forma:

me THIS_LOCAL_SYS=(ALL)NOPASSWD:/bin/cat, . . . [many other rules, separated by commas]

Em um novo terminal:

$ # Demonstrating that password is not un-expired from previous use of sudo:
$ sudo ls /root
[sudo] password for j: 
$ stat /secrets_root_does_not_want_to_share_.txt|grep 'Access: ('
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
$ cat /secrets_root_does_not_want_to_share_.txt 
cat: /secrets_root_does_not_want_to_share_.txt: Permission denied
$ # And rightly so, but with pass exempted sudo:
$ sudo cat /secrets_root_does_not_want_to_share_.txt 
Oh, my. Sensitive stuff is exposed to ordinary users.
$ 

Então, sim, eles são equivalentes, assim como deveriam ser; sim, eu entendo como o sudo funciona - eu editei o arquivo algumas centenas de vezes; e sim, a isenção de senha plain / bin / cat, em vez de um script contendo cat, é uma prática incorreta do ponto de vista de segurança. Novamente, não a estupidez desastrosa que a senha isenta sudo echo ou sudo vi seria, mas ainda é uma má idéia.

    
por Lew Rockwell Fan 11.07.2017 / 09:05