본문 바로가기
IT Security/LINUX Basic

7. LINUX - 루트(/)의 하위 폴더 역할

by Rosmary 2019. 8. 24.
728x90
반응형

지금까지, 리눅스 내의 폴더를 옮겨다니면서, 폴더 내에 어떤 파일이 있는지, 그리고 그 파일이 무슨 내용을 담고 있는지, 파일들을 어떻게 복사하고 이동하는지 등등에 대해 간략하게나마 배웠다. 문제는, 리눅스의 이 파일들이 어떤 역할을 하는지 알 수 없어, 지금까지 배운 명령어들을 어떻게 사용해야 할 지 감이 안잡힌다는 것이다.

 

따라서, 이번 포스팅에서는 리눅스의 최상위 폴더인 루트 아래에 위치한 디렉터리가 어떤 목적으로 만들어졌는지, 그리고 그 내부에 어떤 파일들이 존재하는지에 대해 간략하게만 설명하려고 한다. 자세히 설명해도, 리눅스 내에 존재하는 프로그램까지 파악해야 이해가 가능한 내용이기에, 굳이 이 포스팅만으로 모든 것을 이해하려고 애쓰지 않아도 된다.  

 

 

 

1. 리눅스 루트(/) 폴더

 

리눅스의 최상위 폴더, 즉 윈도우의 C드라이버 역할을 하는 폴더는 다음과 같은 이름의 하위 폴더를 가진다.

 

*  자세히 보면, bin, lib, lib64, run, sbin 폴더는 다른 폴더로 심볼릭 링크가 걸려 있는데, 이는 윈도우의 바로가기와 동일한 역할을 한다(심볼릭 링크와 하드 링크는 추후 포스팅할 예정이다). CentOS 7버전 이전에는, 이 파일들이 심볼릭 링크가 아닌, 하나의 폴더로 존재하고 있었는데, 무슨 이유에서인지 CentOS 7에서는 루트의 하위 디렉터리 폴더가 이렇게 바뀌었다. 만약 CentOS7 이전 버전을 구동하는 사용자라면, 해당 폴더에 심볼릭 링크가 걸려 있지 않을 것이다.

 

폴더가 상당히 많은데, 초급단계에서 눈여겨 봐야하는 폴더는 대략 절반 뿐이다. 하나씩 살펴보자.

 

 

(1) bin 폴더

 

우리가 사용해왔던 명령어 ls, pwd, cd, rm, mkdir 등의 파일은, 어디에 존재하고 있을까? 리눅스 내에 존재하지 않는다면 명령어를 쳐봐야 해당 명령을 찾을 수 없다는 에러만 화면에 출력될 것이니 말이다. 다음의 명령어를 통해, pwd 명령어가 어디에 존재하고 있는지 알아보자.

 

===========

which pwd

===========

 

 

* Cent OS 7 이전 버전에서는 /bin/pwd로 나타날 것이다.

 

which 명령어는, 다른 명령어를 정의한 파일이 어디에 위치하고 있는지 알려주는 명령어다. 그리고 해당 명령어는 /usr/bin 폴더에 위치하고 있음을 확인할 수 있다. 폴더의 이동과 관련된 명령어 역시, which를 사용해서 파일 위치를 찾아보면 다음과 같이 나타난다.

 

복수의 명령어를 동시에 사용하고 싶다면, 세미콜론(;)을 사용해서 위와 같이 입력할 수 있다

 

즉, bin 폴더는, 리눅스에서 기본적으로 제공되는 명령어 파일을 보관하는 역할을 한다. 만약, 이 bin 폴더 내에서, rm 이라는 파일명을 가지는 파일을 제거한다면, 제거 이후부터 rm 명령어를 찾을 수 없다는 출력물과 함께 rm의 사용이 불가능해진다. ls -lh 명령어로 해당 폴더를 살펴보면, 지금까지 사용한 명령어도 이 폴더에 위치하고 있음을 알 수 있다.

 

*  참고로, 이 폴더 내의 파일들은, vi나 cat을 이용한 명령어로 내용을 확인할 수 없다. 사람이 작성한 파일이긴 하지만, 이를 컴퓨터가 이해할 수 있는 이진파일(binary 파일)로 변환한 상태이기 때문이다. 만약, binary 파일을 vi 로 열어본다면, 다음과 같이, 컴퓨터만이 이해할 수 있는 글자들을 만나게 될 것이다.

 

 

 

 

