본문 바로가기

Linux

[시스템 구조 파악하기] 우분투 리눅스 입문편 - 리눅스의 신 (2)


1. 우분투의 파일시스템 구조

운영체제는 적절한 저장 장치에 설치된다. 또한 운영체제가 설치된 공간 외에 사용자가 자료를 저장하거나 프로그램을 설치할 수 있는 공간도 필요하다.

 

사용자가 데이터를 저장하기 위해서는 파일시스템을 사용할 수 있도록 영역을 설정해야하는데, 이를 저장 장치를 포맷한다고 한다. MS윈도우의 경우 C: 드라이브 또는 D: 드라이브 등을 만드는 것이다. 저장 장치를 두 개 연결하거나, 하나의 저장 장치에 파티션을 나누어 구현할 수 있다.

 

윈도우와 리눅스는 서로 다른 파일시스템을 쓰기 때문에 다른 형식으로 저장 장치를 포맷한다. 즉 윈도우는 리눅스의 파일시스템을 인식할 수 없고 리눅스는 윈도우의 파일시스템을 인식할 수 없다(리눅스의 경우 업데이트 되면서 윈도우의 파일시스템을 인식할 수 있게 되었다고 함). 

 

윈도우와 리눅스 파일시스템의 가장 큰 차이는 리눅스는 드라이브라는 개념이 없고, 단 하나의 파일시스템으로 구성되어야 한다는 것이다. 리눅스 파일시스템의 최상위는 루트 디렉토리(/)라고 부르는 공간이다. 우분투에 드라이브라는 개념이 없다면 아래와 같은 질문이 생긴다.

1. 저장 장치가 2개이면 어떻게 해야하나?

2. USB 메모리 스틱은 또 어떻게 읽고 쓰나?

 

질문에 대한 답은 "리눅스는 모든 저장 장치를 디렉토리 형태로 관리한다"이다.

리눅스는 저장 장치가 여러 개 존재할 경우 각각의 저장 장치를 각각의 디렉토리에 연결하게 된다. 이를 우분투는 "마운트 한다"라고 표현한다. 

 

예를 들어, 저장 장치 하나는 운영체제가 설치되어 부팅이 되는 주 저장 장치일 테니 반드시 루트(/) 디렉토리에 마운트되어 있게 된다. 이후 다른 저장 장치를 사용하려면 루트 디렉토리에서 /other_disk 라는 디렉토리를 만들고 다른 저장 장치를 이곳에 마운트 하면 된다.

결론적으로 리눅스에서 드라이브를 사용하기 위한 방법의 핵심은 마운트이다.

추가적으로 CDROM이 마운트되는 디렉토리는 /media/cdrom이고, USB 메모리 스틱은 /media/[usb명] 디렉토리에 마운트된다. 이러한 방식의 장점은 파일시스템의 저장 공간을 늘리기에 매우 용이하다는 점이고, 단점은 저장 장치가 어떻게 파일시스템과 연동되고 있는지 직관적으로 알기가 어렵다는 점이다.

 

마운트 관련 명령어

명령어 기능
df 마운트 정보를 간략하게 나타냄
mount df보다 더 세부적인 내용을 보여줌. (읽기 전용, 쓰기 전용 등의 정보까지)

2. 윈도우의 디렉토리 구조

디렉토리 역할
C:\Windows 운영체제에 관한 모든 파일과 데이터를 저장
C:\Program Files 프로그램 설치시 주로 이곳에 데이터를 저장
C:\Users 사용자의 데이터를 담고 있는 폴더

윈도우의 폴더 구조에서 가장 중요한 폴더는 이렇게 3개 정도이며, 그 역할이나 용도가 정확하게 구분되어 있어서 어렵지 않다.

 


3. 리눅스(우분투)의 디렉토리 구조

