-rw—–– ??

항상 터미널을 주로 사용하다보니 현재 경로의 파일들을 확인하기 위해 ls 명령어를 사용하지만 간혹가다가 모든 파일을 확인해봐야 할 때 ls -la 명령어를 사용한다. 그러다 예전에 문득 궁금증이 생겼다.
“저 줄 앞에있는것들은 무엇을 뜻하는걸까?”
Permission
앞에 나오는 10-11자리 숫자는 모두 각각의 의미를 가지고 있으며 각각 나눠서 확인해보면 이렇게 나온다.
파일 맨 앞에 나오는 문자 (1자리)
해당 파일에 대한 유형을 보여주는 곳이다.
| 문자 | 유형 | 의미 |
|---|---|---|
- | 일반 파일 | 텍스트, 이미지, 프로그램, 데이터 파일 등 |
d | 디렉토리 | 폴더 |
l | 심볼릭 링크 | 다른 파일이나 디렉토리를 가리키는 바로가기 |
c | 문자 장치 파일 | 터미널, 모뎀 등 문자 단위로 입출력하는 장치 |
b | 블록 장치 파일 | 하드디스크, CD-ROM 등 블록 단위로 입출력하는 장치 |
나머지 접근권한 (이후 9자리)
여기서 3개씩 묶어서 각각 소유자(User), 그룹(Group), 기타 사용자(Orders) 순서대로 적용된다.
| 위치 | 권한 | 의미 |
|---|---|---|
r | 읽기 | 파일 내용을 보거나, 디렉토리 목록 확인 가능 |
w | 쓰기 | 파일 내용을 수정하거나, 디렉토리에서 파일 생성 혹은 삭제 가능 |
x | 실행 | 파일을 프로그램으로 실행시키거나, 디렉토리에 접근하여 이동 가능 |
- | 권한 없음 | 해당 권한이 부여되지 않음 |
즉 만약 -rw-r--r-- 라고 한다면 해당 파일 혹은 디렉토리는 다음과 같은 권한을 가지고 있다.
-: 일반 파일rw-: 소유자는 읽기와 쓰기 가능r--: 그룹 사용자는 읽기만 가능r--: 기타 사용자는 읽기만 가능
설정하기

이제부터 파일 혹은 폴더에 대한 권한을 설정해보려고 한다. 제일 흔한 방법으로 가장 기본적인 방법으로는 chmod명령어를 사용하는것이다. change mode 라는 뜻을 가진 이 명령어를 실행하는 밥법으로 두 가지 방법이 존재한다.
1. 8진수 (숫자) 표기법
이 방식은 위에엇 말했던 소유자(User), 그룹(Group), 기타 사용자(Orders)에게 부여할 최종 권한을 숫자로 지정하는 방식이다. 제일 많이 사용하고 직관적인 특징을 가지고있다.
| 권한 | 문자 | 8진수 값 |
|---|---|---|
| 실행 | x | 1 |
| 쓰기 | w | 2 |
| 읽기 | r | 4 |
| 표에 나온 각 권한의 숫자를 더해서 3자리 숫자를 만들면 된다. |
rwx= 4 + 2 + 1 = 7,r-x= 4 + 1 = 5,rw-= 4 + 2 = 6
// 명령어 방식 chmod [User][Group][Others] [file-name/directory-name]
// 명령어 방식 chmod [User][Group][Others] [file-name/directory-name]
chmod 644 [file-name/directory-name]
chmod 644 [file-name/directory-name]
만약 자신이 ssh 키 생성하면서 한번쯤 사용했었을 chmod 600 ssh-name 혹은 chmod 644 ssh-name 이라는 명령어도 이 공식에서도 적용되어 있는 것이다. (소유자에게만 쓰기, 읽기 권한 적용)
그리고 디렉토리의 권한을 변경할 때, 해당 디렉토리 안에 있는 모든 하위 파일과 디렉토리의 권한까지 함께 변경하고 싶다면 -R (재귀적 옵션) 을 사용하면 된다.
chmod -R 755 [directory-name]
chmod -R 755 [directory-name]
2. 심볼릭 (문자) 표기법
이 방식은 기존 권한에서 특정 권한을 추가(+)하거나 제거(-) 또는 새롭게 설정(=) 할 때 사용된다.
| 대상 (Who) | 작업 (Operator) | 권한 (Permission) |
|---|---|---|
u (User, 소유자) | + (추가) | r (읽기) |
g (Group, 그룹) | - (제거) | w (쓰기) |
o (Other, 기타) | = (새로 지정) | x (실행) |
a (All, 모두) |
chmod의 심볼릭 표기법은 u+x (소유자에게 실행 권한 추가), g-w (그룹에서 쓰기 권한 제거)와 같이 특정 권한을 더하거나 뺄 때 유용하게 사용할 수 있다.
// 명령어 방식 chmod [Who][Operator][Permission] [file-name/directory-name]
// 명령어 방식 chmod [Who][Operator][Permission] [file-name/directory-name]
// 예시 chmod u+r [file-name/directory-name]
// 예시 chmod u+r [file-name/directory-name]
간혹 ls -l을 실행했을 때 -rwxr-xr-x+ 와 같이 권한 비트 뒤에 +가 붙는 경우가 있다. 이것은 표준 권한(UGO) 외에 setfacl 명령어를 통해 설정된 추가적인 접근 제어 목록(ACL)이 존재한다는 특별한 표시다. (예: /home/user)
마무리

오늘은 리눅스 초기에 궁금증이 생겨서 찾아봤던걸 짤게 작성해봤다. 그리고 chmod 라는 명령어는 자주 사용하는 명령어가 아니지만 ssh를 설정할 때 자주 접했을거라 생각해서 관련 내용을 추가해서 작성해보았다.
Comments