OS 리눅스 공부하기-2 {2023년04월27일}
🐧 리눅스 파일 & 디렉토리 권한 (소유권 / 허가권 / 특수권한)
파일 및 디렉터리 권한 리눅스는 여러사용자가 들어와 사용하는 멀티유저 시스템이다. 따라서 여러 사용자가 들어와 사용하다보면, 서버에 올려진 비밀자료 열람과 그것을 변조,수정,삭제를 할
inpa.tistory.com
리눅스의 퍼미션(권한)에 대해서 공부를 해보려 한다.
퍼미션을 통해 읽기, 쓰기, 실행에 대한 정보들을 파악할 수 있다.
[root@localhost app]# ls -l
total 0
drwxrwxr-x. 9 oracle dba 112 Apr 26 18:51 oracle
drwxrwx---. 4 oracle dba 78 Apr 26 22:03 oraInventory
출력문을 살펴보면 'd''rwxrwxr-x'. 9 'oracle' 'dba' '112' 'Apr 26 18:51' 'oracle'
d = 파일 타입
rwxrwxr-x = 파일 권한 = 775
oracle = 서비스계정
dba = 그룹
112 = 파일사이즈
Apr 26 18:51 = 마지막 수정 날짜
oracle = 파일명
파일 타입 종류
d : 디렉터리
b : 블록 디바이스 파일(하드 드라이브나 CD-ROM 블록 단위의 데이터를 처리하는 디바이스)
c : 문자 디바이스 파일(터미널과 모뎀같이 바이트의 열로 데이터를 처리하는 디바이스)
l : 심볼릭 링크 파일
p : 명명된 파이프(Named Pipe)
s : 유닉스 도메인(Socket)
- : 일반(정규) 파일
퍼미션(권한)
r(4)
ㄴ 파일 : 파일에 대한 읽기 권한. 열기, 읽기 허용
ㄴ 디렉터리 : 디렉터리 내의 파일을 나열할 수 있게 허용
w(2)
ㄴ 파일 : 파일에 대한 쓰기 권한. 쓰기, 잘라내기 허용 (이름 변경, 파일 삭제 x, 파일 삭제 혹은 이름 변경은 디렉토리 속성에 의해 결정)
ㄴ 디렉터리 : 디렉터리 내의 파일을 생성, 삭제, 이름변경이 가능하도록 허용
x(1)
ㄴ 파일 : 파일에 대한 실행 권한. 파일이 프로그램으로 처리되고 파일이 실행되도록 허용. 스크립트 언어에서 작성된 프로그램 파일들은 읽기 기능으로 설정되어 있어야만 실행 가능함.
ㄴ 디렉터리 : 디렉터리 내에서 탐색을 위해 이동할 수 있도록 허용(디렉터리에 들어 올 수 있도록 허용)
r, w, x에 대한 권한이 없음은 문자 자리를 -로 대체 / 디렉토리는 실행권한 x를 꼭 가지고 있어야 해당 디렉터리로 이동
ex) rwxr-xr-- : 파일 소유자에게 읽기, 쓰기, 실행 / 파일소유그룹에게 읽기, 쓰기 / 소유자와 소유그룹 외에는 읽기 권한 754
u : 사용자 / g : 그룹 / o : 기타 / a : 전부
허가권 옵션
$ chmod 옵션
-R 특정 디렉터리 내의 파일과 하부 디렉터리의 모든 디렉터리와 파일에 대한 권한
-C 변경된 파일이나 디렉터리에 대한 자세한 정보를 출력
-f 대부분의 에러메시지 출력을 제한
--reference 모드 대신 파일에 지정한 모드를 사용
허가권 설정
$ chmod 퍼미션숫자 파일명
[root@localhost ~]# chown -R oracle:dba /app
[root@localhost ~]# chmod -R 775 /app
chmod -R 775 /app
즉, /app의 하부디렉터리에 대한 775 = rwxrwxr-x 사용자와 파일소유그룹에게 읽기 쓰기 실행 / 일반사용자에게 읽기, 실행
허가권 변경
$ chmod 기호 문자 파일명
r 읽기 / w 쓰기 / x 실행 / 권한 추가 + / 권한 삭제 - / 권한 지정 =
ex) chmod u=rw 파일명 : [파일명]에 대해 유저에게 권한 초기화 후 읽기, 쓰기 권한
chmod g+rw 파일명 : [파일명]에 대해 그룹에게 읽기, 쓰기 권한을 추가
chmod o-rw 파일명 : [파일명]에 대해 일반사용자에게 읽기, 쓰기 권을 제거
계정이 파일 허가권을 가지고 있지만, 디렉터리에 허가권이 없다면 사용불가
임의 파일에 실행권한 x를 부여 하였어도 실제로 실행가능한 형태가 아니라면 오류가 발생.
x 권한이 있는 파일을 실행하려면 ./ 을 앞에 붙인다.
사용자 및 그룹 소유권 변경
소유권 변경은 오직 root 사용자만 가능.
$ chown 옵션 사용자:그룹 파일
[root@localhost app]# mkdir ssd
[root@localhost app]# ls
oracle oraInventory ssd
[root@localhost app]# ls -al
total 0
drwxrwxr-x. 5 oracle dba 51 Apr 27 00:41 .
dr-xr-xr-x. 18 root root 255 Apr 26 20:21 ..
drwxrwxr-x. 9 oracle dba 112 Apr 26 18:51 oracle
drwxrwx---. 4 oracle dba 78 Apr 26 22:03 oraInventory
drwxr-xr-x 2 root root 6 Apr 27 00:41 ssd
[root@localhost app]# chown -R oracle:root ssd
[root@localhost app]# ls -al
total 0
drwxrwxr-x. 5 oracle dba 51 Apr 27 00:41 .
dr-xr-xr-x. 18 root root 255 Apr 26 20:21 ..
drwxrwxr-x. 9 oracle dba 112 Apr 26 18:51 oracle
drwxrwx---. 4 oracle dba 78 Apr 26 22:03 oraInventory
drwxr-xr-x 2 oracle root 6 Apr 27 00:41 ssd
[root@localhost app]# chmod 777 ssd
[root@localhost app]# ls -al
total 0
drwxrwxr-x. 5 oracle dba 51 Apr 27 00:41 .
dr-xr-xr-x. 18 root root 255 Apr 26 20:21 ..
drwxrwxr-x. 9 oracle dba 112 Apr 26 18:51 oracle
drwxrwx---. 4 oracle dba 78 Apr 26 22:03 oraInventory
drwxrwxrwx 2 oracle root 6 Apr 27 00:41 ssd
반복 연습으로 공부하는게 가장 좋다.