본문 바로가기
정보보안/이론

[KITRI] Day5. 리눅스 기본 명령어-3

by 민-Zero 2020. 4. 25.

Linux 권한(퍼미션)

 

파일과 디렉토리의 소유권과 허가권

ls -lh 와 같이 리스트 형태로 파일과 디렉토리의 명령을 볼수 있도록 수행하면 이와 같은 모습으로 파일에 대한 정보를 볼 수 있다. 각 항목에 대한 내용을 정리하면 다음과 같다.

-rw-r--r--  1 root root     0  4월 26 21:11 sample.txt 
-  : 파일 속성(유형)이라고 한다. 
rw-r--r-- : 파일 허가권(퍼미션) 
1 : 하드링크 수 
root : 파일 소유주 
root : 파일 소유그룹 
0 : 파일의 용량 
4월 26 21:11 파일이 마지막으로 수정된 날짜 
sample.txt : 해당파일의 이름 

 


파일 속성(유형)의 종류

- : 일반 파일  
d : 디렉터리(폴더) 파일 
c : 캐릭터 디바이스(마우스, 키보드, 프린터등 입출력장치)  
b : 블록 디바이스(HDD, cdrom등 저장장치)  
l : 심볼릭 링크, 바로가기 아이콘과 동일한 역할


파일 허가권(permission)

 rw-      r--       r--     root    root 
User   Group  Others  User   Group 
permission은 소유주, 소유그룹, 그외 사용자의 접근권한을 표기하고 r(Read), w(Write), x(eXecute)를 나타낸다. 

rw-   r--    r-- 
110  100  100  2진수 -> 644(8진수) 라는 퍼미션이 된다. 

 

-r(Read, 읽기)  
file인 경우 파일의 내용을 볼 수 있다(cat, head, tail, more, less, vi 등) 
directory인 경우 디렉토리안의 파일목록을 볼 수 있다.(ls) 

-w(Write, 쓰기)  
file인 경우 파일의 내용을 수정할 수 있다.(vi, cat) 
directory인 경우 디렉토리안에 파일/디렉토리를 생성, 제거, 수정 가능하다.(내 소유의 파일이 아니거나 파일에 아무 권한이 없어도 가능) 

-x(eXcute, 실행) 
file인 경우 파일을 실행할 수 있다. (실행파일) 
directory인 경우 디렉토리안에 들어갈 수 있다.  
디렉토리에서 x가없는 r은 없다. 이유는 권한이 애매해지기 때문인데 만약 r-- 인 경우 디렉토리의 목록은 볼 수 있지만 들어갈수는 없다. 따라서 ls로 확인하면 파일명만 보이고 아무것도 나오지 않는다. 따라서 r은 주로 x와 함께쓰인다. 하지만 x는 혼자 쓰여도 문제없다. 주로 해당 디렉토리의 내용은 감춰져야 하지만 그 안의 디렉토리에 들어가야할때 사용한다. 

 

permission 변경 명령어

chmod명령어를 통해 원하는 권한으로 변경시킬수 있다. 직접 권한을 모두 입력하여 변경할 수 있지만 만약 전체 권한중 others에 x만 빼야한다면 o-x처럼 사용하는것이 더 편할 수 있다.  각 상황에 맞게 편한 방법을 선택하여 수행하면 된다.


chmod 허가권 파일명 : 해당 파일의 permission을 지정한대로 바꾼다. 
ex) chmod 777 sample.txt 를 수행하면 rwx rwx rwx로 변경된다. 
chmod ug=r,o= sample.txt  
chmod a=rwx,o-x sample.txt 처럼 직관적으로 사용할 수 있다. 


파일및 디렉토리를 하나하나 생성 할때마다 퍼미션을 설정해야 한다면 굉장히 번거롭다. 따라서 생성시부터 불필요한 권한은 제거된 상태로 생성될수 있도록 디폴트값을 설정할수 있다. 이때 사용되는 명령어가 umask이다.

UMASK : 파일/디렉토리 생성시 제거하고 싶은 퍼미션을 미리 설정하는 명령어  

umask명령어를 통해 파일및 디렉토리 생성시 적용되는 퍼미션을 설정할 수 있다. 위의 예시에서는 umask가 0022로 설정되어 있기때문에 디렉토리 기본 설정값 777 - 022로 적용되어 = rwxr-xr-x로 생성되며 파일의 경우 666-022 = 644 = rw-r--r-- 이 생성된다.

[umask 퍼미션] 의 명령어를 통해 설정된 umask를 변경할 수 있다.


