2012-12-11 8 views
0

사용자 A와 B가 있고 다른 그룹에 속한다고 가정 해 봅시다. 그 중 봇은 사용자 A.setuid가 적용되지 않습니다

1) touch a.txt; echo "hello word" > a.txt 
2)chmod 600 
3) touch b 
4) echo "cat a.txt" > b 
5) chmod 4755 b 

로, 첫째

를 근절하고 사용자 B로 전환되지 않으며, 나의 가정은 성공적으로 바이너리를 실행하고 인사 "안녕하세요 단어를"얻을 수있는 사용자 B입니다, 하지만 실제로 사용자 B로 바이너리를 실행할 때 "허가가 거부되었습니다"라는 메시지가 나타납니다. 왜?

+0

'2) chmod 600 a.txt'를 의미합니까? 그리고 'cat : can not open'a.txt ': Permission denied'과 같은 유용한 오류 메시지를 주어야합니다. 유용한 정보가 들어있을 수 있습니다. – Armali

답변

0

setuid 파일의 개념은 파일에 setuid bit이 설정되어 있으면 해당 명령 (파일)을 실행하는 사람이 파일 소유자의 사용 권한을 상속 받음을 의미합니다.

$ chmod 4755 b --verbose 
mode of `b' changed to 4755 (rwsr-xr-x) 

나는 사용자 A를 의심하고 B 그룹을 분리해서 속한, 그래서 당신은 또한 setgid 할 필요가있다. 이 두 setuid를 들어, 2를 추가하여 수행 할 수 있습니다 얻을에 추가 setgid를 6

$ chmod 6755 b --verbose 
mode of `b' changed to 6755 (rwsr-sr-x) 
1
리눅스는 스크립트 파일의 S_ISUID 비트의 처리를 구현하지 않습니다

; 대신 인터프리터 (쉘)의 모드 비트가 사용됩니다.

관련 문제