본문 바로가기

Stupid Computer/5. Linux

[리눅스]쉘(Shell)이란?, 리눅스 디렉토리의 구성 및 설명

출처 : http://blog.naver.com/bbaroo27?Redirect=Log&logNo=100182061959


컴퓨터 리소스에게 직접적으로 명령을 내리는 커널이 있고 이 있으며 응용프로그램이 있다.

그렇다면 여기서 은 무엇인가?

(Shell)은 조개껍데기라는 뜻이 있으며, OS를 둘러싸고 있는 껍질과 유사하다. 정리하자면 OS와

사용자에게 의사소통을 가능하게 해주는 기능을 담당한다.

쉽게 예를 들어 생각하면 윈도우의 MS-DOS창을 생각하면 된다.

(여기서 커널이랑 의 차이점이라 하면 커널은 바로 하드웨어의 리소스를 관리하며 은 커널에게

명령을 내리게 하는 기능을 가지고 있다. 커널은 기계어 등 어려운 언어를 가지고 있으므로 바로 쓰기 힘들기에 을 이용하여 커널을 컨트롤 할 수 있게 만들어 놓은 것이다.)


 

일반적으로 Ctrl+Alt+F2를 누르면 나오게 되는 화면으로

앞의 설명과 같이 F1~F7번 중 하나의 가상콘솔을 사용하면 된다.

root의 아이디와 비밀번호를 치게 되면 접속이 가능한데 여기서 잠시 리눅스에서 자주 쓰이는

MD5에 대해 간략하게 설명하겠다.

 

MD5는 리눅스에 쓰이는 암호방식중 하나이며 암호화는 가능하나 복호화가 불가능한 

해쉬 알고리즘으로 제작되어있다 

만약 Linux의 user로 접속 시 아이디와 암호를 입력하면 ID에 해당하는 Password와 비교를 하여 

올바른지 아닌지 판단 후 접속을 하게 되는데, 입력한 Password와 헤쉬값으로 변환시켜 놓은 

user 의 Password와 비교 후 동일하면 접속시켜 해당 ID의 권한을 준다. 

(ID와 Password 관련 파일은 각각 /etc/password 와 /etc/shadow파일에 존재되어있다)

 

의 기능은 응용 프로그램과 커널과의 의사소통 역할, 즉 유저와 커널 사이의 의사소통 역할을 한다. 

하드웨어의 자원을 이용하는 커널은 일반적으로 컨트롤 하기 힘들기 때문에 

중간에서 쉘이 번역가처럼 쉽게 만들어 주는 역할을 하는 것이다. 

 

 파이프(|)는 명령어 실행결과를 다음 명령어 실행의 입력값으로 연결해주는 것을 말한다. 

(주로 find 명령어와 grep명령어를 같이 사용할 때 사용한다.) 

 

리다이렉션은 출력의 방향을 바꾸는 것을 의미한다.

예를들어 명령어를 치고 그 결과 메세지를  창인 모니터에 띄우는게 아니라 파일 형식으로 띄우게 바꾸는것을 말한다.  

 

다음은 윈도우의 C:라 할 수 있는 /의 중요 하위 디렉토리에 대해 정리해보겠다.

 

/는 루트 디렉토리다. 이 디렉토리를 기준으로 모든 디렉토리가 생성되며, 다른 파티션의 연결점이다.-> 윈도우의 C:라 생각하면 편하다. 최상위 경로이다.

 

/bin 은 PATH의 경로이다. 시스템을 사용하기 위한 기본적인 명령어들이 포함되어 있다.

 

/boot는 부팅에 필요한 커널과 부팅 떄 필요한 핵심파일들이 존재하는 곳이다.

 

/dev는 장치 파일이 위치하며, 하드웨어를 교체할때 들어가야 할 곳이다.

 

/etc는 윈도우의 제어판이랑 유사하며, 시스템이나 사용자 관리를 위한 파일 관리자용 명령어들이

있다. 그 외에 /etc/skel에는 .bash_profile과 .bashrc파일들이 있는데 두 파일은 환경설정 파일로 설치시 기본적인 셋팅이 되어있는 기본값이 들어가 있으며, 만약 유저를 만들 시 유저의 초기값이 들어가 있는 곳이다.

(참고로 .로 시작하는 파일은 숨김 파일로, 볼떄 ls -a 명령어를 사용)

 

/lib는 시스템 운영 및 프로그램 구동할 떄 필요한 공유 라이브러리가 있는 곳이다. 만약 책을 보고

그대로 따라 쳤는데 잘 안된다 싶으면 이 디렉토리에 들어가 필요한 라이브러리를 업데이트 해준다.

 

/root는 시스템 관리자 디렉토리이며 사용자의 홈 디렉토리이다.

 

/mnt는 외부입력장치 (CD-ROM, Floppy)장치 설정이지만 요즘 많이 안쓰는 추세이다.

 

/proc는 process의 약자로 실행중인 프로세서를 파일로 제작하여 관리하는곳이다. 즉 안에 파일로 된 프로세서를 지우면 그 프로세스가 종료된다. 프로그램을 구동하게 되면 /proc에 해당되는 프로세서의 PID번호에 따라 디렉토리를 생성해여 프로세스의 진행상황을 추적하고 관리하는 곳이다.

문자로 이루어진 이름의 디렉토리 파일은 시스템 및 커널정보이며

숫자로 이루어진 이름의 디렉토리는 현재 실행중인 프로세스의 정보이다.

윈도우에서는 작업관리자로 표시를 하지만 리눅스는 굳이 파일로 만드는 걸 좋아하여 가상의 파일을 만들어 관리한다.

(프로세스는 실행중인 상태이며, 프로그램은 설치상태인 것이다.)

 

/sbin는 root(관리자)만 이용 가능한 명령어를 모아 둔 곳이다.

관리자가 사용하는 시스템 운영에 필요한 명령어가 존재하는 디렉토리이며 fdisk, reboot등이 있다.

 

/tmp는 프로세스 생성 과정에서 발생되는 임시 파일을 모아두는 디렉토리로 안에 내용이 삭제되거나 해도 크게 영향을 주지 않는 곳이다.

 

/usr는 프로그램을 설치할 때 패치지에 포함된 대부분의 파일이 이곳에 설치된다.

윈도우의 programs file이라 보면 된다.

 

/var는 서버파일, 로그파일이 존재하는 곳으로 만약 서버로 리눅스를 이용할 시 다른 접속자들은

var에서만 놀게 되는 서버쪽 디렉토리다.

내용이 자주 변하는 가변 자료가 저장되어 있는곳이며, 시스템 운영할 떄 발생하는 로그,

메일 송/수신할떄 임시로 저장되는 스풀, 프린터로 전송하기 위해 임시로 저장되는 프린트 스풀

데이터, 레드햇 배보판에서 패치지로 제공하는 아파치 웹 서버 관련 자료 MySQL의 데이터베이스,

 FTP의 최상위 디렉토리 등 다양한 서버 자료들이 존재하는 곳으로 해커들이나 정보보안쪽

사람들이 가장 중요시하는 디렉토리다. 

 

 리눅스를 서버로 사용하는 이유는 무료라는 점도 있지만 

다중 사용자, 다중 작업 시스템에 최적화 되어 있기 떄문이다. 

즉. 하나의 PC로 여러명이 작업을 하기에 최적화된 시스템을 가지고 있다는 것이다. 

ROOT가 계정을 생성해 권한을 주고, 각각의 user들이 사용자만의 공간인 home디렉토리안에서 

작업을 수행하므로써 여러명의 작업자가 동시에 작업이 가능하다는 장점 때문이다.