리눅스프로그래밍

우분투 리눅스 - 기본 접근 권한 설정

헬로월드! 2020. 5. 16. 11:59

1. 기본 접근 권한 : 리눅스에서는 파일이나 디렉터리를 생성할 때 접근 권한이 자동적으로 설정된다.

일반 파일의 경우 소유자- 읽기,쓰기 권한이 설정되고 그룹, 기타 사용자는 읽기 권한만 설정된다.

디렉터리의 경우 소유자는 읽기,쓰기,실행 권한이 설정되고 그룹, 기타 사용자는 읽기, 실행 권한만 설정된다. 

 

2. 기본 접근 권한 확인하고 변경하기

umask

기본 접근 권한을 출력하거나 변경한다. 

아무 인자 없이 umask 명령만 사용하면 기본 마스크 값을 보여준다.

옵션으로 -S 를 붙이면 마스크 값을 문자로 출력한다.

 

마스크 값의 의미는? 파일이나 디렉터리 생성 시 부여하지 않을 권한을 지정해 놓는 것이다. (권한을 가려버리는😷 )

마스크 값이 022 일 경우, ----w--w- 이고, 그룹과 기타 사용자에게 쓰기 권한을 부여하지 않겠다는 뜻이다! 

 

마스크 값을 변경하려면 umask 077 이런식으로 써주면 된다. 마스크 값을 바꾼다는 것은 파일이나 디렉터리를 생성할 때 적용되는 기본 접근 권한도 바뀐다는 것!!!!! 

 

3. 마스크 값 적용 과정 

마스크 값은 파일이 생성될 때 마다 적용된다. 마스크 값을 비트로 표시할 때 그 값이 1인 경우 대응하는 권한은 제외한다.

 

요청권한1100
마스크1010
부여된 권한0100

 

 

마스크의 값이 1 이라면 , 마스크 활성화, 즉 권한을 가린다는 것을 의미한다. 마스크의 값이 0이라면 요청 권한 그대로다.

일반 파일이 가질 수 있는 최대 접근 권한은 666 (rw-rw-rw) 으로, 현재 마스크 값이 002 일 때 666 과 002를 마스킹하면 결과로 664 가 나온다. 따라서 마스크 값이 002일 때 일반 파일을 생성하면 기본 접근 권한은 664가 된다.

 

[ 일반 파일 ]

rw-rw-rw-   => 2진수로 변환 => 110 110 110 

마스크 값 000 000 010 (002)  

666 - 002

 

               110 110 110

마스킹    000 000 010 

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

               110 110 100 => 664 => rw-rw-r--

 

디렉터리의 경우 최대 접근 권한이 777 이므로 여기에 002를 마스킹하면 기본 접근 권한이 775가 된다.

 

[디렉터리]

rwxrwxrwx => 2진수로 변환 => 111 111 111

마스크 값 000 000 010 (002)

777 - 002 

 

             111 111 111 

마스킹  000 000 010

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

             111 111 101  => 775

 

여러가지 마스크 값

리눅스의 기본 마스크는 002 인데 이를 필요에 따라 적절히 변경하여 자신의 파일과 디렉터리를 보호할 수 있다.

umask 로 마스크 값을 바꿀 때 파일과 디렉터리에 모두 적용해봐야한다. 마스크 값이 파일에는 적합하지만, 디렉터리에는 적합하지 않을 수 있기 때문이다. 예를들어 마스크값이 026 인 경우 , 파일은 640 으로 적합하지만 디렉터리는 751이 되어 기타 사용자의 접근이 이상해진다.