파일의 허가권(-rwxr-xr-x) 와(-rwsr-xr-x)의 차이점
글쓴이: gyxor / 작성시간: 토, 2003/08/23 - 3:05오후
파일의 허가권은 그 허가에 속하는 사용자나 구룹 타인등에게
파일의 읽고 쓰고 실행하는 부분을 다뤄주는데요..
sTicky bit 1000
SetGID 2000
SetUID 4000
은 정확하게 무엇을 다루는것인지 모르겠습니다.
예를 들어서..
ping localhost 를 root에서 실행해보고 near라는 계정에서
실행해보고 하면.. 두군데 다 됩니다.
기본설정이 -rwsr-xr-x 였을건데요..
이것을 chmod 755 ping 해서 ,-rwxr-xr-x 로 바꾸면..
실행이 안됩니다.
다시말해 요점은..
-rwsr-xr-x
-rwxr-xr-x
-rw-r-xr-x
이 세가지의 차이점은 무엇인가요??
소유자권한에서 실행부분에
s 로 설정된것과
x 로 설정된것과
- 설정이 안된것의 정확한 차이점이 궁금합니다.
답변해주시면 감사하겠습니다.
Forums:
Re: 파일의 허가권(-rwxr-xr-x) 와(-rwsr-xr-x)의 차이점
rwx ( 읽고 쓰고 실행 ) 이것은 아실듯 하구요
S 가 들어가 있는경우... 파일의 소유자가 실행하는 것처럼
실행을 해준다는 것입니다.
잠이 들어야지만 꿈을 꿀수 있는것인가?
우리는 항상 꿈을 쫓아 가며 살아가는 사람들..
sticky bit는
sticky bit는 소유권자가 아닌 다른 사람이 파일을 수정할 수는 있지만 삭제가
불가능합니다.
setuid나 setgid는 그 파일 실행시 그 파일을 소유한 유저(setuid)나 그룹(setgid)
권한으로 실행시킨다는 얘기가 되고요.
Written By the Black Knight of Destruction
위에 잘 설명되어 있습니다. 혹시 그래도 ping이 실행되지않는
위에 잘 설명되어 있습니다. 혹시 그래도 ping이 실행되지
않는 이유를 모르실까봐 몇자 적습니다.
ping이라는 파일의 소유자가 root이고 파일 권한이
rwsr-xr-x이라고 칩시다. 만일 일반 유저가 이 파일을
실행하면, 파일은 파일의 소유자인 root 권한을 가지고
실행이 됩니다.
여기서 setuid가 설정되어 있고, 소유자가 root인 이유가
멀까요? ping이라는 프로그램을 실행시키는데는 root권한이
필요하다는 말입니다.
질문하신 분께서 파일권한을 755로 바꾸면 실행이 안된다고 했는데,
일반 유저 아이디로 실행을 시켰으리라 생각됩니다. 아예 실행이 안되지는 않고
제대로 동작을 하지 않았으리라 생각됩니다. rxwr-xr-x인 상태에서 일반 유저
아이디로 실행을 했으니, root권한이 필요한 ping이 제대로 동작하지 않겠지요.
root로 로그인해서 실행해 보시기 바랍니다.
^^
좋은 답변 감사합니다. ping 명령어에 root 권한이 필요하고 그것을
위해서 특별히 절대모드 4000 값 SetUID 가 설정이 되어야 외부에서 실행이
가능하다는것은 새롭게 알게되었습니다.
몇가지 의문이 남아서 다시 질문드립니다.
그렇다면..
첫째,
SetGID 가 필요한 이유는 무엇인가요?
둘째,
sTicky bit 1000 이것이 필요한 이유는 무엇인가여?
책에서 sTicky bit 이것은 외부에서 파일삭제를 하지못하도록 하기 위함이라고
되어있는데요.. 실제로 삭제부분은.. - rwx rwx rwx
이런식으로 외부에서 모두 가능으로 설정을 해놔도 삭제가 안되더라구요..
반드시 소유계정에서 지워야 지워지던데요.. 이부분이 이상한거 같습니다.
결국 문제는 요약되는데요..
- rwx rwx rwx
이런 설정에서.. 외부에서 파일을 삭제하는게 왜 안되는지 궁금합니다.
여러번 해봐도 안됩니다.
두가지 답변부탁드립니다.
sticky bit
sticky bit는 /tmp디렉토리 때문에 생겨난걸루 알고있는데요
처음에 /tmp는 누구나 쓰고 지울수가 있었는데요
여러사용자중에 a가 생성한 파일을 b가 마구 지워버리거나
수정해버리는 현상이 발생해서
sticky bit라는걸 만들어서 sticky bit가 걸려있는 파일 시스템은
그 파일을 생성한 유저만이 삭제를 할수 있도록 하는것입니다.
아직 멀었다.. 난 여전히 시작점
setgid 의 대표적인 명령은write 입니다.모든 tt
setgid 의 대표적인 명령은
write 입니다.
모든 tty에 대한 권한을 group 으로 관리하게 되지요.
ls -al `which write`
ls -al /dev/ttyp* | head
ls -al /dev/pts/* | head
tty 중에 접속되어 있는 것들의 group 소유는 write 의 소유자와 같습니다.
따라서 다른 사람의 terminal 에 쓰기가 가능해집니다.
윗부분에서 설명하신 sticky bit는 directory에 설정된 것만 말씀하신것이고,
만약 sticky bit가 file에 설정되면, 요즘에는 별 의미없다고 생각하시면 됩니다.
-- 추가 --
디렉토리에 setgid가 들어가면, 새로 생성되는 파일의 그룹 소유권이 디렉토리 그룹 소유권으로 됩니다.
또, bsd에서는 setgid가 없어도 생성되는 파일은 디렉토리의 그룹소유권으로 되지요.
---
http://coolengineer.com
답변감사드립니다.이것이 이해가 된다면 어느정도 풀릴것같습니다.
답변감사드립니다.
이것이 이해가 된다면 어느정도 풀릴것같습니다.
- rwx rwx rwx
이런 설정에서.. 외부에서 파일을 삭제하는게 왜 안되는지 궁금합니다.
[quote="gyxor"]답변감사드립니다.이것이 이해가 된다면 어느
파일의 삭제는 해당 디렉토리의 권한과 관련이 있는 걸로 알고 있습니다만.
아마 디렉토리의 권한이 755나 1777쯤 되는걸지도... ^^;
네... 파일을 지우는 것은 파일에 대한 권한이 아니라, 파일이 들어 있
네... 파일을 지우는 것은 파일에 대한 권한이 아니라, 파일이 들어 있는 디렉토리의 권한에 따라갑니다.
현재 디렉토리에서 엔트리 하나가 지워지는 것이고, 그것은 디렉토리의 내용이 바뀌는 것이므로 디렉토리권한을 생각해줘야합니다.
예전 BSD (아마 피라밋이었다고 생각되는데..)에서, 디렉토리인데도 디렉토리 속성을 제거하여 일반 바이너리 파일처럼 다룰 수 있던 것이 생각나는 군요.
---
http://coolengineer.com
Re: sticky bit는
수정도 불가능하지 않을까요?
그냥 읽기 정도라면 몰라도...-_-ㅋ
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
댓글 달기