나는 바이너리가 동일하고 동일한 권한을 가지며 내 드라이브에서 고유하고 sudoers
여전히 하나는 루트에 대한 uid 테스트를 통과하고 다른 하나는 통과하지 못하는 두 개의 bash 스크립트를 가지고 있습니다. ./
bin 폴더의 첫 번째 항목을 호출 하면 두 번째 항목처럼 동작합니다.
스크립트(동기화-사무엘):
#!/usr/bin/env bash
echo "[$0]"
whoami
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root"
exit 1
fi
id -u
exit
산출:
samuel@xeon:~$ sync-samuel
[sudo] password for samuel:
[/home/samuel/bin/sync-samuel]
root
0
samuel@xeon:~$ sync-samuel2
[/home/samuel/bin/sync-samuel2]
samuel
This script must be run as root
samuel@xeon:~$ cd bin
samuel@xeon:~/bin$ ./sync-samuel
[./sync-samuel]
samuel
This script must be run as root
권한:
-rwxr-xr-x 1 samuel samuel 435 Feb 1 22:36 sync-samuel
-rwxr-xr-x 1 samuel samuel 435 Feb 1 22:37 sync-samuel2
문서:
samuel@xeon:~/bin$ file sync-samuel
sync-samuel: a /usr/bin/env bash script, ASCII text executable
samuel@xeon:~/bin$ file sync-samuel2
sync-samuel2: a /usr/bin/env bash script, ASCII text executable
이 동작을 유발하는 요인이 무엇인지 또는 이 두 파일의 확장 속성을 볼 수 있는 방법을 아는 사람이 있습니까? 저는 bash 4.3.11(1) 릴리스와 함께 Lubuntu 14.04 LTS를 사용하고 있습니다.
편집자: G-Man은 남자예요! 첫 번째 것도 별칭입니다.
samuel@xeon:~/bin$ type sync-samuel2
sync-samuel2 is hashed (/home/samuel/bin/sync-samuel2)
samuel@xeon:~/bin$ type sync-samuel
sync-samuel is aliased to `sudo /home/samuel/bin/sync-samuel'
답변1
실행 중이 아니고 스크립트 자체가 호출되지 않은 경우에도 프롬프트가 표시 sync-samuel
되는 것으로 출력 됩니다 . 이는 의미가 없습니다. 입력할 때 질문에 표시된 스크립트가 아닌 다른 것을 실행하는 것 같습니다 .sudo
sudo
sudo
sync-samuel
sync-samuel
이는 sync-samuel
실제로 별칭 sudo sync-samuel
이나 이와 유사한 것일 수 있습니다. 또 다른 가능성은 sync-samuel
다른 디렉토리에 또 다른 복사본이 있고 쉘이 보고 있는 복사본 대신 이를 찾고 실행하는 것입니다. 이 문제를 진단하려면 다음 명령을 실행하십시오.
type sync-samuel sync-samuel2
type
쉘이 각 명령을 해석하는 방법을 보여주는 내장 명령입니다. 두 파일에 대해 상당히 다른 응답을 받는 경우(예: sync-samuel
별칭 대신 sync-samuel2
) 동일한 처리를 받도록 진행하는 방법(예: sync-samuel2
별칭도 정의)을 알게 됩니다.