본문 바로가기

Linux

smack

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 가지 방법이 존재 한다.)
    1. chsmack -e labelName processPath
    2. 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 가지 방법이 존재 한다.)
    1. chsmack -a labelName resourcePath 
    2. 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