(2) sbin 폴더

 

지난 포스팅에서 언급했던 명령어들을 일일이 which 명령어로 파일 위치를 찾아보신 분들이라면, userdel과 useradd와 같이 계정과 관련된 명령어가 sbin 폴더 밑에 있다는 것을 발견했을 것이다.

 

 

* Cent OS 7 이전 버전에서는 /sbin/ 폴더로 나타날 것이다.

 

루트 폴더를 자세히 살펴보면, bin 폴더 외에 sbin이라는 이름의 폴더도 존재한다. bin이라는 폴더명이 binary를 의미하듯이, sbin은 super binary를 의미한다. 그럼, bin과 sbin의 차이는 무엇일까?

 

바로 직전의 포스팅에서, 리눅스의 계정에 대해 살펴보았다. root 계정은 시스템에서 가장 강한 권한을 가지고 있는 계정으로, 일반 계정과는 다르게 시스템의 관리나 리눅스에서 제공하는 서비스를 구동/중지시키는 등의 행위가 가능하다. 따라서 시스템 관리나 프로그램, 서비스 관련 명령어는, 효율적인 관리를 위해 리눅스의 기본 명령어 파일과 따로 보관해 놓아야 할 필요성이 생겼는데, 이로 인해 만들어진 폴더가 sbin 폴더다. 

 

정리하자면, sbin 폴더는, root 계정 또는 관리자 계정만이 사용할 수 있는 명령어, 서비스 구동 및 프로그램 관련된 명령어 파일(daemon이라고도 한다)들을 모아놓은 폴더라고 보면 된다.

 

 

간단하게 프로그램 명령어 예시를 하나 들어보자. 리눅스는 ftp 명령어로, ftp 서비스에 접속할 수 있는데, 이 서비스에 접근하기 위해서는 ftp 프로그램이 설치되어 있어야 한다. ftp가 설치되어 있다면, ftp 명령어의 결과는 다음과 같이 나타난다.

 

 

만약, 찾을 수 없는 명령어라는 결과가 뜬다면, rpm -qa | grep ftp명령어를 입력하자. 결과가 아무것도 나타나지 않는다면, ftp프로그램이 설치되지 않은 것이다. yum install -y ftp 명령어를 입력하여 ftp 프로그램을 설치하자. 설치가 완료된 뒤, ftp 명령어를 입력하면, 위와 같은 결과를 얻을 수 있다. 

 

반대로 yum remove -y ftp 명령어를 입력하여 ftp 프로그램을 삭제하고 ftp를 입력해보자. 그럼, ftp 명령어 입력 시, 찾을 수 없는 명령어라는 출력물이 나타나게 된다.

 

 

 

(3) boot 폴더

 

boot 폴더는 리눅스 운영체제의 부팅과 관련된 파일이 모여있는 폴더다. 운영체제가 부팅되는 과정에서도 여러 파일들이 필요한데, 이 파일들을 모아놓은 폴더가 boot 폴더라고 보면 된다. 이 폴더는 리눅스 자체보다도 운영체제와 관련된 내용이 더 많기에, 추후 기회가 된다면 포스팅하도록 하겠다.

 

 

 

(4) dev 폴더

 

device의 약자를 파일명으로 사용하는 폴더다. 가상머신 리눅스를 돌리시는 분들이라면 여기서 /dev/sdb1과 같은 이름의 파일이 발견될 것이다(필자는 안드로이드로 본 포스팅 작성중이라 해당 내용이 없다). 대부분 하드 디스크와 같은 장치 관리에 사용되는 폴더가 위치한다. 이 폴더에 대한 자세한 설명은, 나중에 마운팅에 관련된 포스팅을 작성할 때 한 번 더 언급할 것이다. 

 

 

 

 

(5) etc 폴더

 

etc 폴더는 리눅스의 설정 파일을 모아놓은 폴더다(etc가 무엇의 약자인지는 잘 모르겠다). 시스템 관리를 위한 설정 파일은 물론, 프로그램 구동 설정 파일 역시, 이 폴더에 위치하고 있다.

 

시스템 설정의 예로 들 수 있는 것은, 지난 포스팅에서 살펴보았던 계정을 들 수 있다. 일반적으로, 일반 계정을 여러 개 만들면, 각 계정의 uid는 1000번부터 순차적으로 부여되는데, /etc/login.defs라는 설정파일에서 값을 조정하면, 첫 일반 계정이 부여받는 uid를 변경할 수 있다. 

 

 

