eu tenho esse roteiro
#verifica pastas perdidas+encontradas função chklnf { #DOC echo "chklnf - lista todos os arquivos em pastas perdidas+encontradas em dispositivos montados" x="perdido+encontrado/" se [ "$EUID" != 0 ] ;então echo "Por favor, digite a senha do sudoers para permitir acesso às pastas $x." sudo echo "Obrigado..." fi para p em $(mount | sed -nre 's,^/dev/.+ on ([^ ]+).*$,\1,p') fazer se [ -d "$p/$x" ] ;então echo -n "--- $p/$x --- " sudo ls -l "$p/$x" fi feito }
Eu gostaria que isso fosse executado uma vez no final do .bash_profile, mas;
é inconveniente ter que digitar a senha para cada novo prompt do shell.
Então: é possível "se livrar" disso pelo "ls -l" aí?
Alternativamente:
como detectar se o "modo sudo" já está presente? (ref: "$EUID" no script)
Depois de cortar a função-def, salvar como arquivo /home/hannu/bin/checklostfound e adicionar a última linha /etc/sudoers (mostrado abaixo)
$ sudo cat /etc/sudoers [sudo] senha para hannu: **************** # # Este arquivo DEVE ser editado com o comando 'visudo' como root. #... {SNIP}
# Script único especial hannu ALL=(raiz) NOPASSWD: /home/hannu/bin/checklostfound
$ ls -l /home/hannu/bin/checklostfound -rwx------ 1 hannu hannu 526 24 de setembro 16:30 /home/hannu/bin/checklostfound
$ sudo ~/bin/checklostfound --- //perdido+encontrado/ --- total 0
$
No final, com ajuste para $p tendo um /
no final:
$ cat /home/hannu/bin/checklostfound #!/bin/env bash #verifica pastas perdidas+encontradas #DOC echo "chklnf - lista todos os arquivos em pastas perdidas+encontradas em dispositivos montados" x="perdido+encontrado/" se [ "$EUID" != 0 ] ;então echo "Por favor, digite a senha do sudoers para permitir acesso às pastas $x." sudo echo "Obrigado..." fi para p em $(mount | sed -nre 's,^/dev/.+ on ([^ ]+).*$,\1,p') fazer set="/" se [ "${p: -1}" = "/" ]; então set=""; fi se [ -d "$p$sep$x" ] ;então echo -n "--- $p$sep$x --- " sudo ls -l "$p$sep$x" fi feito $ sudo /home/hannu/bin/checklostfound -- /perdido+encontrado/ --- total 0 --- /media/hannu/Data8/lost+found/ --- total 0 $ /home/hannu/bin/checklostfound Por favor, digite a senha do sudoers para permitir o acesso às pastas perdidas+encontradas/. [sudo] senha para hannu: Obrigado... --- /perdido+encontrado/ --- total 0 --- /media/hannu/Data8/lost+found/ --- total 0 $
Converta sua função em um script independente no formato
/usr/local/bin
. Agora você tem um problema muito mais simples de precisar conceder acesso 'sudo' sem senha apenas a esse comando fixo, o que pode ser feito através de /etc/sudoers:"modo sudo" significa literalmente que o usuário atual não é mais o usuário original, significa que root agora é o "usuário atual".
Sua sintaxe de comparação está errada – os espaços ao redor não
=
são opcionais. Precisa ser: