'Linux'에 해당되는 글 8건

  1. 2012.08.20 setuid & setgid & sticky bit
  2. 2012.08.18 LD_PRELOAD
  3. 2012.08.17 Symbolic/Hard link
  4. 2012.08.17 i-node
OS/Linux2012. 8. 20. 13:04

Linux에 존재하는 특별한 Permission에 대해 배워보겠습니다.

Linux에서 파일 및 디렉토리 목록을 보면 rwxrwxr--와 같이 permission 설정이 보입니다.

r은 읽기, w는 쓰기, x는 실행 권한을 뜻합니다.


위의 사진에서 gremlin에는 특이하게도 s가 붙어있습니다.

s는 setuid의 Symbolic입니다.


setuid가 설정된 파일을 실행하는 동안 잠깐 설정된 permission을 빌려올 수 있습니다.

실행이 종료된 후에는 다시 원래의 permission으로 돌아오게 됩니다.

setuid는 실행되는 파일의 소유자의 permission을 잠깐 가져오는 것이고

setgid는 실행되는 파일의 소유그룹의 permission을 잠깐 가져오는 것입니다.


위의 permission 외에도 sticky-bit라는 특별한 permission도 존재합니다.

이는 other의 쓰기 권한에 대한 특별한 permission입니다.

Symblolic은 t 입니다.


명령어


chmod [permission] [file path]

4000 : setuid

2000 : setgid

1000 : sticky-bit


'OS > Linux' 카테고리의 다른 글

LD_PRELOAD  (0) 2012.08.18
Symbolic/Hard link  (0) 2012.08.17
i-node  (0) 2012.08.17
Posted by slimV
OS/Linux2012. 8. 18. 16:51

LD_PRELOAD



대부분의 최신 운영체제는 동적 라이브러리라고도 하는 공유 라이브러리(Shared library)를 사용합니다.

공유 라이브러리를 포함하는 파일의 확장자는 .so(Shared Object)입니다.

일반적으로 libaaa.so는 libaaa.so.x에 대한 Symbolic link로, 여기에서 x는 라이브러리의 버전을 나타냅니다.

Linux의 경우 이런 라이브러리의 대부분을 /usr/lib에 저장합니다.


Linux에서도 프로세스가 로드될 때 여러 라이브러리들을 로드합니다.

LD_PRELOAD는 프로그램이 라이브러리를 가져오기 전에

원하는 라이브러리를 먼저 등록해주는 환경변수입니다.

프로그램은 LD_PRELOAD로 지정된 공유 오브젝트를 먼저 링크하게 됩니다.



명령어


컴파일러 옵션 : gcc [source] -fPIC -shared -o [destination]

참조 명령 : export LD_PRELOAD="[file path]"


'OS > Linux' 카테고리의 다른 글

setuid & setgid & sticky bit  (0) 2012.08.20
Symbolic/Hard link  (0) 2012.08.17
i-node  (0) 2012.08.17
Posted by slimV
OS/Linux2012. 8. 17. 16:21

Symbolic/Hard link



Link


Unix와 Linux 파일 시스템에서 실제 파일이나 디렉토리 혹은 다른 링크를 가리키도록 연결하는 것을 의미합니다.

Windows의 바로가기나 단축아이콘을 생각할 수도 있지만 Link는 파일 시스템 차원에서 제공된다는 근본적인 차이가 있습니다.

링크로 접근하거나 원본으로 접근하여 파일의 내용을 수정하였다면 원본과 링크된 파일이 모두 수정됩니다.

Link에는 Symbolic link와 Hard link 두 가지가 있습니다.

일반적으로 링크라 함은 Symbolic link를 말합니다.


i-node에 대한 개념을 모르시면 다음 글을 읽고 오세요.

 -> http://slimv.tistory.com/entry/inode


Symbolic link (Soft link)


원본 파일의 i-node를 참조합니다.

Windows의 바로가기 기능과 유사합니다.

주로 디렉토리를 링크할 때 사용합니다.

파일의 불필요한 반복적 복사를 방지하여 파일 시스템을 유연하게 활용합니다.

원본 파일이 삭제되면 실제 데이터 블럭을 참조하던 i-node도 삭제되어 Symbolic link된 파일은 사용할 수 없게 됩니다.


target에 대해 Symbolic link로 copied를 생성한 상태입니다.


Hard link


원본 파일 자체를 참조합니다. 원본과 같은 i-node를 가지고 있습니다.

주로 일반 파일을 링크할 때 사용합니다.

원본 파일을 복사한 다음 이의 사본을 생성합니다.

원본이 삭제되어도 원본과 동일한 내용의 파일을 가지고 있습니다.

자원을 공유하면서도 데이터를 안전하게 관리하고자 할 때 주로 사용합니다.


target에 대해 Hard link로 copied를 생성한 상태입니다.

i-node가 177427로 동일합니다.


명령어


ln [option] [source] [destination]


'OS > Linux' 카테고리의 다른 글

setuid & setgid & sticky bit  (0) 2012.08.20
LD_PRELOAD  (0) 2012.08.18
i-node  (0) 2012.08.17
Posted by slimV
OS/Linux2012. 8. 17. 15:58

Unix와 Linux에서 사용하는 자료구조인 i-node에 대해 알아보겠습니다.


i-node는 파일 시스템 내부에 파일을 유지하는 중요한 정보를 구조체 형태로 갖고있습니다.

각 i-node는 i-node 번호로 구분됩니다.

기본적으로 i-node는 파일의 실제 이름과 파일의 실제 내용을 제외한 파일에 대한 모든 정보를 담고 있습니다.

i-node에 담긴 중요한 정보들 몇가지를 소개하겠습니다.

▷ i-node 번호

▷ stat C 함수에서 사용되는 파일 유형을 이해하기 위한 모드 정보

▷ 파일 링크 숫자

▷ 소유주 UID

▷ 소유주 GID

▷ 파일크기

▷ 파일이 사용하는 실제 블록 개수

▷ 마지막으로 수정된 시각

▷ 마지막으로 접근한 시각

▷ 마지막으로 변경된 시각


Linux에서는 모든 디바이스나 디렉토리를 전부 파일개념으로 인식하기 때문에 전부 i-node를 부여받습니다.

i-node는 파일의 생성과 동시에 임의로 부여됩니다.

만약 i-node가 같은 파일이 있다면 파일 이름이 다르더라도 같은 파일을 가리키고 있는 것이 됩니다.

i-node 번호 확인은 명령어 'ls -i'를 통해 확인할 수 있습니다.


링크의 개념을 모르시면 다음 글을 읽고 오세요.

 -> http://slimv.tistory.com/entry/SymbolicHard-link


copied는 target에 대해 Hard link가 걸린 상태입니다.

i-node를 확인해보니 copied와 target이 177427로 i-node가 같습니다.


copied는 target에 대해 Symbolic link가 걸린 상태입니다.

확인해보니 copied와 target의 i-node가 서로 다른것을 볼 수 있습니다.

이는 copied가 target의 i-node를 참조하는 것이 아니라 target 파일을 참조하고 있기 때문입니다.


i-node를 이용한 파일 삭제


find -inum [i-node number] -exec rm -f {} \;


'OS > Linux' 카테고리의 다른 글

setuid & setgid & sticky bit  (0) 2012.08.20
LD_PRELOAD  (0) 2012.08.18
Symbolic/Hard link  (0) 2012.08.17
Posted by slimV