이번시간에는 권한에 대해서 공부해보자!
앞서서 말했던 것처럼 리눅스 처럼 다중 사용자 시스템이라면 권한이라는 시스템이 매우 중요하다.
Permission
어떠한 사용자가 파일, 디렉토리에 대해서 어떠한 일을 할 수 있게 하거나, 할 수 없게 하는 것을 권한을 지정한다고 한다.
읽기, 쓰기, 실행에 대해서 권한을 지정하는 것을 말한다.
파일과 디렉토리에 대해서 사용자가 읽고 쓰고 실행할 수 있도록, 혹은 없도록 하는 것에 대해서 알아보자!
위의 사진에서 1 뒤에 있는 이름이 해당 파일의 주인을 나타내는 것이다.
위의 사진을 밑에 처럼 구분해봤다.
1. - // 해당 파일의 타입을 알려주는 부분이다. 해당 파일이 디렉토리면 d라고 표시가 된다.
2. rw- // 해당 파일의 주인의 권한에 대한 부분이다. r은 read, w는 write, e는 excute의 약자로 읽기, 쓰기, 실행하기를 의미한다. 그래서 현재 상태는 본인은 파일에 대해서 읽기와 쓰기만 가능한 것이다.
3. rw- // 해당 파일의 그룹의 권한에 대한 부분이다.
4. r-- // 해당 파일의 위에 두 부류를 제외한 기타 사용자들에 대한 권한 부분이다.
5. 1 // 하드 링크의 개수이다.
6. egoing // 해당 파일의 소유자 이름이다.
7. egoing // 해당 파일의 소유자의 그룹 이름이다.
8. 0 // 파일의 크기이다.
9. Dec 4 23:24 // 파일이 마지막으로 수정된 날짜이다.
10. perm.txt // 파일 이름이다.
다음으로는 파일의 권한을 어떻게하면 변경할 수 있는지 권한 명령어에 대해서 공부해보자.
chmod [옵션] [퍼미션] [파일 및 디렉토리]
여기에서 퍼미션은 위에서 다룬 것처럼 총 3가지가 있다.
소유자, 그룹, 기타 사용자가 있다. 소유자는 user, 그룹은 group, 기타 사용자는 other이 있다. 모두 앞글자를 따서 지정할 수 있다.
예를 들어서 기타 사용자들도 해당 파일에 대해서 쓰기 권한을 주고 싶다면
chmod o+w 파일이름 이라고 하면 된다. 여기에서 권한을 주고 싶다면 +, 뺏고 싶다면 -를 하면 된다.
실행은 정확하게 무엇인가??
어떤 파일에 대해서 이 파일을 실행가능한 파일로 할 것인가? 실행을 막을 것인가?
명령어처럼 파일을 실행시키고 싶다면 에디터에 들어가서 첫번째 줄에 #!/bin/bash와 같이 해당 코드를 위와같은 쉘을 이용해서 해석해 커널에 보내주라는 코드를 작성해야 한다.
그리고 실행파일이 되면 해당 파일은 쉘에 따라서 색상이 변하는데 bash와 같은 경우는 초록색이다. 그래서 이 파일을 실행시키고 싶다면 ./해당 파일을 치면 파일의 내용이 실행된다.
여기에서 앞서서 확인했던 권한에 따라서 기타 사용자는 실행할 수 도 있고 못할 수도 있다.
디렉토리에 대한 권한은 무엇인가??
파일은 읽기, 쓰기, 실행에 상당히 명확하다. 하지만 디렉토리는 그렇지 않다.
디렉토리 r은 디렉토리안에 있는 파일의 리스트를 읽을 수 있느냐 없느냐를 확인할 수 있다.
디렉토리 w는 디렉토리안에서 파일을 새로 만들 수 있는지 없는지를 확인할 수 있다.
디렉토리 e는 cd를 통해서 디렉토리로 들어갈 수 있느냐 없느냐를 확인할 수 있다.
* chmod -R 의 옵션은 디렉토리안에 디렉토리, 그안에 디렉토리 등 수많은 디렉토리가 안에 있을 때, 모든 디렉토리의 권한을 한꺼번에 바꿀때 쓰는 옵션이다.
chmod라는 명령어를 총 정리하는 시간을 가져보자!
중급자로 갈 수록 중요해지는 명령어이다.
chmod [option] mode[, mode] file1 [file2...]
ex) chmod o+w 파일 이름
위와 같은 방식으로는 여러가지 권한을 한번에 바꿀 수 없다. 예를 들어서 기타 사용자의 읽기, 쓰기, 실행권한을 주고 싶다면 하나의 명령어로 처리할 수 없다. 총 3번에 걸쳐서 처리해야한다.
하지만 8진수 모드를 사용하면 한번에 처리가 가능하다.
chmod 111 파일 이름 // 라고 하면 소유자, 그룹, 기타 사용자 모두 실행만 가능하게 바꾸는 명령어가 된다.
chmod 222 파일 이름 // 모든 사용자가 쓰기만 가능해진다.
그리고 또 다른 방식이 존재한다.
chmod a=r 파일 이름 // 모든 사용자에 대해서 읽기만 들어간다.
chmod a= 파일 이름 // 모든 사용자에 대해서 모든 권한이 사라진다.
위와 같이 여러가지의 권한을 지정하는 방식이 존재한다. 이것을 미리 외운다기 보다는 그냥 필요할 때 찾아서 쓰는 것이 좋다. 그냥 이런 것이 있다는 것만 알아두고 넘어가자!
'리눅스' 카테고리의 다른 글
리눅스: 인터넷, 네트워크, 서버 (0) | 2021.02.24 |
---|---|
리눅스: 그룹 (0) | 2021.02.24 |
리눅스: 사용자 (0) | 2021.02.24 |
리눅스: 프로세스와 실행 (0) | 2021.02.23 |
리눅스: 디렉토리 (0) | 2021.02.22 |