[유닉스] 기본 접근 권한 설정


umask 명령을 이용한 기본 접근 권한 설정


기본 접근 권한

  • 파일이나 디렉토리를 생성할 때 부여되는 접근 권한
  • 일반 파일 생성시 소유자는 읽기와 쓰기 권한, 그룹과 기타 사용자는 읽기 권한 부여
  • 디렉토리 생성시 소유자는 읽기, 쓰기, 실행 권한, 그룹과 기타 사용자는 읽기와 실행 권한 부여
  • 유닉스 시스템에 설정된 기본값에 따라 부여됨.
  • 설정된 값을 바꾸면 파일이 생성될 때 부여되는 접근 권한도 바꿀 수 있음


파일 생성 후 기본 접근 권한 확인

  • 파일 소유자와 그룹은 읽기, 쓰기 권한, 기타 사용자는 읽기 권한이 설정되어 있음
$ touch test1
$ ls –l
total 4
-rw-rw-r-- 1 ksshin ksshin 0 6월 14 17:19 test1
-rw-r--r-- 1 ksshin ksshin 221 6월 5 22:12 text
$


기본 접근 권한 설정

  • umask 명령으로 실행
  • umask 명령

    • 기본 접근 권한을 출력하거나 변경
    • 형식 : umask [마스크 값]
    • 사용 예 : umask 022, umask
    • 인자로 주어지는 마스크 값은 파일이나 디렉토리 생성시 부여하지 않을 권한을 지정
    • 인자 없이 umask 명령만 사용하면 설정된 기본 마스크 값을 보여줌
$ umask 077
$ touch test2
$ ls –l
total 4
-rw-rw-r-- 1 ksshin ksshin 0 6월 14 17:19 test1
-rw------- 1 ksshin ksshin 0 6월 14 17:31 test2
-rw-r--r-- 1 ksshin ksshin 221 6월 5 22:12 text
$ umask
077
$
  • 마스크 값을 077로 지정했을 때 소유자는 모든 권한이 부여되어야 하는데, test2 파일의 소유자에게 실행 권한이 없는 이유 : 일반 파일이 가질 수 있는 최대 접근 권한이 666(rw-rw-rw-)이기 때문


마스크 값


마스크 값

  • 파일이나 디렉토리 생성시 부여하지 않을 권한을 지정하는 값
  • 파일이 생성될 때마다 적용됨
  • 마스크 값이 ‘1’인 경우에 대응하는 권한은 제외됨


마스크 값 이용하여 접근 권한 계산

  • 일반 파일이 가질 수 있는 최대 접근 권한은 666(rw-rw-rw-)
  • 현재 마스크 값이 002라면 666과 002를 마스킹한 결과는 664
  • 마스크 값이 002일 때 일반 파일 생성하면 기본 접근 권한이 664가 됨
  • 디렉토리가 가질 수 있는 최대 접근 권한 777
  • 002를 마스킹하면 기본 접근 권한 775가 됨


간단한 마스크 값 계산

  • 최대 접근 권한에서 마스크 값을 빼는 것
  • 일반 파일 : 666 – 002 = 664


마스크 값의 의미

  • 유닉스의 기본 마스크 값은 022
  • 사용자의 필요에 따라 적절히 변경해 자신의 파일과 디렉토리 보호
  • 많이 사용되는 마스크 값은 022와 077


기본 접근 권한 변경의 예

  • 기본 접근 권한 확인
$ umask
0022
$
  • 파일과 디렉토리를 생성해 권한 확인
$ mkdir tmp
$ touch test
$ ls -l
total 8
-rw-r--r-- 1 ksshin ksshin 0 6월 14 19:35 test
-rw-r--r-- 1 ksshin ksshin 221 6월 5 22:12 text
drwxr-xr-x 2 ksshin ksshin 4096 6월 14 19:35 tmp
$
  • 기본 접근 권한 변경 : 기타 사용자의 권한을 없애도록 변경
$ umask 027
$ umask
0027
$
  • umask로 마스크 값을 변경할 때 주의할 점

    • 파일과 디렉토리에 모두 적용해 보아야 함
    • 파일에는 적당하지만 디렉토리에 적당하지 않을 경우 발생
    • 예, 마스크 값이 026일 경우 파일은 640으로 적합, 디렉토리는 751로 기타 사용자의 접근 권한이 이상해짐
  • 변경된 접근 권한 적용 확인

$ mkdir tmp2
$ touch test2
$ ls -l
total 12
-rw-r--r-- 1 ksshin ksshin 0 6월 14 19:35 test
-rw-r----- 1 ksshin ksshin 0 6월 14 19:44 test2
-rw-r--r-- 1 ksshin ksshin 221 6월 5 22:12 text
drwxr-xr-x 2 ksshin ksshin 4096 6월 14 19:35 tmp
drwxr-x--- 2 ksshin ksshin 4096 6월 14 19:44 tmp2
$


소유자 변경

  • chown 명령

    • 파일이나 디렉토리의 소유자 변경
    • 오직 슈퍼유저만이 파일이나 디렉토리의 사용자 변경할 수 있음
    • 형식 : chown [option] owner filenames
$ chown user1 test
$


그룹 변경

  • chgrp 명령

    • 파일이나 디렉토리가 속한 그룹 변경
    • 지정하는 그룹은 반드시 소유자가 들어 있는 그룹 중 하나라야 함. 즉, 사용자의 주 그룹이나 부 그룹 중 하나라야함.
    • user1이라는 사용자가 test 파일을 소유하고 있고 속한 그룹이 user이며, staff 그룹에도 속한다고 할 때 다음과 같이 변경 가능
$ chgrp staff test
$