[Linux] TLPI 책 정리 5 - Chapter 2 : Fundamental Concepts (3)

시온·2023년 6월 16일
0

Linux

목록 보기
5/7
post-thumbnail

Fundamental Concepts

이번 챕터에서는 리눅스 시스템 프로그래밍에 대한 다양한 개념이 소개되어 있다.

Users and Groups

시스템에서 각 사용자는 고유하게 식별되고, 사용자들은 그룹에 속해있을 수 있다.

Users

시스템에서 각 사용자는 고유한 login (username) 과 numeric user ID (UID) 를 갖게 된다. 아래의 추가 정보 역시 포함된다.

  • Group ID
    사용자가 멤버로 속해있는 그룹의 아이디
  • Home directory
    사용자가 로그인하고 들어가는 첫 디렉토리 (사용자 전용)
  • Login shell
    the name of the program to be executed to interpret user commands.

Groups

초창기 UNIX에서는, 하나의 사용자는 하나의 그룹만 가입할 수 있었다. BSD UNIX에서는 하나의 사용자가 여러 그룹에 가입할 수 있게 허용했고, 그 이후에 POSIX에서 이를 채택하였다.

  • Group name
    그룹의 이름
  • Group ID (GID)
    그룹과 연결된 숫자로 된 ID
  • User list
    그룹에 속한 사용자의 명단

Superuser

root 라는 이름의 사용자이다. UID가 0이며, 시스템에 관한 특별한 권한을 가지고 있다. 일반 UNIX 시스템에서 슈퍼유저는 시스템에서 체크하는 모든 권한을 우회할 수 있다. 슈퍼유저는 모든 파일에 접근 가능하며, 모든 사용자 프로세스에 시그널을 보낼 수 있다. 보통 관리자의 역할을 한다.

커널은 시스템 안의 모든 파일을 정리하기 위해 하나의 계층적 데이터 구조를 유지한다. (이것은 Microsoft Windows와 대비되는데, Windows에서는 각각의 디스크가 각각의 디렉토리 계층을 가지고 있기 때문이다.) 이것을 단일 디렉토리 계층 (Single Directory Hierarchy)라 부른다.

리눅스의 디렉토리 계층은 root 디렉토리로부터 시작하는데 이것을 / 로 표현한다. 모든 파일과 디렉토리는 root 디렉토리의 자식이다.

디렉토리는 내용이 해당 파일에 대한 참조와 결합된 파일 이름 테이블 형식의 특수한 파일이다. 즉, 디렉토리도 파일의 일종이다. 파일 이름과 참조를 묶은 것을 링크(link) 라고 한다.

디렉토리는 파일을 연결하는 링크 또는 디렉토리를 연결하는 링크 둘 다 가질 수 있다. 흔히 인식하는 폴더로 받아들이면 될 듯함.

모든 디렉토리는 적어도 두 개의 출입구를 가진다. . (dot) 은 해당 디렉토리 스스로를 가리키는 링크다. .. (dot-dot) 은 부모 디렉토리(계층 위)로 향하는 링크다. 루트 디렉토리를 제외한 모든 디렉토리에는 부모 디렉토리가 존재한다.

노멀 링크(normal link)와 비슷하게, 심볼릭 링크는 어떤 파일에 대한 다른 이름(alternative name)을 제공한다. 하지만 노멀 링크는 파일 이름 + 포인터 인 반면, 심볼릭 링크는 단순히 가리키는 파일 이름만 들어있다.

종종 노멀 링크를 하드 링크 (hard link)로, 심볼릭 링크를 소프트 링크 (soft link)로 칭하곤 한다.

Filenames

대부분의 리눅스 파일 시스템에선 파일 이름은 최대 255 글자까지 가능하다. 파일 이름에 대한 규칙도 있는데, 특수 문자의 경우, 쉘에서 정규식 등으로 쓰이기 때문에 파일 이름으로 쓰이지 못한다.

Pathnames

여기서는 절대 경로 (absolute pathname)과 상대 경로 (relative pathname) 정도만 알아가면 될 듯 하다.

  • 절대 경로
    / 로 시작하는 경로. 루트 디렉토리부터 시작하기 때문에 절대 경로이다.
    /home/mtk/.bashrc
    /usr/include

  • 상대 경로
    프로세스의 현재 작업 디렉토리와 연관된 경로. 위의 Figure 2-1에서 usr 디렉토리의 경우, types.h 파일의 경우 include/sys/types.h 의 상대 경로를 가진다.

Current working directory

각 프로세스는 현재 작업 디렉토리를 가지게 된다. 이것이 바로 프로세스의 "현재 위치"이다.

쉘의 현재 작업 디렉토리는 cd 명령어를 통해서 바꿀 수 있다.

profile
끊임없이 성장중

0개의 댓글