리눅스 디렉토리 구조 살펴보기
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,316 조회
- 0 추천
- 목록
본문
리눅스 디렉토리 구조 살펴보기
모든 사용자 또는 시스템관리자들이 리눅스 운영체제를 설치한 이후에 가장 먼저하는 것이아마도 시스템이 어떻게 생겼는가를 확인하는 작업일 것이다.
시스템이 어떻게 생겼는가를 확인한다는 것은 여러가지를 내포하고 있겠지만 가장 단순하게 생각하면 시스템내부의 디렉토리구조가 어떻게 생겼는가라는 것으로 귀결될 수 있다.
따라서 필자는 리눅스를 설치하는 설명을 마치고 가장 먼저 디렉토리구조를 살펴보는 것으로 시스템관리파트의 설명을 시작하고자 한다.
거의 모든 리눅스시스템의 디렉토리 구조는 전체적으로 역tree구조를 하고 있다.
그리고 명령어의 종류와 성격, 사용권한등에 따라 각각의 디렉토리들로 구분되어 있다.
무엇보다 중요한 것은 대부분의 리눅스배포판들은 “리눅스 파일시스템 표준”인 “FSSTND(Linux File System Standard)”라는 표준을 준수하고 있다는 점이다.
즉, 알려진 대부분의 리눅스배포판들(SULINUX, Redhat, Fedora, CentOS등)이 FSSTND를 준수하여 개발되었다.
FSSTND 파일시스템 표준은 각 디렉토리의 용도에 대한 기준을 준비해 두고서 그 용도에 맞도록 사용하자는 리눅스 파일시스템 구성의 기준이 되는 표준안이라고 할 수 있다.
예를들어 /etc 디렉토리에는 설정파일에 관련된 파일들을 저장하도록 하고 /var/spool디렉토리에는 임시저장하는 용도로 사용하며 /var/log에는 로그파일을 저장하는 용도로 사용하며 /bin디렉토리에는 실행파일용도로 사용하는 등의 여러가지 규칙을 의미한다.
그럼 리눅스시스템의 최상위 디렉토리구조인 / 디렉토리구조를 확인하도록 하자.
[root@sulinux ~]#ls -l /
total 162 drwxr-xr-x 3 root root 4096 Feb 10 02:20 backup drwxr-xr-x 2 root root 4096 Feb 13 04:03 bin drwxr-xr-x 4 root root 1024 Feb 9 17:58 boot drwxr-xr-x 11 root root 4000 Feb 26 19:40 dev drwxr-xr-x 92 root root 12288 Feb 26 19:52 etc drwxr-xr-x 5 root root 4096 Feb 11 14:03 home drwxr-xr-x 14 root root 4096 Feb 13 04:03 lib drwx------ 2 root root 16384 Feb 10 02:20 lost+found drwxr-xr-x 3 root root 4096 Feb 26 19:52 media drwxr-xr-x 2 root root 4096 Jul 9 2008 misc drwxr-xr-x 2 root root 4096 Jul 9 2008 mnt dr-xr-xr-x 2 root root 4096 Feb 9 18:14 net drwxr-xr-x 2 root root 4096 Jul 9 2008 opt dr-xr-xr-x 116 root root 0 Feb 27 2009 proc drwxr-x--- 20 root root 4096 Feb 26 19:52 root drwxr-xr-x 2 root root 12288 Feb 13 04:03 sbin drwxr-xr-x 2 root root 4096 Feb 9 17:53 selinux drwxr-xr-x 2 root root 4096 Jul 9 2008 srv drwxr-xr-x 11 root root 0 Feb 27 2009 sys drwxrwxrwt 13 root root 4096 Feb 26 19:52 tmp drwxr-xr-x 14 root root 4096 Feb 9 17:54 usr drwxr-xr-x 23 root root 4096 Feb 9 18:02 var [root@sulinux ~]# |
위의 “/”는 리눅스 파일시스템구조에서 최상위 루트디렉토리를 의미하는 것이다.
그리고 표시되고있는 위의 디렉토리들은 모두 “/”디렉토리 이하에 존재하는 디렉토리들이다.
위의 디렉토리들 가운데 /backup디렉토리는 설치시에 /backup디렉토리를 설정했기 때문에 생성된 것이고 나머지 디렉토리들은 다른 리눅스배포판과 거의 동일하다고 보면 된다.
앞에서 “리눅스 파일시스템 표준”이라고 했던 “FSSTND(Linux File System Standard)”라는 것은 위의 각 디렉토리들의 용도와 구조를 미리 정의해 두고서 그대로 사용하도록 하는 것을 의미한다.
참고로 위의 디렉토리 출력순서는 디렉토리명의 알파벳 오른차순으로 출력된 것이다.
다음은 위의 FSSTND에 따른 각 디렉토리들의 용도에 대한 설명이다.
/
최상의 디렉토리인 루트디렉토리를 의미하며 리눅스의 모든 디렉토리들의 시작점이다.
즉, 모든 디렉토리들을 절대경로로 표기할 때에 이 디렉토리부터 시작해야 한다.
(주의사항 : 여기서 얘기하는 /와 /root와는 완전히 다른 것임.)
/bin
기본적인 명령어가 저장된 디렉토리. 즉, 리눅스 시스템사용에 있어 가장 기본적이라고 할 수 있는 mv, cp, rm, rmdir, df, sync등과 같은 명령어들이 이 디렉토리에 존재함.또한 이 디렉토리에 존재하는 거의 모든 명령어들은 root사용자뿐아니라 일반사용자들도 사용할 수 있음. 즉, /sbin에 존재하는 명령어들이 대부분 root사용자용이라면 /bin에 존재하는 명령어들은 root사용자와 일반사용자들이 공동으로 사용하는 디렉토리임.
/boot
리눅스 부트로더(Boot Loader)가 존재하는 디렉토리. 즉, GRUB과 같은 부트로더에 관한 파일들(예를들어 grub.conf등)이 이 디렉토리에 존재함.
/dev
시스템 디바이스(device)파일을 저장하고 있는 디렉토리. 즉, 하드디스크 장치파일 /dev/sda, CD-ROM장치파일 /dev/cdrom등과 같은 장치파일들이 존재하는 디렉토리임. 한때는 /dev위치에 백도어파일이 숨겨져있는 장소로 유명했음. 관리자들의 관심이 소홀한 디렉토리이기 때문에 백도어파일을 숨겨두기에 최적의 장소로 인식됨. 따라서 기본 장치파일외에 다른 생소한 파일이 생성되어 있는가를 주기적으로 확인해야함.
/etc
시스템의 거의 모든 설정파일이 존재하는 디렉토리. /etc/passwd(패스워드파일), /etc/group(그룹파일), yum 설정파일, xinetd설정파일, vsftpd 설정파일, /etc/sysconfig(시스템 제어판용 설정파일)등과 같이 거의 모든 시스템관련 설정파일들이 존재하는 디렉토리.
/etc/mail/
sendmail.cf나 access파일등의 sendmail의 설정파일들이 존재하는 디렉토리.
/etc/ssh/
SSH서비스, 즉 sshd데몬에서 사용하는 각종 설정파일들이 존재하는 디렉토리.
/etc/squid/
squid 프락시서버의 설정파일들이 저장된 디렉토리.
/etc/samba/
삼바관련 설정파일들이 저장된 디렉토리.
/etc/skel/
계정사용자 생성시의 초기화파일들이 저장된 디렉토리(useradd에서 사용함).
/etc/rc.d/
부팅레벨별 부팅스크립트파일들이 존재하는 디렉토리.
/etc/rc.d/init.d/
시스템 초기화 파일들의 실제파일들이 존재함.
/etc/pam.d/
PAM설정 정보파일들이 저장된 디렉토리.
/etc/httpd/
RPM으로 설치된 아파치 설정파일(httpd.conf등)들이 저장된 디렉토리.
/etc/cron.d/, /etc/cron.daily/, /etc/cron.hourly/, /etc/cron.monthly/, /etc/cron.weekly/
모두 크론설정파일이 존재하는 디렉토리임.
/etc/xinetd.d/
xinetd 수퍼데몬에 의해 서비스되는 서비스설정파일이 존재함.
/etc/yum/
yum설정관련 파일들이 존재함.
/etc/sysconfig/
시스템 제어판 설정파일들이 존재함.
/home
사용자의 홈디렉토리, 예를들어 /home/sspark은 sspark이라는 사용자의 홈디렉토리임. 이와 같이 useradd라는 명령어로 새로운 사용자를 생성하면 대부분 사용자의 ID와 동일한 이름의 디렉토리가 자동으로 생성됨.
/lib
커널모듈파일과 라이브러리파일 즉, 커널이 필요로하는 커널모듈파일들과 프로그램(C, C++등)에 필요한 각종 라이브러리 파일들이 존재하는 디렉토리.
/media
DVD, CD-ROM, USB메모리스틱등과 같은 탈부착이 가능한 장치들의 마운트포인트(mount point)로 사용되는 디렉토리.
/mnt
/media 디렉토리와 비슷한 용도로 탈부착이 가능한 장치들에 대하여 일시적인 마운트포인트로 사용하는 디렉토리.
/proc
일명 “가상파일시스템”이라고 하는 곳으로 현재 메모리에 존재하는 모든 작업들이 파일형태로 존재하는 곳이다.
디스크상에 실제 존재하는 것이 아니라 메모리상에 존재하기 때문에 가상파일시스템이라고 한다.
실제 운용상태를 정확하게 파악할 수 있는 중요한 정보를 제공하기도 한다.
여기에 존재하는 파일들 가운데 현재 실행중인 커널(kernel)의 옵션값을 즉시 변경할 수 있는 파라미터파일들이 있기 때문에 시스템 운용에 있어 매우 중요한 의미를 가진다. 이 가상파일시스템에 대한 설명만을 별도로 해야할 정도로 매우 중요하게 다루어 진다.
/root
시스템 최고관리자인 root사용자의 개인 홈디렉토리.
/sbin
ifconfig, e2fsck, ethtool, halt, shutdown등과 같이 주로 시스템 관리자들이 사용하는 시스템관리자용 명령어를 저장하고 있는 디렉토리.
/tmp
일명 “공용디렉토리”. 시스템을 사용하는 모든 사용자들이 공동으로 사용하는 디렉토리. 예를들어 mysql에서 사용하는 mysql.sock등과 같은 소켓파일, 또는 아파치에서 사용하는 세션파일(session file)등이 생성되기도 한다.
즉, 시스템의 일반적인 사용자 또는 각종 프로세스에서 사용되는 파일들이 생성되는 위치이다.
이 디렉토리가 매우 민감한 이유는 홈페이지에서 해킹툴이 업로드되는 가장 흔한 위치 즉, 웹해킹에 사용되는 파일이 업로드 되는 위치 이므로 주의가 요구되는 디렉토리이다.
/usr
시스템이 아닌 일반사용자들이 주로 사용하는 디렉토리 즉, c++, chsh, cpp, crontab, du, find등과 같이 일반사용자들용 명령어들은 /usr/bin에 위치함. 시스템관리자 전용명령어를 제외한 거의 모든 일반적인 리눅스 명령어들이 존재하는 위치가 /usr/bin임. 특히 /usr/local디렉토리는 사용자들이 설치한 어플리케이션이 설치되는 위치임. 그리고 /usr/sbin에는 각종 어플리케이션 설치시에 생성되는 명령어들과 네트워크에 관련된 명령어들이 주로 존재함.
/usr/bin/
일반사용자들이 사용가능한 명령어 파일들이 존재하는 디렉토리.
/usr/X11R6/
X 윈도우 시스템의 루트 디렉토리.
/usr/include/
C 프로그램에 필요한 헤드파일(*.h) 디렉토리.
/usr/lib/
/lib에 들어가지 않은 라이브러리 디렉토리.
/usr/sbin/
/bin에 제외된 명령어와 네트워크관련 명령어가 들어있는 디렉토리.
/usr/src/
프로그램 소스(주로 커널소스)가 저장되는 디렉토리.
/usr/local/
MYSQL, Apache, Proftpd, PHP등과 같은 어플리케이션들을 소스로 컴파일설치할 때 사용되
는 장소.
/usr/share/man/
명령어들의 도움말을 주는 매뉴얼(manual)페이지 디렉토리. 즉, 이 디렉토리에는 시스템에서 사용하는 모든 맨페이지파일(man page)이 존재함.
/var
시스템운용중에 생성되었다가 삭제되는 데이터를 일시적으로 저장하기 위한 디렉토리. 거의 모든 시스템로그파일은 /var/log에 저장되고, DNS의 zone설정파일은 /var/named에 저장되고, 메일파일은 /var/spool/mail에 저장되며, 크론설정파일은 /var/spool/cron디렉토리에 각각 저장됨.
/var/tmp/
/tmp디렉토리와 같은 공용디렉토리. 즉, /tmp디렉토리와 /var/tmp 디렉토리의 퍼미션은 1777로서 sticky bit가 설정되어 있는 공용디렉토리이다.
리눅스 시스템에서 공용디렉토리는 /tmp와 /var/tmp 둘뿐임.
/var/log/
시스템로그파일(messages, secure, xferlog파일등)이 저장되는 디렉토리.
/var/ftp/
vsftp등과 같은 FTP서비스를 위한 다운로드될 파일들 즉, FTP홈디렉토리.
/var/named/
BIND 즉, DNS에서 사용하는 zone파일들이 저장되는 디렉토리.
/var/spool/mail/
각 계정사용자들의 메일파일이 저장되는 디렉토리.
/var/spool/lpd/
프린트를 하기 위한 임시 디렉토리(스풀링 디렉토리).
/var/spool/mqueue/
발송을 위한 메일 일시저장 디렉토리.
/var/spool/cron/
각 사용자들의 cron설정파일들이 저장된 디렉토리.
/var/spool/at/
atd 즉, 예약작업에 관한 파일들이 저장되는 디렉토리
/lost+found
최상위디렉토리인 /디렉토리에만 존재하는 것이 아니라 파일시스템마다 존재할 수 있는 디렉토리임. 이 디렉토리는 fsck 또는 e2fsck등과 같은 파일시스템 체크 및 복구유틸리티 실행후에 주로 생성이 되는 것으로서 복구되지 않은 채로 블록(block)만 존재하는 파일 즉, 연결이 끊어진 inode들이 숫자파일형태로 존재하는 곳임. 숫자형태로 존재하는 파일들은 mv명령어로 파일이름만 바꾸면 바로 복구될 수 있음. 즉, 이 위치에 존재하는 텍스트파일의 경우에는 file이라는 명령어와 cat 또는 vi등의 명령어로 파일의 내용등을 확인한 후에 복구 가능하므로 경우에 따라서는 매우 중요한 역할을 하는 디렉토리임. 가끔씩 이 디렉토리를 삭제해도 되느냐고 질문하는 분들이 있는데 삭제를 해도 시스템에는 아무런 영향이 없음. 하지만, 꼭 필요한 파일이 이 디렉토리에 복구되지 아니한 채로 남아 있을 수 있기 때문에 반드시 확인후에 삭제하도록 한다.
관련자료
-
이전
-
다음