environment
- smack 은 linux kernel 내에서 동작한다.
- smack 은 filesystem 의 extended attribute 들과 대응 된다.
process
- process (subject) 가 resource (object) 에 제한을 주는 역활을 한다.
- process 에 label 을 설정하여 resource 를 제한 하도록 설정 한다.
- process 에서 resource 파일을 생성 하면 process(parent) 의 label 을 따르게 된다. (process 에 SMACK64EXEC 값이 존재한다는 전제 하에) process 에 label 을 설정하기 위해서 다음과 같이 실행 한다 (2 가지 방법이 존재 한다.)
-
- chsmack -e labelName processPath
- attr -S -s SMACK64EXEC -V "labelName" processPath
-
특정 process 에 label 을 보기 위해서는 다음과 같은 명령을 사용하면 된다.
- cat /proc/$pid/attr/current
-
현재 process 의 label 을 보기 위해서는 다음과 같은 명령을 사용하면 된다.
- id -Z
-
process 에 label 을 제거하기 위해서는 다음과 같은 명령을 사용하면 된다.
- attr -S -r attrName pathName
resource
-
resource 에 label 을 설정하기 위해서는 다음과 같이 실행 한다. (2 가지 방법이 존재 한다.)
- chsmack -a labelName resourcePath
- attr -S -s SMACK64 -V "labelName" resourcePath
label
-
smack 에서는 미리 선언 되어 있는 label 들이 존재 하며 아래와 같다.
- _ : floor
- ^ : hat
- * : star
- ? : huh
- @ : web
-
각각의 값 들은 다음의 의미를 가진다.
- task (process) 가 * 값을 가지면 arwxt 요청이 거부 된다.
- task 가 ^ 값을 가지면 rx 요청이 허용 된다.
- object (resource) 가 _ 값을 가지면 rx 요청이 허용 된다.
- object 가 * 값을 가지면 arwxt 요청이 허용 된다.
- task 와 동일한 label 을 가진 object 는 arwxt 요청이 허용 된다.
- 명시적으로 선언되어 있는 arwxt 요청은 허용 된다.
- 위의 경우를 제외한 모든 arwxt 요청은 거부 된다.
format
-
접근 제한을 위한 모드는 5 가지가 존재하면 chmod 와 유사 하다.
- a : append
- r : read
- w : write
- x : execute
- t : transmutation
- 가령 cat 이라는 process 에 "capApp" 이라는 label 을 설정 하고 file.txt 에 "myFile" 이라는 label 을 설정 한 뒤에 catApp myFile rw 와 같은 룰을 추가하면 cat process 는 file.txt 파일을 read / write 할 수 있게 된다.
smackfs
- smack 은 가상 파일 시스템 형식으로 smackfs 에 적용 된다.
- smackfs 는 /smack 에 마운트 되어 있다.
- smack 의 rule 은 /etc/smack/access.d 파일에 추가할 수 있다.
-
command 로 직접 smackfs 에 rule 을 추가할 수 도 있다 방법은 아래와 같다.
- echo $yourRule > /smack/load2
'Linux' 카테고리의 다른 글
Prepend current git branch in terminal (0) | 2015.01.15 |
---|---|
synergy (0) | 2014.08.19 |
korean keyboard on ubuntu (0) | 2014.02.24 |
wine (0) | 2014.02.24 |
git with vim (0) | 2014.02.24 |