상세 컨텐츠

본문 제목

[컴퓨터학부] 리눅스 시스템 프로그래밍 3월 8일 (chmod, umask, stat, st_mode, 파일 디스크립터 테이블 )

프로그래밍/University

by 셉인 2023. 3. 13. 01:04

본문

728x90

1. 기본 리눅스 명령어 : chmod  umask
(1) 파일의 접근 권한(파일 모드) 변경 방법 : rwx, 8진수, 777, 666, 소유자 user, group, other 를 위한 각 3bit (8진수 7)를 통한 r w x.  
(2) 일반파일의 기본 접근 권한 : 666 (rw-rw-rw)  / 디렉토리파일의 기본 접근 권한 : 777 (rwx rwx rwx)

(3)  umask 접근권한 설정 %umask의 결과 확인/umask 값 변경  

 

리눅스의 권한이란 ? 어떠한 파일에 대해 어디까지 사용이 가능한가를 제한하는 것

파일의 권한은 소유자(user), 그룹(group), 그외사람들 (other) 순으로 3칸씩 9칸이 있다.

3칸 중 맨 앞칸은 읽을 수 있는 권한 r, 그 다음은 파일의 내용을 변결항 수 있는 w, 마지막으로 파일을 실행할 수 있는 x

rwx로 배치

권한이 없다면 "-"로 표시된다.

 

chmod 명령어는 파일의 권한을 변경할 수 있게 만들어주는 명령

"change" + "mode"

mode -> 읽기, 쓰기, 실행과 각각의 권한을 지정할 파일 소유자, 그룹, 그외 사용자와 같은 대상을 포함한 파일의 속성에 대한 설정값

 

chmod 선택옵션 + 모드를 나타내는 문자열 + 대상 파일

chmod [OPTION] [MODE] [FILE]
      OPTION
        -v        : 모든 파일에 대해 모드가 적용되는 진단(diagnostic) 메시지 출력.
        -f        : 에러 메시지 출력하지 않음.
        -c        : 기존 파일 모드가 변경되는 경우만 진단(diagnostic) 메시지 출력.
        -R        : 지정한 모드를 파일과 디렉토리에 대해 재귀적으로(recursively) 적용.
      MODE
        파일에 적용할 모드(mode) 문자열 조합.
          u,g,o,a : 소유자(u), 그룹(g), 그 외 사용자(o), 모든 사용자(a) 지정.
          +,-,=   : 현재 모드에 권한 추가(+), 현재 모드에서 권한 제거(-), 현재 모드로 권한 지정(=)
          r,w,x   : 읽기 권한(r), 쓰기 권한(w), 실행 권한(x)
          X       : "디렉토리" 또는 "실행 권한(x)이 있는 파일"에 실행 권한(x) 적용.
          s       : 실행 시 사용자 또는 그룹 ID 지정(s). "setuid", "setgid".
          t       : 공유모드에서의 제한된 삭제 플래그를 나타내는 sticky(t) bit.
          0~7     : 8진수(octet) 형식 모드 설정 값.

ls -l : 리눅스에서 파일 또는 디렉토리에 지정된 권한을 확인하기 위해 

현재 디렉토리 내 파일 리스트(ls=>list)가 하나의 파일 단위로 한줄로 길게(l => long) 표시 

 

  • 디렉토리에 있는 파일 및 디렉토리 리스트 읽기. (r = read) -> 디렉토리의 내용을 읽기 위해서는 읽기 권한 필요
  • 디렉토리에 파일 추가, 이름 변경, 삭제. (w = write) -> 디렉토리의 내용을 변경하기 위해서는 쓰기 권한 필요
  • 디렉토리에 접근. cd 명령으로 working directory 이동. (x = execute) -> 디렉토리의 접근을 위해 실행 권한 필요하며 가장 기본적인 접근 권한

"8진수" 값을 사용하는 방법은 각 권한(rwx)을 8진수 형태의 숫자 값으로 변환하여 한번에 지정하는 방법

각 u,g,o에는 8진수의 공간이 있다.

그리고 각 자리는 2배씩 된다. x는 1 w는 2 r은 4 즉 4 2 1 

777이면 rwx-rwx-rwx

642이면 rw-r---w-

 

umask 명령어 -> 파일이나 디렉터리 생성 시 초기 접근 권한을 설정할 때 사용

