접근제어의 객체는 파일, 포더, 메모리 장치, 그리고 입출력장치들을 포함한다.
이러한 접근제어(access control)의 목적은 모든 자원을 균일하게 처리하는 것이다.
자원들은 tree-structured file system에서 조직화된다.
6.4.1 The Inode
폴더안에 각 파일 기재는 inode라 불리는 데이터 구조로 가리킨다.
각 디렉토리는 그 그자신을 가리키는 '.'와 부모 디렉토리를 가리키는 '..'를 포함한다.
모든 파일은 보통 그 파일을 생성한 유저를 소유자로 가진다.
모든 파일은 한 그룹에 속한다.
새롭게 생성된 파일은 생성장의 그룹 또는 디렉토리 그룹에 속한다.
inode의 필드들을 논의하기 전에 우리는 ls -s 명령어를 통해 얻는 리스트로 디렉토리를 조사하자
-rw-r--r-- 1 diego staff 1617 Oct 28 11:01 adcryp.tex
상기의 정보는 우리에게 알려준다.
처음 문자 파일 형태를 알려준다. '-'는 파일, 'd'는 디렉토리, 'b'는 block device file, 'c'는 character device file
다음 9 문자는 파일 허가를 의미한다.
다음 숫자 필드는 link counter로 파일의 링크 수를 센 것이다.
다음 2개의 필드는 name과 group이다.
다음은 파일 크기이다.
다음 시간과 날짜는 마지막 변경 시간인 mtime이다.
ls -lu 는 마직막 접근 시간인 atime을 보여주고, ls -lc는 inode의 마지막 변경시간인 itime을 보여준다.
마지막 필드는 파일 이름을이고, 만약 디렉토리이면 마지막에 '/'가 붙는다.
예를 들면 ads/ <-이런식으로 붙는다.
파일 이름은 디렉토리에 저장되지 inode엔 아니다.
파일 인가는 3쌍의 그룹으로 되어 있어서, 소유자, 그룹, other에 대한 읽기, 쓰기, 실행을 정의한다.
'-'는 권한이 없는것을 의미한다.
파일 인가는 숫자로 명시가 가능하다
1은 실행, 2는 쓰기, 4는 읽기 7은 모두 가능함을 나타낸다.
6.4.2 Defult Permissions
에디터나 컴파일러 같은 유닉스 유틸리티들은 전형적으로 새로운 파일을 생성하면 기본 인가로 666을 사용하고, 새로운 프로그램 생성할 때는 777을 기본 인가값으로 사용한다.
이러한 인가들은 umask에 의해 그 이상 조정될 수 있다.
umask는 억제되어야 하는 것들을 명시하는 8개 숫자의 3자리 표현식이다.
따라서 777이면 모든 접근이 거부되고, 000이면 제한이 없다.
6.4.3 Permission for Directories
한 directory안에 files와 subdirectories들을 넣기 위해서는 directory에 대한 정당한 퍼미션을 가져야만 한다.
read 퍼미션은 ls또는 비슷한 명령어로 디렉토리안의 파일들을 유저가 찾을 수 있게 허락한다.
write 퍼미션은 유저가 directory 안에 파일 추가나 삭제를 하는 것을 허락한다.
execute 퍼미션은 현재 directory에 directory를 만들기 위해서나 directory 안에 파일을 열기 위해 요구된다. 너는 execute 퍼미션이 존재한다는 것을 안다면 directory안에 파일을 열 수 있으나, 너가 directory안에 무엇이 있는지 보기위해서 ls 명령어를 사용할 수없다.
그러므로, 너의 소유 파일에 접근하기 위해서는, directory안에 execute permission필요하다.
너의 파일을 다른 유저들이 읽는 것을 막기위해서는, 너는 접근 퍼미션에 맞게 세팅하거나 directory 접근을 막을 수 있다.
파일을 지우기 위해서는, 너는 write와 execute 퍼미션이 필요하다.
당신은 그 파일에 대한 어떤 퍼미션도 필요가 없다. 심지어 다른 유저들도 속할 수 있다.
이러한 기능에 대해 한 시스템 관리자 말을 인용하면,
누군가의 directory에 영구적인 파일을 시도하고 설치한다면 괴로울 것이다.
유닉스의 초기 버전의 잔유물은 stick bit이다.
원래 목적은 프로그램 실행이 종료된 후에도 메모리에 계속 상주시켜서 다음 실행시에 상대적으로 실행 속도를 빠르게 하도록 설정하는 속성이었다.
하지만 이것이 directory에 적용이 되면 의미가 틀려진다.
사용자가 일반적인 directory 쓰기 권한이 있다고 하더라고 확실하게 소유되어 있는 파일이나 쓰기 허가가 있는 파일만 쓰고 지울수 있다는 것이다.