pm-suspend deve ser executado como root:
he@x22:~/hep/links$ /usr/sbin/pm-suspend
This utility may only be run by the root user.
Fiz um link, pms:
he@x22:~/hep/links$ ls -l pms
lrwxrwxrwx 1 he he 20 dec 17 22:13 pms -> /usr/sbin/pm-suspend
e como esperado:
he@x22:~/hep/links$ ./pms
This utility may only be run by the root user.
mas se eu mudar o diretório e adicionar ~/hep/links ao caminho, funciona para um usuário normal:
he@x22:~$ pms
whoami root
Para ver quem é o usuário efetivo, no topo de /usr/sbin/pm-suspend eu inseri:
#!/bin/sh
echo whoami $(whoami)
.....
root@x22:/home/he/hep/scripts# type -a pms
pms är ett alias för ”sudo pm-suspend”
pms är /home/he/hep/scripts/pms
pms är /home/he/hep/links/pms
Alguém pode, por favor, explicar o que está acontecendo aqui?
Ao executar
./pms
a partir do seu~/hep/links
diretório, você estará executando o script por meio do novo link simbólico.Mas quando você executa
pms
- independentemente do diretório em que você está, ou se você adicionou~/hep/links
ao seuPATH
, você não está chamando-o através do link, você está executando o aliassudo pm-suspend
.Como você provavelmente
sudo
editou o script e ainda está dentro do período de tempo limite, suas credenciais são armazenadas em cache epm-suspend
executadas como root sem solicitar autenticação.