루트 권한이 필요한 실행 파일이 있습니다. 하지만 시스템 경로에 있을 때만 작동하는 것 같습니다. 내가 다음과 같이 실행하면 :
$ ./prog
프로그램이 루트 액세스 권한이 없다고 불평합니다. 이것은 suid 프로그램에 대한 또 다른 보안 제한 사항인 것 같지만 온라인에서 검색해 본 결과 이와 관련된 내용을 찾을 수 없습니다. 왜 그럴까요? PATH에 추가하거나 루트 .
로 호출하는 것 외에 이 프로그램을 테스트할 수 있는 우아한 방법이 있습니까 make
?
편집: 현재 디렉터리가 PATH에 있어도 작동하지 않습니다.
답변1
setuid 비트가 존중되는지 여부에 영향을 미치는 프로그램을 호출하는 데 사용되는 경로 이름에는 특별한 것이 없습니다. 확실히 여기서는 두 가지 중 하나가 일어나고 있습니다. 누구나
prog
현재 디렉토리 에서 발견된 것과 현재 디렉토리에서 발견된 것은 실제로$PATH
동일 하지 않습니다 . 누구세요prog
prog
틀림없이이것만으로도 ?를 통해prog
동일한 복사본을 찾는 것이 가능해졌습니다.prog
$PATH
- (예외: 동일한 inode이기 때문에 동일한 파일일 수 있지만 다른 마운트 지점을 통해 도착하며 그 중 하나에는 있고
nosuid
다른 하나에는 없는 경우가 있을 수 있습니다.)
- (예외: 동일한 inode이기 때문에 동일한 파일일 수 있지만 다른 마운트 지점을 통해 도착하며 그 중 하나에는 있고
prog
자체적으로argv[0]
그것이 어떻게 호출되었는지 알아보기 위해 문의하고, 기대하는 것을 찾지 못하면 고정된 권한에 대한 조치를 거부합니다(또는 포기합니다).