Não há nada especial sobre qual nome de caminho você usa para invocar um programa que pode fazer a diferença se seu bit setuid será ou não honrado. É certo que uma das duas coisas está acontecendo aqui. Qualquer um
- os
prog
encontrados no$PATH
e oprog
encontrados no diretório atual não são, de fato, os mesmosprog
. Você tem certeza de queprog
sozinho está encontrando a mesma cópia deprog
via$PATH
?- (Exceção: Eu posso pensar em um caso de borda improvável aqui, onde eles podem ser o mesmo arquivo como eles são o mesmo inode, mas eles são alcançados através de diferentes pontos de montagem, um dos quais tem
nosuid
e um dos quais não faz.)
- (Exceção: Eu posso pensar em um caso de borda improvável aqui, onde eles podem ser o mesmo arquivo como eles são o mesmo inode, mas eles são alcançados através de diferentes pontos de montagem, um dos quais tem
-
O
prog
está consultando seuargv[0]
para ver como ele foi invocado e está se recusando a agir de acordo com seus poderes (ou está soltando-os) se ele não encontrar o que espera.