[Linux/리눅스] 파일 허가권, 파일 소유권




1. 파일 허가권

  • 파일 허가권은 9개의 문자가 있는데 3개씩 끊어서 User(파일 소유자), Group(파일 소유 그룹), Other(소유자도 아니고, 그룹에도 속하지 않는 나머지 사람들) 로 나눕니다. User, Group, Other에서 권한 순서는 'rwx'입니다.
  • 'r'(read)은 읽기 권한, 'w'(write)는 쓰기와 수정 권한, 'x'(execute)는 실행, 폴더 진입 권한, '-'는 권한 없음을 의미합니다. 또한 'rwx'를 설정할 때는 숫자로 입력을 합니다.
  • 'r'은 4, 'w'은 2, 'x'는 1, '-'는 0으로 표기를 합니다.
위의 이미지를 보도록 할게요. User 부분를 보면 'rw-'라고 적혀 있죠? User에게는 읽기와 쓰기 권한을 주겠다는 의미입니다. -는 x의 권한이 있는 부분인데, -는 권한 없음이라고 했죠. 그러니까 x 권한은 안 주겠다는 걸 의미합니다. 이제 이걸 숫자로 표기해서 다 더하면 됩니다. r은 4, w는 2, -는 0이니까 4+2+0= 6

다음으로 Group 부분을 보면 'r--'라고 적혀 있네요. Group에게는 읽기 권한만 주고, 쓰기와 실행 권한은 안 주겠다는 의미입니다. 이걸 숫자로 표현하면 r은 4, -는 0, -는 0이니까 4+0+0 = 4

마지막으로 Other 부분을 보면 'r--'라고 적혀 있네요. Other에게는 읽기 권한만 주고, 쓰기와 실행 권한은 주겠다는 의미죠. 이걸 숫자로 표현하면 r은 4, -는 0, -는 0이니까 4+0+0 = 4

예시를 하나 더 들자면 'rwxrw---x' 이건 권한이 어떻게 될까요?


일단 3개씩 끊어서 User,Group,Other로 나눕니다. 하나씩 보도록 하죠.
  • User 부분을 보면 'rwx'니까 읽기,쓰기,실행 권한이 전부 다 있네요. 그러면 4+2+1 = 7 이 되겠죠.
  • Group 부분을 보면 'rw-'니까 읽기, 쓰기 권한만 있네요. 그러면 4+2+0 = 6 이 되겠죠.
  • Other 부분을 보면 '--x'니까 실행 권한만 있네요. 그러면 0+0+1 = 1 이 되겠죠.


2. 파일 허가권 변경 명령어
chmod [권한 설정 숫자] [파일명]
파일 허가권을 새롭게 재설정을 합니다.
예) chmod 761 aaa (aaa 파일의 허가권을 761로 변경. 761에 대한 설명은 바로 위에 있죠.)
예) chmod 777 bbb (bbb 파일의 허가권을 777로 변경. 7이면 읽기,쓰기,실행 권한이 전부 있죠.)


3. 파일 허가권 변경, 상대 모드(Symbolic method)

파일 허가권을 수정합니다. (권한을 추가하거나 삭제하는 형식)
예) chmod o-r ccc (ccc 파일에서 그 외 사용자의 읽기 권한을 제거.)
예) chmod go+rwx ddd (ddd 파일에서 group과 other에게 읽기,쓰기,실행 권한을 추가.)
예) chmod u+r,g+w,o+x eee (eee 파일에서 user에게는 읽기 권한 추가, group에게는 쓰기 권한을 추가, o에게는 실행 권한을 추가.)


4. user, group, other 중에서 우선 순위?

일단 우선 순위는 파일 소유자 > 파일 소유 그룹 > 그 외 사용자이며, 우선 순위에 따라서 자기에게 맞는 권한만 볼 뿐, 아래로 내려가거나 하지는 않습니다.