umask 권한 : 설정한 권한이 umask가 되어 해당 권한이 빠진채로 생성된다.
umask -S : 생성시 권한을 미리 보여준다.

 

소유권 변경 명령어

chown과 chgrp 명령어로 파일 및 디렉토리의 소유권과 소유그룹을 변경할 수 있다.

이때 디렉토리의 경우 디렉토리의 소유권을 변경해도 하위의 파일이나 디렉토리의 소유권까지 같이 변경되지 않는다.

이때 하위에 포함된 파일이나 디렉토리의 소유권까지 동일하게 변경하고자 한다면 -R옵션을 사용하면 해결된다.

단일 파일의 소유권, 소유그룹을 둘다 바꿔야 한다면 chown, chgrp 를 따로 쓰는것보다 소유권:소유그룹 의 방식을 통해 한번에 변경하는것이 더 수월하다.


chown 계정명 파일명 : 해당 계정으로 파일의 소유권을 변경(해당 명령은 root만 가능)
chown -R 계정명 디렉토리명 : recursive, 해당 디렉토리 하위의 파일/디렉토리까지 전부 해당 계정으로 소유권 변경
chgrp 계졍명 파일명 : 해당 계정으로 파일의 소유그룹을 변경(해당 명령은 root만 가능)
chgrp -R 계정명 디렉토리명 : recursive, 해당 디렉토리 하위의 파일/디렉토리까지 전부 해당 계정으로 그룹 소유권 변경
chown 소유권:그룹소유권 변경대상 : 한번에 소유권과 그룹을 바꿀수 있다. 
chown 소유권.그룹소유권 변경대상 : 한번에 소유권과 그룹을 바꿀수 있다.

 

특수권한 setUID, setGID, Stikybit

특수권한을 설정시 현재 사용중인 계정의 권한보다 높은 권한을 가져올 수 있기 때문에 설정에 주의를 기울여야 하는 권한이다.

계정의 비밀번호 정보를 담고있는 shadow파일은 일반 계정이 읽는것 조차 거부되어있다. 따라서 cat명령어를 복사해 setuid를 설정해 주었다. 그리고 일반사용자 계정인 user1으로 setuid가 설정된 cat을 사용해 shadow파일에 접근할 경우 실행시 cat의 소유자인 root의 권한으로 실행되어 shadow파일에 접근할수 있게 된다.

 

setUID : u+s, 파일 실행시 실행한 유저가 아닌 실행된 파일의 소유자의 권한으로 실행된다.
퍼미션에서 S로 표시되면 x가 설정 안되어있는것 이고 s로 표시되면 x도 설정 되어있는것이다.
setGID : g+s, 해당 권한이 설정되어 있으면 해당 파일 그룹의 권한으로 실행된다.
일반 파일의 경우 setUID와 같은 방식으로 동작한다. 디렉토리의 경우 해당 디렉토리에 파일이나 디렉토리가 만들어지는 경우 사용자의 그룹이 아닌 해당 디렉토리의 소유그룹으로 자동 수정된다.
stiky bit : 디렉토리에만 사용 가능, o+t, 아무나 w할수 있더라도 소유자만 파일을 지우도록 할 수 있게 하는 권한.

 

링크파일


하드 링크, 심볼릭 링크 는 바로가기 같은 역할을 한다고 이해하면된다. 다만 구조적으로 차이가 있다.
파일이 생성되면 파일의 이름은 namespace에/  권한, 소유, 날짜, 용량, 주소등의 정보는 i-node에 / 파일의 내용은 block에 저장되어 파일을 확인하려하면 name부터 block까지 순차적으로 찾아가게 된다. 
이때 하드링크는 대상이 되는 원본파일 자체의 i-node를 가리켜 원본데이터를 찾아가며
심볼릭은 심볼릭 링크파일은 가리킬 대상의 이름을 가리켜 해당 원본을 찾아가서 원본데이터를 확인 하는 역할이다.

하드링크를 생성할 경우 동일한 inode를 가리키는 네임파일만 생성되기 때문에 사용중인 용량이 증가되지 않고 똑같은 파일을 가리키는것을 확인할 수 있다.


ln 대상 하드링크 : 대상을 가리킬 하드링크를 생성한다. 용량의 증가는 없다, inode자체를 가리키니까
ln -s 대상 심볼릭 : 대상을 가리킬 심볼릭을 생성한다. 심볼릭은 단순히 대상을 찾아가는 파일이기 때문에 대상의 위치나 이름이 변경되면 역할을 수행할 수 없게된다.

댓글