27.08.2015 Views

리눅스 시스템 프로그래밍-미리보기

커널과 C 라이브러리로 풀어가는(개정2판) 로버트 러브 저/김영근 역 | 한빛미디어 | 2015년 01월 35,000원

커널과 C 라이브러리로 풀어가는(개정2판)
로버트 러브 저/김영근 역 | 한빛미디어 | 2015년 01월
35,000원

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

스템에서 거의 모든 작업을 실행할 수 있다. 예를 들면 오로지 root 사용자만이 프로세스의<br />

uid를 바꿀 수 있다. 따라서 login 프로그램은 루트로 동작한다.<br />

실제 uid 이외에, 프로세스마다 유효 uid, 저장된 uid, 파일<strong>시스템</strong> uid가 있다. 실제 uid는 항<br />

상 프로세스를 시작한 사용자를 나타내지만, 유효 uid는 다른 사용자 권한으로 프로세스를 실<br />

행하도록 만드는 다양한 규칙에 따라 바뀔 수도 있다. 저장된 uid는 원래 유효한 uid를 저장하<br />

며 이 값은 사용자가 전환하기를 원할지도 모르는 유효 uid 값을 결정하기 위해 쓰인다. 파일<br />

<strong>시스템</strong> uid는 일반적으로 유효 uid와 같으며 파일<strong>시스템</strong> 접근을 검증하는 데 쓰인다.<br />

모든 사용자는 하나 이상의 그룹에 속해 있다. 주 그룹이나 로그인 그룹은 /etc/passwd에 지<br />

정하며 추가 그룹은 /etc/group에 지정한다. 따라서 프로세스마다 대응하는 gid(그룹 ID)<br />

이외에 실제 gid, 유효 gid, 저장된 gid, 파일<strong>시스템</strong> gid가 있다. 일반적으로 프로세스는 사용<br />

자 로그인 그룹과 관련이 있으며 추가 그룹과는 관련이 없다.<br />

보안 확인은 특정 범주를 만족하는 경우에만 프로세스가 해당 연산을 실행하도록 허용한다. 역<br />

사적으로 유닉스는 흑백논리에 따라 이런 결정을 실행했다. 예를 들어 uid가 0인 프로세스는<br />

접근이 가능하지만, 다른 프로세스는 접근이 불가능하다. 최근 <strong>리눅스</strong>는 이런 보안 <strong>시스템</strong>을<br />

좀 더 일반적인 보안 <strong>시스템</strong>으로 대체했다. 신규 보안 <strong>시스템</strong>에서는 참/거짓을 따지는 단순한<br />

검사를 넘어 좀 더 세밀한 접근 설정이 가능하다.<br />

1.4.4 권한<br />

<strong>리눅스</strong>의 표준 파일 접근 권한과 보안 메커니즘은 전통적인 유닉스와 동일하다.<br />

파일마다 소유자, 소유자 그룹, 그리고 세 가지 접근 권한 비트가 있다. 이 비트는 소유자, 소유<br />

자 그룹, 그 외 모든 사용자가 파일을 읽고, 쓰고, 실행하는 능력을 기술한다. 세 그룹별로 세 비<br />

트가 할당되어 총 아홉 비트로 표현한다. 소유자와 접근 권한 정보는 파일 inode에 저장된다.<br />

일반 파일의 접근 권한은 읽기, 쓰기, 실행 권한으로 명시하므로 확실히 이해하기 쉽다. 일반<br />

파일과 특수 파일 둘 다 동일하게 읽기와 쓰기 권한을 적용할 수 있지만, 특수 파일에서의 읽기<br />

와 쓰기는 의미가 달라질 수도 있으며 실행 권한은 특수 파일에서 무시된다. 디렉터리에서 읽<br />

기 권한은 디렉터리 목록 내용을 열거하며 쓰기 권한은 디렉터리 내부에 새로운 링크를 추가<br />

(파일 생성)하며 실행 권한은 경로 이름을 사용해서 디렉터리 내부로 들어가도록 허용한다.<br />

1장 핵심 개념 소개<br />

53

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!