디렉토리 역할 상세
bin User Binaries 실행파일들을 모아놓은 곳. cp, rm 등이 존재. 모든 실행파일이 이곳에 있는 것은 아님.
sbin System Binaries 시스템 관리자용 실행파일들을 모아놓은 곳. 
etc Configuration Files 환경설정 파일들을 모아놓은 곳. 윈도우의 경우 레지스트리나 프로그램 개별 폴더에 저장.
dev Device Files 장치를 접근할 수 있는 파일들이 있는 곳. 리눅스는 장치를 파일로 표현하기 때문.
lib System Labraries 시스템에서 사용하는 라이브러리 파일들이 있는 곳.  윈도우에선 DLL이란 파일 사용.
home Home Directories 사용자 데이터를 저장하고 있는 디렉토리. 다중 사용자를 구분하기 위한 디렉토리.
usr User Programs 사용자가 사용하는 프로그램들이 있는 디렉토리. 운영체제에 설치되는 대부분의 응용프로그램들이 이곳에 설치됨.
proc (sys) Process Information  실제로 존재하는 파일을 담고 있는 디렉토리가 아닌 현재 시스템의 상태나 정보들을 알려주는 파일들을 담고 있음.

위의 표에서 모든 디렉토리를 다룬 것은 아니다. 추후에 필요할 때마다 하나씩 살펴봐도 무방한 것들이므로 우선 넘어간다. 위에서 설명한 디렉토리 중 가장 자주 참고하게 될 디렉토리는 home과 etc 디렉토리다.

 


4. 사용자 권한

리눅스 시스템들은 최초에 개발될 때부터 다수의 사용자가 동시에 한 컴퓨터를 같이 쓰는 환경을 고려해서 개발되었다. 다수의 사용자가 같이 하나의 컴퓨터를 사용할 때 가장 중요한 것은 파일의 소유권과 사용권한이다.

 

사용자  
소유자 파일의 주인. 파일을 생성하면 자동으로 해당 계정이 파일의 주인이 됨
소유그룹 계정들은 특정 그룹으로 묶여 있을 수 있다. groups 라고 입력하면 자신이 속한 그룹을 확인할 수 있음
제3자 파일의 소유자도 아니고, 소유그룹도 아닌 모든 계정은 제3자 계정에 속함

 

이를 자세히 알아보기 위해 root 디렉토리에서 ls -l 명령어를 입력한다.

bin 폴더의 경우 앞에 drwxr - xr - x 라고 나와있는데 이것이 의미하는 바는 다음과 같이 구분하여 확인할 수 있다.

 

0  123  456  789

d  rwx  r - x  r - x

 

0번 영역

디렉토리를 의미한다. 파일은 -로 표시가 된다.

 

123 영역

소유자의 사용권한을 의미한다.  rwx 이므로 소유자는 읽고, 쓰고, 실행할 수 있는 모든 권한을 부여 받았다.

 

456 영역

소유 그룹의 사용권한을 의미한다.  r - x 이므로 소유그룹은 읽고, 실행할 수 있는 권한을 부여 받았다.

 

789 영역

제 3자의 사용권한을 의미한다.  r - x 이므로 제 3자는 읽고, 실행할 수 있는 권한을 부여 받았다.

 

디렉토리는 리눅스에서 파일의 일종으로 분류된다. 하지만 디렉토리 안쪽으로 이동해서 들어가려면 반드시 디렉토리가 실행권한을 가지고 있어야 한다. 따라서 위 예제에서 모든 디렉토리가 실행권한을 가지고 있는 것이다.

 

권한을 제대로 설정하지 않는다면, 아무리 자기 소유의 파일이라도 '권한 없음' 오류를 만날 수 있음에 유의해야 한다.


5. 권한 바꾸기

 

권한을 바꾸는 명령어는 chmod인데 이를 사용하는 방법은 2가지가 있는데, 그 중 영문자를 이용해서 옵션을 주는 방법을 살펴보면 다음과 같다.

$ chmod u-x Music

위 명령은 Music 디렉토리의 소유자 권한 중에서 실행권한을 제거하라는 명령이다.

u는 소유자를 의미하고 -x는 실행권한 제거를 의미하기 때문이다. 

 

다른 옵션은 다음과 같다.

권한 구분   권한 종류  
u 소유자 +r 또는 -r 읽기 권한 추가 또는 삭제
g 소유 그룹 +w  또는 -w 쓰기 권한 추가 또는 삭제
o 제 3자 +x 또는 -x 실행 권한 추가 또는 삭제