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) 표시
"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
https://recipes4dev.tistory.com/175
https://server-talk.tistory.com/422
https://starrykss.tistory.com/1666
이 블로그에 세세하게 나와있음 정독하기.
2. 파일의 속성 stat 구조체 -> st_mode (나중에 상세하게 배울 예정)
파일의 정보를 담는 stat구조체
st_mode: 파일의 모드를 다룸
파일의 종류를 알 수 있고, 파일의 퍼미션도 알 수 있다
.
참고 자료
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=skssim&logNo=119485633
3. 파일디스크립터 테이블 (오픈 파일테이블). 지역(local) 구조 -> 프로세스 마다 한개의 파일디스크립터 테이블, fd 0, 1, 2
파일 디스크립터
- 시스템으로부터 할당 받은 파일을 대표하는 0이 아닌 정수 값
- 프로세스에서 열린 파일의 목록을 관리하는 테이블의 인덱스
0 - 표준 입력(Standard Input)
1 - 표준 출력(Standard Output)
2 - 표준 에러(Standard Error)
참고자료
https://dev-ahn.tistory.com/96
...힝
[SOPT/34기] SOPT 34기 YB 서버 파트 면접 팁 / 면접 합격 후기 / 면접 질문 / 면접 예상 질문 (4) | 2024.03.23 |
---|---|
[SOPT/34기] SOPT 34기 YB 서버 파트 서류 팁 / 서류 합격 후기 (1) | 2024.03.23 |
[SSU DevCamp] 선배님의 조언 - 개발자/숭실대/코딩/쿠팡 (6) | 2022.09.20 |
ssu_dev_camp [제 2탄] 깃허브 github main ->master (2) | 2022.08.23 |
ssu_dev_camp [제 1탄] 깃허브 설정 AOS project git master branch (2) | 2022.08.23 |
댓글 영역