본문 바로가기

리눅스

5. 파일 및 디렉토리 권한

0. 목차

 1. 파일 및 디렉토리 속성정보 (MetaData) 분석

 2. 권한 변경 및 테스트

  2.1. chmod

  2.2. 8진수법

  2.3. umask

  2.4. chown

  2.5. 특수 권한

 3. MAC time

 4. vi 편집기 사용법

------------------------------------------------------------------------------------------------------------

 

1. 파일 및 디렉토리 속성 정보 ( MetaData ) 분석

예시

1.1. 예시 : -rw-r--r-- 1 root root  2  2월 17 18:49  a.txt

1.2. 분석

  - -  : 파일은 -, 디렉토리는 d, 심볼릭링크는 l로 표현.

  - rw- :  user ( ower ) 권한, r 일기 4, w 쓰기 2, x 실행 1   -> 디렉토리 접근하려면 실행권한(x).

  - r--            : group 권한, r 일기 4, w 쓰기 2, x 실행 1

  - r--            : 기타사용자(other), r 일기 4, w 쓰기 2, x 실행 1  소유주나 그룹에 속하지 않은 모든 user

  - 1              : link 갯수

  - root          : 소유주(owner)
  - root          : 그룹(group)

  - 2              : 용량(size)  
  - 2월 17 18:49 : 파일이나 디렉토리가 마지막으로 수정된 시간
  - a.txt          :  파일이나 디렉토리의 이름

 

2. 권한 변경 및 테스트

 2.1. chmod

  2.1.1. 사용자 지정 옵션

    - ugoa : u = user, g = group, o = other, a = all 을 뜻하며, 옵션을 통해 권한을 얻거나 잃는다.

    - + : 해당되는 권한을 추가하는 옵션

    - - : 해당되는 권한을 제거하는 옵션

    - rwx : r = 읽기 권한, w = 쓰기 권한, x = 실행 권한

a.txt 파일에 user에게 실행권한을 추가하는 명령어, a.txt를 확인해보면 user권한에 x가 추가됨을 볼 수 있다.
go 옵션을 통해 group과 other에게 동시에 실행권한을 부여한다.
- 옵션을 통해 user의 실행권한을 없애고, other에게 쓰기 권한을 부여한다.

   - -R : 하위 디렉토리 속성 전파, 단 명령어 이후 새로 생성하는 파일에는 적용 안됨

-R 옵션을 통해 1 디렉토리에게 모든 사용자들에게 모든 권한을 줌. 하위 디렉토리인 2와 파일들에도 영향이 끼치는 것을 볼 수 있다.
새로 만든 d.txt에는 권한 설정이 영향을 끼치지 않는다.

 

 2.2. 8진수법

  - u : 4 + 2 + 1 => 4는 읽기, 2는 쓰기, 1은 실행을 뜻하며, 부여하고자하는 숫자를 더하여 표시.
  - g : 4 + 2 + 1 => 4는 읽기, 2는 쓰기, 1은 실행을 뜻하며, 부여하고자하는 숫자를 더하여 표시.
  - o : 4 + 2 + 1 => 4는 읽기, 2는 쓰기, 1은 실행을 뜻하며, 부여하고자하는 숫자를 더하여 표시.
  - 777 : 첫번째 숫자 user, 두번째 숫자 groub, 세번째 숫자는 other 권한

           예시는 모든 사용자에게 모든 권한을 준 것
  - -R : 하위 디렉토리의 속성 전파, 단 명령어 이후 새로 생성하는 파일에는 적용 안됨.

755를 통해 user에게는 모든 권한을 나머지에게는 읽기와 실행권한을 부여
-R 옵션을 통해 하위 디렉토의 속성 전파. 2 디렉토리와 내부의 파일들이 부여한 속성으로 변환
새로 생기는 파일에는 권한 변경이 되지 않는다.

