디렉토리 파일 권한과 i-node번호
글쓴이: betterlife / 작성시간: 화, 2006/02/21 - 12:05오후
안녕하세요.
디렉토리 파일의 권한을 실행만 주고 그 디렉토리 내에 있는 파일
에는 읽기를 줍니다. 그 후 그 디렉토리 외부에서,
cat /xxxx/xxx.txt 이런 식으로 해주면 파일을 읽어올수 있는데
이 부분에서 궁금한 점이 있습니다.
제가 아는 바에 의하면 파일을 읽어오기 위해서는 그 파일의 물리
적 블록에 접근해야 하고 그 물리적인 위치는 i-node 구조체가
가지고 있습니다. 그리고 그 특정 i-node 가 있는 위치의 번호는
디렉토리 파일이 가지고 있는데 이 디렉토리 파일을 읽기 위해서는
읽기 권한이 필요하지요. 그 디렉토리 파일을 읽을 수 있어야
파일이름과 i-node의 매치를 확인하고 i-node 를 찾아서 결국
파일을 읽어오는데 제가 위에 말씀드린 경우에는 디렉토리 파일
자체에 읽기 권한이 없기 때문에 파일이름과 i-node를 읽을 수가
없지요. 그런데 cat 명령은 정상적으로 실행이 되었습니다.
이 부분이 이해가 가지 않습니다. i-node 를 읽어올수가 없는데
어떻게 파일을 찾아서 내용을 보여줄수 있었는지 모르겠습니다.
읽어주셔서 감사합니다.
Forums:
directory 의 r권한이 없는 상태로 x권한만 있을 경우 direc
directory 의 r권한이 없는 상태로 x권한만 있을 경우 directory 안에 있는 특정 파일을 읽을 순 있더군요 (파일 이름을 아는 경우) 하지만... 파일리스트는 얻을 수 없구요.
유져레벨에서 directory file 을 열어서 읽는게 아니니까 저런 동작이 맞다고 봅니다. 아니라면 x 권한과 r 권한의 별 차이가 없어질테니까요.
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
cat을 어떤 user로 실행하셨나요?
cat을 어떤 user로 실행하셨나요?
질문의 요지는 아마도 왜 디렉토리 파일에 대해 r 마스크가 없는데 rea
질문의 요지는 아마도 왜 디렉토리 파일에 대해 r 마스크가 없는데 read()가 가능하냐는 것 같습니다.
하지만 디렉토리 파일은 파일시스템이 제공하는 스페셜 파일이고 디렉토리 파일을 해석할 때에는 dirent.h 를 인클루드 시키고 readdir()함수로 struct dirent로 읽어옵니다.
이 함수는 시스템 콜이므로 유저 프로그램인 cat이 이용하는 read()함수와 달리 x마스크 퍼미션만으로 i노드 번호를 찾아올 수 있습니다.
r마스크가 없을때 파일 리스트를 보여주지 않는 것은 ls가 그렇게 작동하도록 구현되어 있기 때문일 뿐이죠. (유닉스 파일 관리 관행입니다.)
자세한 사항은 다음 샘플 소스를 참조.
http://www.redwiki.net/wiki/wiki.php/C/UNIX%C8%A3%C8%AF%C6%FA%B4%F5%C1%B6%C8%B8%B9%E6%B9%FD
you must know the power of dark side.
댓글 달기