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.