만약, /etc/login.defs의 UID_MIN 값을 2000번으로 변경하면, 일반 계정에 부여되는 uid 값은 2000번부터 순차적으로 증가하게 된다.

 

프로그램 설정 또한 마찬가지다. 만약, 필자의 리눅스가 ftp 서비스를 제공한다고 하면(위에서 예시로 들었던 ftp 프로그램이 설치된 것과는 다른 개념이다), 누구에게 서비스를 제공할 것인지, 또는 사용자에게 어떤 권한만을 부여할 것인지 설정파일을 통해 지정할 수 있다.

 

 

 

 

(6) Home 폴더와 root 폴더

 

홈 디렉터리라고 불리는 이 폴더는, 이전 포스팅에서 살펴보았듯이, 일반 사용자에게 제공한 방(폴더)을 모아놓은 폴더라고 보면 된다. root 폴더의 경우, 알고 있듯이 root 계정을 위한 방이며, 이는 home 디렉터리와 분리되어 만들어졌다.

 

추후 메일이나 ftp 서비스 관련 내용이 나오면 추가되는 부분이 있기에, 자세한 설명은 생략한다.(사실 프로그램이 설치되지 않았다면 특별한 기능을 하는 것도 아니라 쓸 말이 없다)

 

 

 

(7) mnt 폴더

 

mnt는 mount의 약자로, dev폴더와 마찬가지로 마운팅과 관련된 폴더다. 사실 마운팅이 아니라면 쓸 일이 없는 폴더라 설명할 것이 없다. 추후 mount 관련 포스팅 때 다시 언급한다.

 

 

 

(8) usr 파일 및 lib/lib64 파일

 

usr파일은, 리눅스 시스템에 소스 컴파일로 설치된 프로그램과 관련된 파일을 저장하는 폴더다. 리눅스의 설치 방법은 yum을 이용하는 방식과, 소스파일을 직접 설치하는 방법으로 나눌 수 있는데, 이런 방식으로 설치된 파일을 보관하는 역할을 한다. 마치 windows의 program files와 같은 역할을 한다고 보면 된다. 

 

lib과 lib64 폴더는 이렇게 설치된 프로그램이 필요로 하는 라이브러리 파일을 저장하고 있는 폴더다. 이러한 이유때문에 CentOS 7에서는 lib과 lib64 폴더가, usr 폴더의 하위 폴더로 구성된 것이 아닌가 싶다.

 

이 폴더들은 소스 컴파일을 이용한 프로그램 설치 시, 다시 언급할 예정이다.

 

 

(9) var 폴더

 

var 폴더는 각 프로그램 별 로그 기록과 관련이 있는 폴더다. 몇몇 서비스 설치 시에 사용하는 것 외에는 딱히 많이 쓰지를 않아서 이 폴더에 대한 설명 역시 생략하고 넘어간다. 

 

 

 


 

각 폴더의 역할에 대해, 강박적으로 외우고 있지 않더라도, 리눅스 프로그램을 배우는 과정에서 자연스럽게 익혀지게 된다. 그럼에도 불구하고, 각 폴더에 대해 간략하게 정리를 하고 넘어가는 이유는, 추후 서비스 설치 및 구동 작업 과정을 조금이나마 수월하게 생각할 수 있는 힘을 기를 수 있기 때문이다.

 

마지막으로, 루트의 하위 폴더 일부에 대한 설명을 정리하면서 이번 포스팅을 마친다.

 

 

리눅스 루트 폴더의 하위 폴더 역할
/bin   or   /usr/bin 시스템 명령어의 binary 파일 모음 폴더
/sbin   or   /usr/sbin 프로그램 명령어, 관리 명령어의 binary 파일 모음 폴더
/boot 리눅스 부팅과 관련된 파일 모음 폴더
/dev 리눅스 장치 관련 파일 모음 폴더
/etc 리눅스 시스템 및 프로그램 설정 파일 모음 폴더
/home 일반 계정 사용자에게 부여된 홈 디렉토리 폴더 보유
/root 관리자 계정에게 부여된 홈 디렉토리 폴더
/mnt 장치나 파일의 마운팅에 사용되는 폴더
/usr 설치된 프로그램과 관련된 파일 모음 폴더
/lib, /lib64   or    /usr/lib, /usr/lib64 프로그램 라이브러리 파일 모음 폴더
/var 로그 관련 파일 모음 폴더
반응형

댓글