권한
- 파일/파일/디렉터리를 사용할 수 있는지 정하는 개념(or 값)
- 허가권과 소유권으로 구분
> 허가권 + 소유권 = 권한
허가권
- ls -l 명령을 입력했을 때 나오는 출력 내용 중 개체 형식을 나타내는 첫 글자 뒤에 오는 9개의 글자가 허가권
- 8가지 문자로 권한을 표현 : r, w, x, -, s, S, t, T
r, w, x, - : 일반 권한 표현 문자
s, S, t, T : 특수 권한 표현 문자
- 일반 권한 표현 문자의 의미
r : 읽기, w : 쓰기, x : 실행/접근, - : 권한 없음 | ||
r | 파일 | 파일 내용 읽기 ; cat, head, tail, more, less, vi로 열었을때 등 |
디렉터리 | 디렉토리 내부 목록 확인 ; ls, GUI환경에서 폴더 들어 갔을때 등 | |
w | 파일 | 파일 내용 수정 ; 문서 편집 후 저장, > 기호를 이용 하여 덮어쓰기/내용추가 등 |
디렉터리 | 디렉토리 내부 목록 수정 ; 디렉토리 내부 하위 파일/ 디렉토리 생성/삭제/수정 등 | |
x | 파일 | 실행 ; 파일에 x가 없으면 일반 문서 파일, x가 있으면 실행 파일 (ex. 명령어) |
디렉터리 | 접근 ; 디렉토리에 x가 없으면 디렉토리 자체 및 내부의 항목들을 사용할 수 없다. |
- 9자리의 권한 문자는 기본적으로 r w x 가 세 번 반복되는 형식이고, 없는 권한은 - 대체
9자리의 권한 문자를 3개씩 끊어서 Owner, Group, Other 영역으로 구분 | |
Owner | 소유자를 위한 권한(소유자 : 파일/디렉토리를 소유 중인 사용자) |
Group | 그룹 사용자를 위한 권한(그룹 사용자 : 파일/디렉토리를 소유 중인 그룹에 소속된 사용자) |
Other | 그 외 사용자를 위한 권한(그 외 사용자 : Owner, Group 둘 다 해 당되지 않는 사용자) |
* 3개의 영역중 어느 영역의 권한을 적용받는지에 대한 내용은 소유권에 서 결정
ex> Owner | Group | Other
r w x r - x r - x
- 권한 표현 방법
1. 문자를 이용한 방법
r, w, x, - : 문자를 차례대로 읽어주는 방법
2. 숫자를 이용한 방법
문자를 바탕으로 숫자 값을 계산
* 계산 방법
1) 영역 분리
2) r = 4, w = 2, x = 1, - = 0이라는 값을 각 문자에 대입 후 영역별로 합 계산
3) 각 영역에서 구한 합에 Owner : 100, Group : 10, Other : 1을 곱해 서 전체 합을 계산
ex)
1. rwx r-x r-x > 755
Owner | Group | Other | ||||||
r | w | x | r | - | x | r | - | x |
4 | 2 | 1 | 4 | 0 | 1 | 4 | 0 | 1 |
7 | 5 | 5 | ||||||
x100 | x10 | x1 | ||||||
700 | 50 | 5 |
2. rw- r-- r-- > 644
Owner | Group | Other | ||||||
r | w | - | r | - | - | r | - | - |
4 | 2 | 0 | 4 | 0 | 0 | 4 | 0 | 0 |
6 | 4 | 4 | ||||||
x100 | x10 | x1 | ||||||
600 | 40 | 4 |
- 허가권 변경
chmod [옵션] 권한값 대상 [대상] ... [대상]
* 권한 값을 숫자 or 문자로 입력
숫자는 전체 권한 값을 입력 > numeric method
문자는 영역을 의미하는 문자에 권한 문자를 +,- 연산 > symbolic method
** symbolic method에서 사용하는 영역 문자
u : owner
g : group
o : other
소유권
- 파일이나 디렉터리를 어느 사용자와 그룹이 소유하고 있는지 나타내는 권한
> ls -l 명령으로 출력되는 정보 중 링크 개수 뒤에 나오는 사용자명과 그룹명이 소유권
- 소유권을 두 개의 영역으로 구분
> 앞에 나오는 정보가 계정명(UID), 파일/파일/디렉터리를 소유하고 있는 사용자
뒤에 나오는 정보가 그룹명(GID), 파일/파일/디렉터리를 소유하고 있는 그룹
- 소유권 변경
chown [옵션] 권한 값 대상 [대상] ... [대상]
* 권한 값 작성 방식( : 기호 대신. 기호. 사용 가능)
UID >> 소유권의 UID 지정
UID:GID >> 소유권의 UID, GID 지정
UID: >> 소유권의 UID,GIDUID, GID를 특정 사용자의 UID, GID로 변경
:GID >> 소유권의 GID 지정
허가권과 소유권이 적용되는 방식(★★★★★)
1. 작업 주체와 작업 대상의 UID, GID확인
작업 주체: 작업을 수행하는(명령을 입력받은) 사용자 >> 사용자 정보 중 UID, GID(/etc/passwd 파일, id 명령)
작업 대상: 작업(명령)의 대상이 되는 파일/디렉터리/디렉터리>> 소유권 UID, GID(ls 명령의 -l 옵션이나 -n 옵션)
2. 작업 주체와 작업 대상의 UID, GID 비교
1) UID 비교 >> UID 일치하면 허가권의 owner 영역 권한 적용, 일치하지 않으면 GID 비교
2) GID 비교 >> GID 일치하면 허가권의 group 영역 권한 적용, 일치하지 않으면 허가권의 other영역 권한 적용
특수권한
- 특수한 동작을 하는 권한
> 특수한 목적으로 사용하는 권한
- setUID, setGID, sticky bit 3가지의 특수 권한이 있다.
4777 r w s r w x r w x : setUID (안 쓰는 걸 강추)
2777 r w x r w s r w x : setGID
1777 r w x r w x r w t : sticky bit
* x 위치의 문자가 s/t로 변경(x가 있는 상태였다면 소문자 s/t, x가 없는 상태였다면 대문자 S/T)
ex>
rws r-x r-x : 4755
rwS r-x r-x : 4655
sticky bit
- 디렉터리에 설정하는 특수 권한
- 디렉터리 내부에 파일/디렉터리 생성은 권한만 있으면 누구나 가능하지만
파일/디렉터리 삭제는 대상의 소유자(소유권의 UID)와 관리자만 가능
setUID
- 실행 파일에 설정하는 특수 권한
- 파일이 동작하는 동안 owner의 권한을 사용할 수 있도록 해주는 특수 권한
> 동작하는 동안 owner가 된다라고 생각해도 큰 차이가 없다.
rpm
- redhat package manager; 패키지를 이용한 프로그램/서비스 관리
* 패키지 : 프로그램을 나눠놓은 조각
- Linux는 kernel부터 시작하여 모든 구성이 패키지로 이루어져 있고 패키지는 다른 패키지와 의존 관계에 놓여있는 경우가 많다.
> 패키지 설치/삭제 과정에서 의존성 관련 오류가 굉장히 많이 나온다.
- rpm은 redhat에서 처음 만들어서 도입했고, redhat기반의 모든 Linux에서는 rpm명령어 사용
> debian 기반의 Linux에서는 rpm이 아닌 dpkg 명령 사용
- 형식
설치 : rpm -ivh 패키 지명-버전. 아키텍처. rpm
확인 : rpm -qa | grep 패키지명
삭제 : rpm -e 패키지명[-버전.아키텍처]
- 패키지 이름 구조
vim-filesystem-7.4.629-7.el7.x86_64
<----------------->|<----------->|<-------->
패키지명 버전 아키텍처
1. 패키지명
- 패키지명은 한 단어이거나 - 기호를 이용한 여러 단어의 조합으로 구성
(패키지명에 숫자만 단독으로 나오는 경우가 없기 때문에 버전과 구별 가능)
- 한 단어이면 해당 패키지로 설치되는 프로그램 or 서비스 이름을 나타낸다.
- 여러 단어이면 첫 단어가 설치되는 프로그램 or 서비스 이름이고 뒤에 이어지는 단어들이 세부 역할을 의미한다.
2. 버전
- 버전은 여러 가지 세부 버전으로 구성
7 | major |
4 | minor |
629 | patch |
7 | release |
el7 | OS |
* OS 버전 예시
el7 = CentOS 7 버전 전체
el7_9 = CentOS 7.9 버전
centos = 모든 버전의 CentOS
<생략> = 모든 종류/버전의 운영체제
3. 아키텍처
CPU의 bit와 관계되어서 특정 수준의 CPU이상에서 사용 가능하다 라는 의미
> CPU의 bit 수는 한 번에 처리 가능한 데이터의 bit 수
32 bit : i386, i586 ,i686 (잘 사용하지 않음)
64 bit : x86_64
공용 : noarch
- 의존성 오류
1. 확인 방법
A is needed by B : B에게 A가 필요하다.
1) 설치할 때
(설치하려는 패키지가 B 위치에 출력)
B를 설치하기 위해 A가 먼저 설치되어야 한다.
2) 삭제할 때
(삭제하려는 패키지가 A 위치에 출력)
B에게 A가 필요하기 때문에 A를 삭제할 수 없다.
2. 해결 방법
1) 의존성 오류 메시지를 읽고 해당 내용 해결
2) 의존성 오류를 무시하는 보조 옵션 --nodeps 사용
> 패키지를 확인했을 때 중요 패키지이거나(삭제할 때) 찾을 수 없는 패키지라 면(설치할 때) 의존성 오류를 무시한다.
3. 의존성 오류에서 패키지명이 아닌 다른 내용이 출력되면
1) 파일의 절대 경로
> 패키지에 해당 파일이 포함되어 있는 경우 (일반적으로 삭제할 때 출력)
파일명을 패키지 이름처럼 읽으면 된다.
2) lib~~~.so.숫자(~~~)
> ~~~ 부분이 패키지를 의미(설치/삭제 시 전부 출력)
해당 의존성 오류를 검색하여 패키지명 확인
3) pkgconfig(~~~)
> ~~~ 부분이 패키지를 의미(일반적으로 설치할 때 출력)
해당 의존성 오류를 검색하여 패키지명 확인
yum
- Internet을 이용한 자동 패키지 관리
> 반드시 Internet이 연결되어 있어야 사용 가능
- 의존성 오류까지 전부 해결
- 형식
yum [옵션] { install | update | remove } 패키지명 | |
intstall | 설치 |
update | 업데이트 |
remove | 삭제 |
history list | 스냅샷과 같은 기능 |
* 옵션
-y : y/N 물어볼 때 자동으로 y 입력
※ yum clean all : 캐시 메모리를 삭제하는 명령어
- 이전 작업이 중지되게 되면 캐시 메모리로 넘어가게 되는데 다른 명령어를 실행할 때 영향을 줄 수도 있기 때문에 캐시 메모리를 제거한 후 재연결을 한다.