/
루트 디렉토리라고 불리우는 리눅스 시스템에서 가장 최상위 디렉토리이며 디렉토리 구조의 시작이다. 시스템관리자의 홈인 /root 와는 다르다. / 디렉토리 아래에 /bin, /etc, /boot, /mnt, /usr, /lib, /home, /dev, /proc, /var, /sbin, /tmp, /root, /lost+found 등의 디렉토리가 존재한다.
/bin
binaries의 약어로 이진 파일들이며 리눅스에서 가장 기본이 되는 명령어들이 모여 있는 디렉토리이다. 디렉토리의 파일들을 보면 대부분이 실행 파일인 것을 알 수 있다. 또한 이곳에는 부팅에 필요한 명령어들이 위치하여 부팅 후 에 시스템의 계정 사용자들이 사용할 수 있는 일반적인 명령어들도 위치 하고 있다.
/etc
이 디렉토리는 리눅스 시스템에 관한 각종 환경 설정에 연관된 파일들과 디렉토리들을 가진 디렉토리이다. 대부분의 이 디렉토리의 파일들은 시스템 관리자에 의해 관리되는 파일들이다. 웹 서버 환경 설정, 시스템 계정 사용자 정보, 패스 워드 관리, 시스템의 파일 시스템 관리 파일, 여러가지 시스템 보안에 관련된 파일들, 시스템 초기화 설정 파일, TCP/IP 설정 파일 등 시스템 전반에 걸친 거의 모든 환경 설정 파일들이 모두 이 디렉토리에 있다.
/etc/rc.d
시스템의 부팅과 시스템 실행 레벨 변경시에 실행되는 스크립트들이 저장되어 있는 디렉토리이다. 리눅스의 6가지 실행 레벨로 각각의 해당 디렉토리가 있다.
/etc/shadow
파일에서 패스워드 부분만을 따로 저장하는 파일이다. 이 파일에 패스워드는 암호화 되어 shadow password 형태로 저장되어 있으며, 시스템 관리자만이 접근 할 수 있기 때문에 크래킹 등에 대한 우려가 상대적으로 적다.
/etc/group
시스템의 그룹에 대한 정보를 저장하고 있는 파일이다.
/etc/inittab
init을 설정하는 파일이다.
/etc/issue, /etc/issue.net
getty에 의해서 로그인을 위한 프롬프트가 뜨기 전에 출력되는 메세지를 설정하는 파일이다. 리눅스 시스템으로 접속할 경우 가장 처음으로 볼 수 있는 메세지이다. 보통 시스템에 대한 설명과 각종 환영 메세지를 전달하기 위해서 사용된다. issue 파일의 내용은 보통 시스템의 터미널에서 볼 수 있다. 그리고 /etc/issue.net 파일의 내용은 리모트상에서 시스템으로 접속할 경우 볼 수 있다.
/etc/motd
'Message of the day' 의 약자로 시스템으로의 접속에 성공할 경우 쉘이 뜨기 전에 출력되는 메세지를 설정하는 파일이다.
/etc/profile, /etc/csh.login, /etc/csh.cshrc
시스템이 시작될 때 사용자가 로그인을 할 때 본쉘이나 C 쉘에 의해서 실행되는 스크립트 파일이다. 일반적으로 사용자들에 대한 기본 환경 설정에 사용된다.
/etc/securetty
시스템 관리자가 시스템에 로그인 할 수 있는 안전한 터미널에 대한 정보가 저장되어 있다. 일반적으로 가상콘솔이 설정되어 있다. 이것은 네트워크를 통해 시스템으로 침입해 시스템 관리자의 권한을 획득하는 크래킹을 막기 위해서 이다.
/etc/shell
시스템에서 안정적으로 사용할 수 있는 쉘에 대한 정보를 저장하고 있는 파일이다. 만약 chsh 명령어를 사용해 사용중인 쉘을 바꾸려면 이 파일에 저장되어 있는 쉘 중에 선택해야 한다. 또한 ftp 데몬의 경우 사용자의 쉘을 검사하여 /etc/shell 에 저장되어 있지 않은 쉘을 사용한다면 로그인을 허용하지 않는다.
/boot
리눅스 커널이 저장되어 있는 디렉토리로서 각종 리눅스 boot에 필요한 booting 지원 파일들이 저장되어 있는 디렉토리이다.
/mnt
외부 장치인 플로피 디스크, 시디롬, 삼바 등을 mount 하기 위해서 제공되는 디렉토리이다. 임시로 사용되는 디렉토리이므로 프로그램들은 /mnt 에 어떤 파일 시스템이 마운트 되었는지 자동으로 인식하지 않는다. 또한 /mnt 는 보통 여러 개의 하위 디렉토리로 나누어 사용되고, 평소에는 각 디렉토리들은 비어있다.
/usr
시스템에 사용되는 각종 프로그램들이 설치되는 디렉토리이다. 프로그램과 관련된 명령어 라이브러리들이 이 디렉토리에 위치 하게 된다. 또한 X 시스템과 관련된 파일들과 리눅스 커널 소스, 각종 C언어 관련 헤더 파일 등도 이 디렉토리 안에 저장되어 있다.
/usr/bin
리눅스 시스템에서 사용되는 각종 프로그램들이 저장되어 있으며 /bin 디렉토리에 없는 다양한 실행 파일들이 저장되어 있는 디렉토리이다.
/usr/X11R6
X 윈도우 시스템에 사용되는 모든 파일들이 이 디렉토리 안에 저장된다. 이 디렉토리는 X 윈도우 시스템의 개발과 설치를 좀 더 쉽 게 하기 위해서 전체 시스템 디렉토리 구조에 통합되지 않고 독자적인 구조를 가진다.
/usr/etc
/etc 디렉토리에는 각종 환경 설정 파일들이 있듯이 이곳에도 여러 가지 시스템 환경 설정 파일들이 저장되어 있다. /usr/etc 의 파일들은 /etc 디렉토리 안의 파일들과 달리 꼭 필요한 파일들은 아니다.
/usr/sbin
시스템 관리자를 위한 명령어들이 저장되는 디렉토리이다. 보통 이 디렉토리의 명령어들은 루트 파일 시스템에는 필요가 없는 서버 프로그램들이 저장된다.
/usr/include
C언어 관련 헤더 파일들이 저장되어 있는 디렉토리이다.
/usr/lib
각종 라이브러리들이 저장되어 있는 디렉토리이다. 만약 사용자가 직접 작성한 프로그램을 컴파일한다면 해당 프로그램들은 /usr/lib 디렉토리의 파일에 link 된다. 또한 이 라이브러리 안에 실행 코드가 필요하다면 /lib 디렉토리를 참조한다.
/usr/local
시스템의 특정적인 프로그램들이 저장되는 디렉토리이다. 특정적인 프로그램들이란 시스템 관리자에 의해서 따로 설치되는 프로그램들을 말한다.
/usr/man
man 페이지의 실제 내용들이 저장되어 있는 디렉토리이다. 디렉토리를 살펴보면 man1, man2, man3, 등과 같이 여러개의 디렉토리들로 나누어져 있다. man1 디렉토리는 섹션 1의 man 페이지 소스를 위한 디렉토리를 말한다.
/usr/src
시스템에서 사용하는 각종 프로그램들의 컴파일되지 않은 소스 파일들이 저장되어 있다. /usr/src/linux 디렉토리가 바로 리눅스의 커널 소스를 저장하고 있는 디렉토리이기 때문이다.
/usr/X386
/usr/X11R6 디렉토리와 유사한 디렉토리로 X11 Release 5를 위한 디렉토리이다.
/usr/info
GNU info 문서들을 저장하고 있는 디렉토리이다.
/usr/doc
각종 문서들이 저장되어 있는 디렉토리이다.
/lib
프로그램들의 각종 라이브러리들이 존재한다. 대부분 공유 라이브러리로 더 편하게 사용할 수 있으며, 파일의 크기를 줄여서 실행 할 때 불러 사용하게 된다. /lib/modules 디렉토리에는 커널로 로딩가능한 커널 모듈들이 저장되어 있다.
/home
시스템 계정 사용자들의 홈 디렉토리와 ftp,www, 등과 같은 서비스 디렉토리들이 저장된다. 이곳의 디렉토리와 파일들은 시스템에서 상용되지 않는다. 단지 리모트상에서 시스템으로 접속하는 사용자들을 위한 공간이다.
/dev
디렉토리에는 시스템의 각종 디바이스들에 접근하기 위한 디바이스 드라이버들이 저장되어 있는 디렉토리이다. 이 디렉토리는 물리적인 용량은 각지 않는 가상 디렉토리이다. 대표적으로는 하드 드라이브, 플로피, CDROM 그리고 loopback 장치 등이 존재한다. 리눅스 시스템은 윈도우와 달리 각종 디바이스 장치들을 하나의 파일로 취급한다. 따라서 시스템은 각각의 장치들로부터의 정보를 /dev 디렉토리에 존재하는 해당 장치 파일로 부터 가지고 온다.
/dev/hda
시스템의 하드 디스크이다. 여기서 /dev/hda 는 첫 번째 하드 디스크를 의미하며, /dev/hda1은 첫번 째 하드디스크의 첫 번째 파티션,
/dev/hda2 는 두 번째 파티션 등을 의미한다. 만약 시스템에 여러 개의 하드 디스크가 부착되어 있다면 /dev/hdb, /dev/hdc 같은 형식으로 표현된다.
/dev/lp
시스템의 병렬 포트 장치들이다.
/dev/null
이 디렉토리는 블랙홀이라고도부르는 특별한 장치이다. 이 장치로 데이터 등을 보내면 모두 폐기되므로 주의해야 한다.
/dev/pty
시스템으로의 원격 접속을 위한 'pesudo-terminal' 들이다. 만약 시스템 계정 사용자들이 원격지에서 시스템으로 텔넷 등을 이용하여 시스템에 접속을 시도한다면 이들은 /dev/pty 디바이스들을 사용하게 되는 것이다.
/dev/sda
SCSI 장치들이다. 만약 시스템에 scsi 하드 디스크를 장착했다면 시스템은 /dev/sda 파일에서 정보를 얻어 장치에 접근할 것이다.
/dev/ttyS , /dev/cuaS
/dev/ttyS 는 직렬포트 장치들이고, /dev/cauS는 Callout. 장치이다.
/dev/tty
시스템의 각종 프로세서, 프로그램 정보 그리고 하드웨어적인 정보들이 저장된다. 이 디렉토리는 가상 파일 시스템으로 가상 파일 /dev 와 마찬가지로 하드디스크 상에 물리적인 용량을 갖지 않는다. 즉 디렉토리에 존재하는 파일들은 실제 하드 디스크에 저장되지 않고 커널에 의해 메모리에 적재 된다. 디렉토리 안의 파일들은 현재의 시스템 설정을 보여 주는 것이다.
/proc/1
프로세스 변호가 1인 프로세스에 대한 정보를 저장하는 디렉토리이다. 다른 프로세스들도 자신의 고유한 프로세스 번호의 디렉토리를 가진다는 것을 의미한다.
/proc/cpuinfo
프로세서의 정보를 저장하고 있는 파일이다. cpu의 타입, 모델, 제조회사, 각종 성능 등의 정보를 제공하여 준다.
/proc/devices
현재 시스템 커널에 설정되어 있는 장치들에 대한 정보를 저장하고 있다. 파일 등의 정보로 모든 시스템의 장치 목록에 대한 정보를 얻을 수 있다.
/proc/dma
현재 시스템에서 사용하고 있는 DMA 채널에 대한 정보를 저장하고 있다.
/proc/filesystem
시스템에 설정되어 있는 파일 시스템에 대한 정보를 저장하고 있는 파일이다.
/proc/interrupts
현재 사용중인 인터럽트와 인터럽트의 사용량에 대한 정보를 저장하고 있는 파일이다.
/proc/ioports
현재 사용중인 I/O 포트에 대한 정보를 저장하고 있는 파일이다.
/proc/kcore
현재 시스템에서 사용중인 메모리의 실제 이미지이다. 이 파일은 실제 메모리의 내용을 모두 가진 것처럼 보이지만 프로그램이 필요로 하는 부분의 이미지만을 필요할 때 만들어 제공한다.
/proc/kmsg
커널에 의해서 출력되는 메세지들을 저장하고 있는 파일이다. 이것은 또한 syslog 파일에도 저장된다.
/proc/loadavg
현재 시스템의 평균 부하량(Load Average)에 대한 정보를 저장하고 있는 파일이다. 이 파일을 통해서 시스템이 현재 수행해야 하는 일이 얼마나 많은지를 알려주는 3가지 지표에 대한 정보를 얻을 수 있다.
/proc/ksyms
시스템 커널이 사용하고 있는 심볼들에 대한 정보를 저장하고 있는 파일이다.
/proc/meminfo
현재 시스템이 사용중인 메모리의 사용량을 저장하고 있는 파일이다. /proc/meminfo에서 실제 메모리는 물론 가상 메모리에 대한 저보도 얻을 수 있다.
/proc/self
이 디렉토리를 보고 있는 프로그램 자신의 프로세스 디렉토리로 링크되어 있다. 만약 서로 다른 2개의 프로세스가 /proc 디렉토리를 보고 있다면 두 프로세스는 서로 다른 링크를 보게 된다. 이를 통해서 프로그램들이 자신의 프로세스 디렉토리를 쉽게 찾을 수 있다.
/proc/stat
시스템의 현재 상태에 대한 다양한 정보를 저장하고 있는 파일이다.
/proc/uptime
시스템이 얼마나 오래 동작했는지에 대한 정보를 저장하고 있는 파일이다.
/proc/version
시스템이 현재 사용중인 커널 버전에 대한 정보를 저장하고 있는 파일이다.
/var
시스템에서 사요되는 동적인 파일들이 저장된다. 각종 시스템 로그 파일, 사용자 로그인에 대한 보안기록, 메일서버를 운영한다면 사용자들에게 전송된 메일들을 임시로 저장한다.
/var/cache
포맷된 매뉴얼 페이지들이 잠시 대기(cache)하기 위한 디렉토리이다.
/var/lib
시스템이 동작하면서 계속 수정되고 변경되는 파일들을 위한 디렉토리이다.
/var/local
/usr/local 디렉토리에 설치된 프로그램들의 각종 데이터들이 저장되는 디렉토리이다.
/var/lock
잠금 파일들이 저장되는 디렉토리이다. 프로그램들이 특정한 장치나 파일들을 프로그램 자신이 독점적으로 사용하려 할 때 /var/lock 디렉토리에 잠금 파일을 만들어 사용하게 된다. 그렇기 때문에 다른 프로그램들은 장치나 파일을 사용하기 전에 우선 이 디렉토리의 내용을 조사하여 해당 장치나 파일들이 사용중인지 확인하게 된다.
/var/log
프로그램들의 로그 파일들이 저장되는 디렉토리이다. 이 디렉토리에 wtmp파일과 login 파일과 messages 파일은 syslog의 로그 파일이다. wtmp는 시스템의 모든 사용자 로그인과 로그 아웃에 대한 정보를 저장하고 있는 파일이고, messages는 커널과 시스템의 모든 출력 메세지를 저장하고 있는 파일이다. /var/log 안의 파일들은 시스템의 사용량에 따라 그 크기가 무한대로 증가할 수 있으므로 정기적으로 파일들을 삭제하는 등 디렉토리 관리가 필요하다.
/var/run
시스템의 현재 정보들을 저장하고 있는 디렉토리앋. /var/run/xinetd.pid 파일의 경우 현재 사용중인 xinetd 데몬의 프로세스 번호를 저장하고 있다.
/var/spool
메일이나 뉴스, 프린터 큐 등과 같은 시스템상에서 대기 상태에 있는 작업들을 위한 디렉토리이다. 각각의 대기 작업들은 모두 /var/spool 아래 고유의 디렉토리에 위치하게 된다. 예를 들어 시스템의 계정 사용자들의 메일은 /var/spool/mail 에 저장된다.
/var/tmp
/tmp에 저장된 임시 파일들 중에 오래 보관되어야 할 임시 파일들이 저장되는 디렉토리이다.
/tmp
이름에도 알 수 있듯이 임시 파일들을 위한 디렉토리이다.
/root
시스템 관리자의 홈 디렉토리이다.
* 리눅스 디렉토리별 구조
/
|- bin : 일반 사용자들을 위한 명령어들이 있다.
|- boot : 부트로드와 부팅을 위한 파일들이 있다.
|- dev : 장치 파일들이 있다.
| |- hda : 마스터 IDE
| |- hdb : 슬레이브 IDE
| |- sda : SCSI or S-ATA
| |- cdrom : cdrom
| |- tty0 : 첫번째 가상 콘솔
| |- ...
|- etc : 시스템 혹은 프로그램들의 환경설정 파일들이 있다.
| |- fstab : 파일시스템 관리
| |- group : 유저 그룹 관리
| |- inittab : init 관리
| |- passwd : 유저 관리
| |- services : 포트 정보 관리
| |- issue : 로그인 메세지 관리
| |- sysconfig
| | i18n : 시스템 언어 설정
| | iptables : 방화벽 설정
| |- network-scripts
| ifcfg-eth0 : 네트워크 카드 설정
|- home : 사용자들의 홈 디렉토리 존재
|- lib : 공유 라이브러리와 커널 모듈이 있다.
|- lost+found : 부팅 시 파일 시스템에 문제가 생길 경우 fsck 명령어로 복구할 때 사용되는 디렉토리
|- media : 이동식 디스크가 마운트 되는 곳이다.
|- mnt : 파일시스템이 임시로 마운트 되는 곳이다.
|- misc :
|- net :
|- opt : 애드온 소프트웨어를 설치 할 수 있도록 만들어진 디렉토리
|- proc : 실행중인 프로세스의 정보와 CPU, Memomry 등의 시스템 정보가 가상의 파일로 저장된다.
| | cpuinfo : cpu 정보
| | devices : 현재 커널에 설정되어 있는 파일시스템 목록
| | dma : 현재 사용중인 DMA 채널
| | filesystems : 현재 커널에 설정되어 있는 파일 시스템 목록
| | interrupts : 현재 사용중인 인터럽트에 대한 정보
| | ioports : 현재 사용중인 I/O 포트 정보
| | kmsg : 커널에 출력하는 메시지
| | kallsyms : 커널에 사용하는 심벌표
| | loadavg : 시스템의 평균 부하량
| | meminfo : 메모리정보
| | modules : 현재 사용중인 커널 모듈 목록
| | stat : 시스템 상태
| | uptime : 시스템이 켜져있는 시간
| | version : 현재 커널의 버전
| |- net : 네트워크 관련 정보를 볼 수 있는 파일들이 있는 디렉토리
|- root : root 계정의 홈 디렉토리
|- sbin : 시스템 관리 명령어들이 있다.
| ifconfig : 네트워크 설정/확인
| reboot : 시스템 재부팅
| shutdown : 시스템 종료
| mount : 장치 마운트
| fsck : 디스크 점검
| mkfs : 디스크 포맷
| iptables : 방화벽 설정
|- selinux
|- srv : 시스템이 제공하는 서비스를 위한 파일들이 있다. (ftp, http, cvs 등의 데이터가 있다.)
|- sys : 시스템이 필요로 하는 파일들이 들어 있다.
|- tmp : 임시파일들이 저장되는 곳이다.
|- usr : 일반 사용자들을 위한 대부분의 프로그램들이 위치한다.
| |- bin : 응용프로그램의 실행파일들이 있다.
| |- include : C 언어의 헤더 파일이 있다.
| |- lib : /usr/bin, /usr/sbin에 있는 실행 파일들을 위한 라이브러리들이 있다.
| |- local : 대부분의 일반적인 프로그램은 이곳에 설치한다.
| |- share - man : 매뉴얼 페이지를 저장하고 있는 곳이다.
| |- sbin : 시스템 관리를 위한 명령어들이 있다.
| |- src : 대부분의 RPM, 소스파일들을 이곳에 저장하여 사용한다.
| |- X11R6 : X window 시스템에 관련된 파일이 있다.
|- var : 시스템 운영중 자주 변경되는 파일들이 있다.
| |- log : 각종 로그들이 저장된다.
'OS' 카테고리의 다른 글
dllhost.exe란? (0) | 2020.10.28 |
---|---|
Change the Ubuntu repository (0) | 2020.10.28 |
리눅스 명령어 다이어그램 (0) | 2020.10.28 |
Fuzzing 이란 (0) | 2020.10.26 |
[윈도우10] 프로그램 강제 삭제, 안지워지는 프로그램 완전 삭제하기 (0) | 2020.10.26 |