2.3. umask 

  - 파일 및 디렉토리 생성 시 모든 권한을 부여하며 보안상 문제가 발생함으로 최소 권한 법칙에 근거하여 파일 및 디        렉토리의 최대 권한에서 umask 만클을 빼서 파일 및 디렉토리 생성.

  - 디렉토리의 최대 권한은 777, 파일의 최대권한은 666.

  - 디렉토리의 경우 해당 디렉토리에 접근하기 위해서는 반드시 x권한이 필요하기 때문에 7의 권한을 가진다.

  - 파일의 경우 sh 명령어도 강제실행이 가능함으로 rw 권한만으로 충분하기에 6의 권한을 가진다.

  - 기본 u 마스크는 0022로 새로운 디렉토리는 그룹과 일반사용자들에게 2를 뺀 755의 권한을 가진다. 또한 새로운 파      일은 그룹과 일반사용자들에게 2를 뺀 644의 권한을 가진다.

umask를 0044로 앞으로 만들어질 디렉토리들의 권한을 733으로 설정. 11과 22의 디렉토리는 user는 모든권한 그룹과 일반사용자는 쓰기와 실행권한만 갖는다.
새로 만들어질 파일들의 권한은 622로 설정.

 

 2.4. chown 소유권 변경

  - chown 사용자id.그룹id 파일명 : 파일의 소유권을 작성한 사용자와 그룹 id로 변경

  - chown 사용자id 파일명 : 파일의 소유권 작성한 사용자id로 변경

  - chown .그룹id 파일명 : 파일의 소유권 작성한 그룹id로 변경 

  - -R : 하위 디렉토리 속성 전파, 단 명령어 이후 새로 생성하는 파일에는 적용 안됨

소유권 변경을 위해 a b의 사용자를 만듬
chown 명령어를 통해 a.txt의 소유주를 root에서 a로 변경 또한 그룹을 b로 변경
a.txt의 소유주와 그룹을 root로 변경
-R 명령어를 통해 1의 하위 디렉토리까지 소유주를 a로 변경
-R 명령어를 통해 1의 하위 디렉토리까지 그룹을 b로 변경
-R 명령어를 통해 1의 하위 디렉토리까지 소유주와 그룹을 root로 변경

 

 2.4.1. 권한 관련 예시

a의 사용자는 자신이 만든 파일을 삭제할 수 있다.
b사용자는 a 사용자가 만든 a.txt를 지울 수 없다. 하지만 root 사용자는 a.txt를 지울 수 있다.

 

 2.5. 특수 권한

  2.5.1. setuid  : 8진수법 앞에 4000번을 더하여 표현.  x->s인경우 (권한O)   x -> S (권한X)

   - 해당 권한이 설정된 파일이 실행되는 동안에는 소유주의 권한으로 실행.

   - #chmod 4755 a.txt 실행권한

   - #chmod 4655 a.txt 실행권한 없음

a.txt의 소유주의 실행권한이 s로 변경됨을 알 수 있다. 
비밀번호를 바꾸는 명령어인 passwd의 경우 파일이 실행하는 동안 소유주의 권한으로 실행되기 때문에 일반 사용자들도 자신의 비밀번호를 변경할 수 있다.

 

  2.5.2. setgid  : 8진수법 앞에 2000번을 더하여 표현.  x->s인경우 (권한O)   x -> S (권한X)

   - 해당 권한이 설정된 파일이 실행되는 동안에는 그룹의 권한으로 실행.

   - #chmod 6755 a.txt 실행권한           --> 해당 명령어는 setuid의 4000과 합쳐져서 6000으로 표현

   - #chmod 6655 a.txt 실행권한 없음

a.txt의 그룹의 실행권한이 s로 변경됨을 알 수 있다.

      2.5.3. stickybit : 8진수법 앞에 1000번을 더하여 표현.               x-t  (권한O)            x-T(권한O)
        - 해당 권한이 설정된 디렉토리에서는 파일이나 디렉토리를 생성한 사용자만 삭제 가능
           ,단 최고 관리자인 root는 영향을 받지 않는다.
        - # mkdir 2    stickybit는 디렉토리에 권한 부여
        - # chmod 7757 2     실행권한            -> 앞선 위의 명령어에 1000번을 더한 모습.
        - # chmod 7756 2     실행권한 없음

