참고 학습용
- bash scripting cheatsheet
- Carl Albing, JP Vossen, Cameron Newham
- Bash cookbook
4장 접근제어
- 각 사용자 계정은 실행 파일, 파일, 장치, 기타 리눅스 자산에 접근할 수 있는 사용자 id와 연결된다.
- 사용자: 프로세스를 실행하고, 파일을 소유한다.
- 프로세스: 프로세스는 커널이 메인 메모리에 로드해 실행하는 일종의 프로그램(실행 파일)이다.
- 파일: 소유자가 존재한다. 기본적으로 파일을 만든 사용자가 파일을 소유한다.
- 프로세스: 의사소통과 지속성을 위해 파일을 사용한다. 물론 사용자도 파일을 간접적으로 사용하기도 하지만 그러려면 프로세스를 통해야 한다.
임의 접근 제어(dirscretionary access control)
- (DAC) 임의 접근제어를 사용하면 사용자의 신분을 기반으로 리소스에 대한 접근을 제한할 수 있다.
- 임의: 특정 권한을 가진 사용자가 이를 다른 사용자에게 전달할 수 있음을 뜻한다.
- 파일 주인(소유자)이 접근 권한을 결정하는 방식
내 집의 열쇠는 내가 쥐고 있고, 누구를 들일지 내가 정한다.
강제 접근 제어 (mandatory access control)
- 강제 접근 제어(MAC)
- 시스템 정책에 따라 접근이 강제로 제한되는 방식
- 주인이 허용하더라도, 보안 정책이 허용하지 않으면 접근 불가
- 강력한 보안(국방, 금융 등에서 사용); SELinux, AppArmor
시스템 규칙이 최고, 주인도 함부로 못 바꿈
사용자
- 시스템 사용자 또는 시스템 계정
- 일반적으로 프로그램(데몬daemon)은 이런 유형의 계정을 사용해 백그라운드 프로세스를 실행한다.
- sshd와 같은 운영체제의 일부이거나, 애플리케이션 계층(mysql 등) 에 있을 수 잇다.
- 일반 사용자
- 리눅스를 대화식으로 사용하는 인간 사용자 유형
32비트 숫잣값인 사용자id(uid)
-
UID를 통해 사용자를 식별하며, 사용자는 그룹id(gid)를 통해 식별되는 하나 이상의 그룹에 속한다.
-
여기에 일반적으로 root라고 하는 UID 0을 가진 특별한 종류의 사용자가 있는데, 이 수퍼유저는 무엇이든 할 수 있다.
-
일반적인 경우에는 root 사용자로 작업하는 것은 피해야 한다. 권한이 너무 많기 때문이다.
-
주의하지 않으면 자칫 시스템을 파괴하기 쉽다.
-
UID 0: root 사용자
-
UID 1~999: 시스템 사용자에 지정됨
-
UID 65534: nobody 사용자, 예를 들어 원격 사용자를 잘 알려진 id에 매핑하는 데 사용됨
-
UID 1000~65533, 65536~4294967294: 일반 사용자
-
$ id -u 로 확인
로컬에서 사용자 관리하기
로컬 사용자 관리 파일
1. 사용자 관리 데이터베이스: /etc/passwd
2. 그룹 데이터베이스: /etc/group
3. 사용자 비밀번호 : /etc/shadow
4. 그룹 비밀번호: /etc/gshadow
root:x:0:0:root:/root:/bin/bash
1. 사용할 로그인 셸, 대화식 로그인을 이용하지 않으면 /sbin/nologin (/bin/bash)
2. 사용자의 홈, 디렉터리, 기본값은 /이다. (/root)
3. 이름 또는 전화번호같은 연락처 데이터 등의 사용자 정보, 흔히 GECOS 필드라고도 알려져 있다.
4. 사용자의 기본 그룹(GID), /etc/group 도 참조하자.
5. UID, 리눅스는 1000 미만의 UID는 시스템 사용을 위해 예약해둔다.
6. 사용자의 비밀번호, x문자는 (암호화된) 비밀번호가 /etc/shadow에 저장된다.
7. 사용자 이름은 32자 이하여야 한다.
- /etc/passwd는 모든 사용자가 읽을 수 있지만,
/etc/shadow를 읽으려면 일반적으로 root 권한이 필요하다.
중앙집중식 사용자 관리
- 시스템이나 서버가 둘 이상인 경우, 중앙에서 사용자를 관리하지만 하나의 특정 시스템에 로컬로 적용할 수 있는 관리 방식이 필요하다.
- 디렉터리 기반(LDAP:Lightweight Directory Access Protocol)
- 디렉터리 서비스에 접근하고, 데이터를 조회/수정하기 위한 프로토콜
- ex) SSO 로그인 인증: 사내 시스템, 메일, vpn을 모두 하나의 계정으로 로그인
- 네트워크 이용: 커버로스 사용 (네트워크로 사용자 인증)
- 구성 관리 시스템 사용: 앤서블, 셰프, 퍼핏, 솔트스택 등의 시스템들을 사용해 여러 컴퓨터에서 일관되게 사용자를 생성할 수 있다.
권한
파일 권한
리소스에 접근
한다는 리눅스 개념의 핵심
- 사용자 : 파일의 소유자
- 그룹: 하나 이상의 구성원이 있음
- 나머지: 그 밖의 모두
접근 유형
- 읽기(r): 사용자가 파일 내용을 볼 수 있다. 디렉터리의 경우, 사용자는 디렉터리에 있는 파일의 이름을 볼 수 있다.
- 쓰기(w): 일반 파일의 경우 사용자가 파일을 수정하고 삭제할 수 있다. 디렉터리의 경우, 사용자가 디렉터리에서 파일을 만들고 이름을 바꾸고 삭제할 수 있다.
- 실행(x)