디렉토리 파일 권한과 i-node번호

betterlife의 이미지

안녕하세요.

디렉토리 파일의 권한을 실행만 주고 그 디렉토리 내에 있는 파일

에는 읽기를 줍니다. 그 후 그 디렉토리 외부에서,

cat /xxxx/xxx.txt 이런 식으로 해주면 파일을 읽어올수 있는데

이 부분에서 궁금한 점이 있습니다.

제가 아는 바에 의하면 파일을 읽어오기 위해서는 그 파일의 물리

적 블록에 접근해야 하고 그 물리적인 위치는 i-node 구조체가

가지고 있습니다. 그리고 그 특정 i-node 가 있는 위치의 번호는

디렉토리 파일이 가지고 있는데 이 디렉토리 파일을 읽기 위해서는

읽기 권한이 필요하지요. 그 디렉토리 파일을 읽을 수 있어야

파일이름과 i-node의 매치를 확인하고 i-node 를 찾아서 결국

파일을 읽어오는데 제가 위에 말씀드린 경우에는 디렉토리 파일

자체에 읽기 권한이 없기 때문에 파일이름과 i-node를 읽을 수가

없지요. 그런데 cat 명령은 정상적으로 실행이 되었습니다.

이 부분이 이해가 가지 않습니다. i-node 를 읽어올수가 없는데

어떻게 파일을 찾아서 내용을 보여줄수 있었는지 모르겠습니다.

읽어주셔서 감사합니다.

정태영의 이미지

directory 의 r권한이 없는 상태로 x권한만 있을 경우 directory 안에 있는 특정 파일을 읽을 순 있더군요 (파일 이름을 아는 경우) 하지만... 파일리스트는 얻을 수 없구요.

유져레벨에서 directory file 을 열어서 읽는게 아니니까 저런 동작이 맞다고 봅니다. 아니라면 x 권한과 r 권한의 별 차이가 없어질테니까요.

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

kewlbear의 이미지

cat을 어떤 user로 실행하셨나요?

jongwooh의 이미지

질문의 요지는 아마도 왜 디렉토리 파일에 대해 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.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.