'다중 사용자 운영체제에서 권한이 필요한 이유'
주로 개인이 일반적으로 사용하는 '단일 사용자 운영체제'(Single-User Operation System, 대표적으로 Windows)와는 다르게 여러 사용자들에게 서비스를 제공해주는 서버에는 '다중 사용자 운영체제'(Multi-User Operation System)가 사용됩니다.
다중 사용자 운영체제의 대표적인 것이 유닉스(Unix) 운영체제와 유닉스에서 파생된 리눅스(Linux) 운영체제이며, 다중 사용자 운영제체는 여러 클라이언트 컴퓨터에서 하나의 서버 컴퓨터에 접속을 하는데 사용되기 때문에 파일 및 디렉터리의 접근 권한을 클라이언트 계정별로 엄격하게 관리되어야 한다는 특징이 있습니다.
* 리눅스에서 디렉토리는 그 디렉터리가 포함하는 파일과 하위 디렉터리 정보를 저장하는 하나의 파일로 취급되기 때문에 디렉터리도 파일의 한 종류입니다. 추가로 macOS 역시 유닉스 계열의 운영체제이므로 리눅스와 동일한 파일 권한을 사용합니다.
'파일 권한 이해하기'
리눅스 명령어 'ls' 는 list segments라는 뜻으로 디렉터리 목록을 확인하는 명령어입니다. 'ls' 명령어에 '-l' 옵션을 통해 현재 위치에 있는 전체 파일들을 자세하게 볼 수 있습니다.
('-al' 옵션의 경우 숨겨진 파일까지 모두 보여줍니다.)
(링크수는 쉽게 윈도우의 '바로가기'이며, 소유 그룹은 특별한 변경이 없을 경우 소유자가 속한 그룹이 소유 그룹으로 지정됩니다.)
'ls' 명령어로 파일들을 자세하게 봤을 때 맨 앞에 'drwxr-xr-x', '-rw-r--r--'와 같은 문자들이 있습니다.
이 부분이 바로 파일 권한 정보를 가지고 있는 부분입니다. 파일 타입(file type)과 권한 정보(permission)를 나타내며 총 10자리로 이루어져 있습니다.
먼저 맨 앞의 문자 1자리가 바로 파일 타입(file type)을 나타내는데요.
- : 일반 파일이라는 표시입니다. (regular file)
d : 폴더 / 디렉터리라는 표시입니다. (directory)
l : 심볼릭 링크라는 표시입니다. (symbolic link)
외에 b(블록 타입 특수 파일), c(문자 타입 특수 파일), p(파이프), s(소켓)가 있습니다.
그리고 파일 타입 다음의 9자리가 바로 '권한(permission)'을 나타내는 부분입니다. 9자리의 권한은 3자리씩 3 부분으로 나뉘게 되는데요.
- 맨 앞의 3자리는 파일 소유자에 대한 권한을 나타냅니다.
- 중간의 3자리는 파일 소유자의 그룹에 대한 권한을 나타냅니다.
- 마지막의 3자리는 시스템의 다른 사용자에 대한 권한(소유자 외 유저들의 권한)을 나타냅니다.
drwxr-xr-x
// 'd' + 'rwx' + 'r-x' + 'r-x'
를 예로 들었을 때 맨 앞의 'd'는 파일의 타입인 디렉터리를 나타내고, 다음의 'rwx'는 파일 소유자의 권한, 다음 'r-x'는 파일 소유자의 그룹에 대한 권한, 마지막 'r-x'는 시스템의 다른 사용자에 대한 권한을 나타내는 것입니다.
그렇다면 여기서 r, w, x는 무엇을 나타내는 것일까요?
r : 읽기(read)로 파일을 읽을 수 있는 권한입니다.
w : 쓰기(write)로 파일을 쓰거나, 수정하거나, 지울 수 있는 권한입니다.
x : 실행(execute)으로 파일을 실행할 수 있는 권한입니다.
이 내용을 위의 3자리의 권한으로 정리했을 때 아래와 같습니다.
--- 권한 없음
--x 실행 전용 권한
-w- 쓰기 전용 권한
-wx 쓰기 및 실행 권한
r-- 읽기 권한
r-x 읽기 및 실행 권한
rw- 읽기 및 쓰기 권한
rwx 읽기, 쓰기 및 실행 권한
'파일 권한 변경하기(chmod)'
다중 사용자 운영체제(Multi-User Operation System)의 특성상 파일 및 디렉터리의 접근 권한이 클라이언트 계정별로 관리되어야 한다고 했는데요. 권한의 변경이 필요한 경우에는 'chmod'(change mode) 명령어를 사용하여 변경합니다.
chmod [변경하고자 하는 권한 값] [파일 혹은 디렉토리]
chmod [옵션] [사용자][설정기호][권한] [파일 혹은 디렉토리]
권한을 변경하는 'chmod' 명령어의 사용법에는 크게 두 가지가 있습니다.
1. 첫 번째로 기호를 통해 권한을 변경하는 방법입니다.
먼저 살펴볼 부분은 r, w, x는 위에서 본 것처럼 각 읽기, 쓰기, 실행을 나타내며 아래 추가적으로 필요한 기호가 있습니다.
+ : 권한 추가
- : 권한 제거
= : 권한 부여
u : user의 약자, 소유자
g : group의 약자, 소유 그룹
o : other의 약자, 일반 사용자
a : all의 약자, 모든 사용자
(만약 문자가 없으면 'a'와 동일하게 적용됩니다.)
chmod a+x test.txt
// 모든 사용자(a = all)에게 실행 권한(x)를 추가(+)합니다.
chmod g-w test.txt
// 소유 그룹(g = group)에게 쓰기 권한(w)를 제거(-)합니다.
chmod u=rw test.txt
// 소유자(u = user)에게 읽기(r), 쓰기(w) 권한을 부여합니다.
chmod u-x,g+w,o+w test.txt
// 소유자에게 실행 권한을 제거하고, 그룹에게 쓰기 권한을 추가하고, 나머지 사용자에게 쓰기 권한을 부여합니다.
위 방법을 사용해서 다음 예시들과 같이 권한 설정을 변경할 수 있으며, 마지막처럼 콤마( , )를 통해 단일 대상이 아닌 여러 대상에게도 권한을 적용할 수 있습니다.
2. 두 번째 방법인 숫자를 통해 권한을 변경하는 방법입니다.
r, w, x는 각 권한마다 부여된 고유의 숫자가 존재합니다. r = 4, w = 2, x = 1인데요.
앞에서 봤던 것처럼 권한은 총 9자리로 되어있고, 2-4 / 5-7 / 8-10 이렇게 3자리씩 3 부분으로 나눠져 있었습니다.
해당 방법은 하나의 그룹을 대표하는 숫자를 통해서 권한을 부여할 것이며, 각 그룹을 대표하는 숫자는 r, w, x 권한 여부를 모두 더한 값을 나타냅니다.
(r + w = 6, r + x = 5, w + x = 3)
chmod 777 test.txt
// user, group, other에 대한 모든 권한을 추가합니다.
chmod 743 test.txt
// user에게는 모든 권한이 허용되고, group에게는 읽기 권한(r=4), other에게는 실행 권한(x=3)과 쓰기 권한(w=2)를 줍니다.
chmod -R 700 project
// -R 옵션을 사용하면 하위 디렉토리와 그 안의 파일 권한까지 모두 변경할 수 있습니다.
// project 디렉토리 하위에 위치한 모든 파일 및 디렉토리에 user의 읽기, 쓰기, 실행 권한만 주고 나머지 권한은 다 제거합니다.
예시로 본 것처럼 해당하는 그룹(user, group, other)에 부여하고 싶은 권한의 고유 숫자 값을 모두 더한 값을 주는 방법입니다.
'-R' 옵션을 사용하면 하위 디렉터리와 그 안의 파일 권한까지 모두 변경할 수 있습니다.
'파일 소유자 변경하기'
chown [변경할 소유자] [변경할 파일]
마지막으로 파일의 소유자 변경입니다.
파일 소유자 변경은 'chown' 명령어를 통해 할 수 있고, [변경할 소유자] 부분에 ". 그룹 이름" 형식을 사용한다면 소유자뿐만 아니라 소유 그룹도 변경할 수 있습니다.
< 참고 자료 >
'Programming > Linux' 카테고리의 다른 글
linux sftp log 설정 방법 (접속 및 작업 로그) (0) | 2023.02.16 |
---|---|
리눅스 파일 편집기 vi 자주 사용되는 명령어 정리 (1) | 2022.11.24 |
좀비 프로세스 원인과 죽이는 방법(Zombie Process) (0) | 2022.09.14 |
데몬(daemon) 프로세스의 정의와 실행 방법 (0) | 2022.07.27 |
nohup 명령어를 사용해도 프로세스가 종료되는 경우 해결 방법 (2) | 2021.08.01 |