1757을 통해 디렉토리 2의 실행권한을 stickbit(t)로 지정.

 

3. MAC time

 3.1. 침해사고 분석 시 파일 및 디렉토리의 접근 시간 (A), 권한 변경(B), 내용 수정(M) 시간 

 3.2. 시간 정보 확인

   - test.txt 파일을 만들어 stat 와 ls 명령어를 통해 MAC time을 확인한다. 

     - cat 명령어를 통해 test.txt 파일을 읽은 후 다시 stat 와 ls 명령어를 통해 MAC time을 확인한다.

       => Access 시간이 변경됨을 알 수 있다. 하지만 파일의 시간은 변경되지 않았다.

      - chmod 명령어로 권한을 변경한 후 다시 확인.

chmod 명령어 실행

            => Change 시간이 변경되었지만 ls를 통한 파일의 시간은 변경되지 않았다.

    - cat >> 명령어를 통하여 파일 변경

       => modify 시간과 change 시간이 변경되었고, ls로 표현된 파일의 시간도 변경되었다.

 

4. vi 편집기 사용법 ( 자주 쓰는 단축키 ) 

4.1. 커서 이동  

 - h j k i : 각각 순서대로 왼쪽, 아래, 위, 오른쪽으로 커서를 움직인다.

 - w : 오른쪽 단어의 끝부분으로 커서 이동

 - e : 오른쪽 단어의 앞부분으로 커서 이동

 - b : 왼쪽 한 단어의 앞 부분으로 커서 이동

 - ^ : 행의 맨 왼쪽으로 커서 이동

 - $ : 행의 맨 오른쪽으로 커서 이동

 - H, L : 화면의 맨위와 맨 아래로 이동

 - 숫자 G : 숫자 만큼 지정한 줄로 커서 이동

 

4.2. 문자, 행 삽입

 - a : 커서 오른쪽에 문자 삽입

 - A : 커서 오른쪽, 행의 끝에 문자 삽입

 - i : 커서 왼쪽에 문자 삽입

 - o : 커서 아래에 행 삽입

 

4.3. 텍스트 변경 명령어

 - U : 행 변경사항 취소

 

4.4. 텍스트 삭제 명령어

 - dd : 커서가 있는 라인 삭제

 - 숫자 dd : 커서가 있는 라인부터 숫자라인만큼 삭제

 -  숫자1, 숫자2d : 숫자1-숫자2번째 행 삭제

 

4.5. 복사 및 이동 명령어

 - yy : 행 이동 또는 복사

 - p : 복사된 행 현재 행 아래에 삽입 , 대문자는 위에 삽입

 

4.6. 행 번호

 - se nu : 행 번호 표시

 - se nonu : 번호 표시제거

 

 4.7. 탐색 및 대체 명령어

 - /검색할 문자열/ : 오른쪽 아래 방향으로 문자열 검색

 - n : 문자열 다음으로 검색, 대문자는 반대로 검색

 - s/문자1/문자2/ : 현재행의 문자1을 문자2로 대체

 - 1,.s/문자1/문자2/ : 1부터 현재 행의 문자1을 문자2로 대체

 - %s/문자1/문자2/ : 파일전체의 문자1을 문자2로 대체

 - .$/문자1/문자2/ : 커서위치로부터 끝까지 문자1을 문자2로 대체

'리눅스' 카테고리의 다른 글

7. 사용자 및 그룹 관리 (2)  (0) 2022.02.21
6. 사용자 및 그룹 관리 (1)  (0) 2022.02.20
4. Archive & 압축  (0) 2022.02.19
3. 리눅스 기본 명령어  (0) 2022.02.19
2. Workstation Pro를 이용한 실습 환경 구성(2)  (0) 2022.02.18