터미널에 umask 를 입력하면 umask 값을 확인할 수 있다.

기본 접근 권한 : 기본으로 설정되는 권한

기본적으로 일반파일의 최대 권한은 666, 디렉토리의 최대 권한은 777이지만, 여기서 기본적으로 디렉토리를 생성한다거나 파일을 만들어 줄 때 기본적으로 지정될 권한을 설정해주는 것

여기에 umask 값을 빼서 초기 파일 권한을 설정할 수 있다.  (보수)

umask 값이 002라면 파일 초기 접근 권한은 664

 

$ umask <마스크값>

마스크값 : 말 그대로 마스크를 해주는 값 

기본적으로 022 또는 002로 설정되어 있다

 

마스크 값 계산 방법

2진수 파일의 권한과 마스크값과 XOR 연산을 하면 그게 최종 권한이다. 

서로 다르면 1 같으면 0

 

777의 보수인 000으로 초기 파일 권한을 부여하려면 

umask 000
umask a=rwx

변경된 umask 값은 터미널을 종료하게 되면 초기화된다. 


참고자료

https://mamu2830.blogspot.com/2019/09/rwx.html

 

리눅스 rwx, chmod, 8진수 매우 자세히!

리눅스 rwx, chmod, 8진수에 대해서 자세하게 설명한 포스트입니다.

mamu2830.blogspot.com

https://recipes4dev.tistory.com/175

 

리눅스 chmod 명령어 사용법. (Linux chmod command) - 리눅스 파일 권한 변경.

1. 리눅스 파일 사용 권한 리눅스에서, 파일(File)을 사용해 할 수 있는 작업은 크게 세 가지로 나눌 수 있습니다. 파일에 저장된 데이터를 읽기. (r = read). 파일에 데이터를 쓰기. (w = write). 파일 실

recipes4dev.tistory.com

https://server-talk.tistory.com/422

 

Linux 명령어 - umask 명령어 사용법 알아보기(파일 퍼미션 마스크)

Linux 명령어 - umask 명령어 사용법 알아보기(파일 퍼미션 마스크) 이번 포스팅에서는 umak 명령어에 대해서 알아보도록 하겠습니다. Linux umask 명령어 란? umask 명령어는 리눅스에서는 특정 디렉터리

server-talk.tistory.com

https://starrykss.tistory.com/1666

 

[리눅스 명령어] umask

umask 파일이나 디렉터리 생성 시 부여되는 기본 허가권 값을 지정하는 명령 다음의 값에서 설정한 umask 값을 뺀 값을 기본 허가권으로 지정 파일 : 666 (rw-rw-rw-) 디렉터리 : 777 (rwxrwxrwx) (참고) umask

starrykss.tistory.com

이 블로그에 세세하게 나와있음 정독하기.



2. 파일의 속성 stat 구조체 -> st_mode (나중에 상세하게 배울 예정)

파일의 정보를 담는 stat구조체

st_mode: 파일의 모드를 다룸

파일의 종류를 알 수 있고, 파일의 퍼미션도 알 수 있다

.


참고 자료

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=skssim&logNo=119485633 

 

파일 접근 권한 제어

st_mode 값의 구조 st_mode 항목의 데이터 형인 mode_t는 unsigned int로 정의되어 있습니다. 실제로 이중 ...

blog.naver.com

 

3. 파일디스크립터 테이블 (오픈 파일테이블). 지역(local) 구조 -> 프로세스 마다 한개의 파일디스크립터 테이블,  fd 0, 1, 2 

 

파일 디스크립터

- 시스템으로부터 할당 받은 파일을 대표하는 0이 아닌 정수 값

- 프로세스에서 열린 파일의 목록을 관리하는 테이블의 인덱스

 

0 - 표준 입력(Standard Input)

1 - 표준 출력(Standard Output)

2 - 표준 에러(Standard Error)


참고자료

https://dev-ahn.tistory.com/96

 

리눅스 - 파일 디스크립터

File Descriptor (파일 디스크립터) [출처: http://dev.plusblog.co.kr/22] 1. 파일 디스크립터 - 시스템으로부터 할당 받은 파일을 대표하는 0이 아닌 정수 값- 프로세스에서 열린 파일의 목록을 관리하는 테이

dev-ahn.tistory.com

 

 

...힝

728x90

관련글 더보기

댓글 영역