본문 바로가기

UNIX

UNIX umask

UNIX umask v1.0

 

 

1.    umask

umask unix 에서 파일/디렉토리 생성시 기본적으로 부여하는 권한에 대한 설정이다. 이미 알고 있겠지만 unix 의 파일 권한은 rwxrwxrwx 형태로 표현되며 이에 대한 on/off 1/0 으로 표현된다. rwx 3회 반복되는 형태인데 이는 {owner}{group}{other} 를 의미한다. rwx 의 의미는 read write execute 를 의미한다. 이는 곧 읽기 / 쓰기 / 실행 을 말함이다.

 

2.    umask chmod

umask chmod 는 동일한 목적을 가지면서 그 표현양식은 다르다. rwx 라는 양식을 표현함에 있어 chmod 는 권한에 대해 더하고 umask 7에서 값을 뺀다.

일례로 rwxr-xr-x 권한을 가진 파일이 있다면 chmod 는 이를 755 로 표현하고 umask 022 로 표현한다.

 

umask 는 로그인 파일에 의해 적용된다. (.bash_profile , .profile 과 같은) chmod 는 사용자가 권한 표현을 해야 한다. (ex : chmod 755 target_file )

 

umask 의 변경을 위해서는 로그인 파일을 변경해야 하며 파일 내에 umask ??? 표현을 수정해야 한다. ??? 에 기본 권한을 수로 표현한다. 해당 설정은 다음 로그인에 적용된다. (로그인 파일 refresh 후에 적용된다.)

 

3.    umask 주의사항

umask 값을 022 로 수정하면 755 로 파일/디렉토리 가 생성되야 할 것 같지만 그렇지 않다. 디렉토리에 대해서는 해당 설정이 그대로 적용되지만 파일에 대해서는 수동으로 권한을 지정해야 한다. (chmod 를 사용)

 

 umask 122 로 지정하면 chmod 를 생각했을 때 655 로 지정됨을 의미한다. owner 에 적용되는 권한은 read write 이다. 폴더에 실행권한이 있다는 것은 폴더의 이동이 가능하다는 것을 의미한다. 위와같이 설정하면 폴더에 접근할 수 없게 된다.

 

ocp@orcl : /home/oracle> mkdir 1

ocp@orcl : /home/oracle> cd 1

bash: cd: 1: Permission denied

ocp@orcl : /home/oracle> ls -lad 1

drw-r-xr-x  2 oracle oinstall 4096 Feb 28 10:46 1

ocp@orcl : /home/oracle> chmod 755 1

ocp@orcl : /home/oracle> cd 1

 

 umask 1?? 와 같이 줄 일은 없다는 것을 알 수 있다. ;;

 

 umask 값을 022 로 원복해서 directory / file 에 대해 권한할당 정보를 확인해 보겠다.

 

ocp@orcl : /home/oracle> mkdir 1

ocp@orcl : /home/oracle> ls -lad 1

drwxr-xr-x  2 oracle oinstall 4096 Feb 28 10:52 1

ocp@orcl : /home/oracle> cd 1

ocp@orcl : /home/oracle/1> touch 1

ocp@orcl : /home/oracle/1> ls -la

total 20

drwxr-xr-x   2 oracle oinstall 4096 Feb 28 10:52 .

drwxr-xr-x  18 oracle dba      4096 Feb 28 10:52 ..

-rw-r--r--   1 oracle oinstall    0 Feb 28 10:52 1

 

위 결과를 보면 디렉토리에 대해서는 umask 설정이 그대로 적용되었지만 파일에 대해서는 execute 권한이 빠져있는 걸 확인할 수 있다.

 

4.    umask oracle

umask 가 파일/디렉토리에 대해 접근 권한을 할당한다고 하였는데 메모리에 대해서도 할당된다. 이는 oracle 을 가지고 확인할 수 있다.

 

<umask 022>

 

ocp@orcl : /home/oracle/1> ipcs -m

 

------ Shared Memory Segments --------

key        shmid      owner      perms      bytes      nattch     status

0x00000000 65536      oracle    600        393216     2          dest

0x00000000 98305      oracle    600        393216     2          dest

0x00000000 131074     oracle    777        393216     2          dest

0x00000000 163843     oracle    600        393216     2          dest

0x00000000 196612     oracle    600        393216     2          dest

0x00000000 229381     oracle    600        393216     2          dest

0x00000000 262150     oracle    600        393216     2          dest

0x00000000 294919     oracle    600        393216     2          dest

0x00000000 655368     oracle    600        393216     2          dest

0x00000000 360457     oracle    600        393216     2          dest

0x00000000 393226     oracle    600        393216     2          dest

0xbe3bb918 753675     oracle    640        169869312  14

 

other 는 무시되는 걸 알 수 있다. ( 5 (101) read, execute 가 할당되어야 하지만 0 이다.)

owner execute 에 대해서도 무시되는 걸 알 수 있다. (7이 아닌 6)

 

<umask 072>

umask 값을 수정후 로그인 파일 재적용 후 oracle 을 기동해 확인했다.

 

ocp@orcl : /home/oracle> ipcs -m

 

------ Shared Memory Segments --------

key        shmid      owner      perms      bytes      nattch     status

0x00000000 65536      oracle    600        393216     2          dest

0x00000000 98305      oracle    600        393216     2          dest

0x00000000 131074     oracle    777        393216     2          dest

0x00000000 163843     oracle    600        393216     2          dest

0x00000000 196612     oracle    600        393216     2          dest

0x00000000 229381     oracle    600        393216     2          dest

0x00000000 262150     oracle    600        393216     2          dest

0x00000000 294919     oracle    600        393216     2          dest

0x00000000 655368     oracle    600        393216     2          dest

0x00000000 360457     oracle    600        393216     2          dest

0x00000000 393226     oracle    600        393216     2          dest

0xbe3bb918 786443     oracle    600        169869312  14