위의 이미지를 예시로 보면, aaa 라는 파일은 파일 소유자가 fedora이고, 파일 소유 그룹도 fedora네요.
  • 이럴 때 fedora 사용자는 user, group에도 속하죠? 여기서 우선순위는 user가 더 높으니 fedora 사용자는 user 권한만 봅니다. group 권한은 따르지 않아요.
  • kim 이라는 사용자가 있는데 그룹이 fedora 이라면? 일단 파일 소유자는 아니죠. 그 다음에 그룹을 보니 같은 fedora 그룹이네요. 그러면 kim 이라는 사용자는 group 권한만 봅니다.
  • jo 라는 사용자가 있는데 그룹이 student 라면? 이 사용자는 파일 소유자도 아니고, fedora 그룹에도 속하지 않으니 other가 되겠죠? 그러면 other 권한만 봅니다.


5. 파일의 읽기, 쓰기, 실행 권한은?
  • 읽기 권한은 말 그대로 파일의 내용을 읽는 것을 말합니다. 만약 읽기 권한이 없다면, 파일의 내용을 출력도 못 하겠죠? 당연히 파일 내용을 읽지를 못 하니 파일을 실행도 못 합니다.
  • 쓰기 권한은 파일 내용을 수정하는 것도 포함합니다. 쓰기 권한이 없다면 파일의 내용을 수정할 수 없겠죠.
  • 실행 권한은 파일의 내용에서 실행할 수 있는 것을 실행합니다. 대표적으로 명령어 같은 건 실행이 가능하죠. 그리고 실행 권한이 없는 경우에 bash 명령어를 이용하여 파일을 실행시킬 수 있습니다. (당연히 읽기 권한은 반드시 있어야 합니다.)


test 파일에 '이 문자는 실행을 못 합니다' 라는 글자와 'date' 라는 글자를 넣었습니다. 그러고 나서 파일을 실행하면 당연히 '이 문자는 실행을 못 합니다' 이건 문자니까 실행을 못 하니까, 명령어를 못 찾았다는 문구가 나옵니다. 그 다음에 'date'는 현재 시스템 시간을 확인하는 명령어죠. 그래서 date는 실행이 가능합니다.


aaa 파일은 읽기 권한 밖에 없는데 bash 명령어를 이용하여 aaa 파일을 실행시킬 수가 있네요.


6. 디렉터리의 읽기, 쓰기, 실행 권한은?
  • 실행 권한은 디렉터리에 들어갈 수 있게 해줍니다. 예를 들어서 abc 라는 디렉터리가 있는데, 만약 실행 권한이 없다면 abc 디렉터리에 들어갈 수가 없습니다.
  • 쓰기 권한은 해당 디렉터리에서 파일을 생성할 수 있게 해줍니다. abc 라는 디렉터리에 쓰기 권한이 없다면, abc 디렉터리 안에서 파일을 만들 수가 없습니다.
  • 읽기 권한은 디렉터리에서 파일 목록을 볼 수 있게 해주는 걸 의미합니다. abc 라는 디렉터리에 읽기 권한이 없다면 abc 디렉터리 안에 있는 파일 목록이 하나도 안 보입니다. ls 명령어를 쓰면 목록이 하나도 안 보인다는 거죠. find 명령어로 검색을 해도 못 찾습니다.


test 디렉터리에 읽기 권한이 있을 때는 파일 목록을 볼 수 있었는데, 읽기 권한을 없애니 '허가 거부'라는 말이 나오면서 파일 목록을 볼 수가 없네요.

7. 파일 소유권(Ownership)
파일을 소유한 사용자와 그룹을 의미합니다.


8. 파일 소유권 변경 명령어
chown [변경할 소유자].[변경할 그룹] [파일명]
예) chown fedora.fedora ./aaa (aaa 파일의 소유자를 fedora, 그룹을 fedora로 변경)
예) chown kim. ./bbb (bbb 파일의 소유자를 kim으로 변경. 그룹 이름이 비워져 있다면 파일의 소유자가 속한 그룹으로 변경. kim이 속한 그룹으로 변경됨.)
예) chown .min ./ccc (ccc 파일의 그룹만 min으로 변경.)
예) chown lee:lee ./ddd (ddd 파일의 소유자를 lee, 그룹을 lee로 변경. 단, 콜론으로도 가능은 하지만 인식 못 하는 리눅스도 존재함.)


9. 최고 관리자인 root의 기본 권한은?
관리자는 rw를 기본적으로 가지고 있습니다.

Comments