11월, 2018의 게시물 표시

모듈의 개념과 커널 컴파일의 필요성

모듈 - 별도로 보관했다가 필요할 때마다 호출하여 사용되는 코드 커널은 다른 의미에서도 중요하다. 최근에 출시된 하드웨어를 장착했을 때 기존의 커널은 지원을 하지 않지만, 최신 커널은 지원할 수도 있기 때문이다. 이럴 때는 http://www.kernel.org에서 최신 커널 소스를 다운로드해서 커널을 업그레이드해야 한다. 그 외에도 보안 문제로 인해 커널을 업그레이드하는 경우도 있따.

서비스와 소켓

Daemon 이라고도 부르는 서비스는 서버 프로세스를 말한다. 즉, 서비스는 웹 서버, 네임 서버, DB 서버 등의 프로세스를 지칭한다. 또는 웹 서버 데몬, 네임 서버 데몬 등으로 부르기도 한다. 서비스는 눈에 보이지 않지만, 현재 시스템에서 동작 중인 프로세스이므로 백그라운드 프로세스의 일종이라고도 할 수 있다. 서비스는 평상시에도 늘 가동하는 서버 프로세스이며 , 소켓은 필요할 때만 작동하는 서버 프로세스를 말한다. 서비스와 소켓은 systemd 라고 부르는 서비스 매니저 프로그램 으로 작동시키거나 관리한다. CentOs 6.x까지는 최상의 프로세스인 init 프로세스가 서비스를 직접 관리하는 방식이었으나, CentOS 7부터 systemd가 서비스를 대부분 관리한다. 서비스 - 시스템과 독자적으로 구동되어 제공하는 프로세스 - 예를 들어, 웹서버(httpd), DB 서버(mysqld), FTP(vsftpd) 서버 등이 있다. - 실행 및 종료는 "systemctl start/stop/rerstart 서비스이름"으로 사용된다. 예를 들어 웹 서버는 "systemctl start httpd"로 구동한다. - 서비스의 실행 스크립트 파일은 /usr/lib/systemd/system/ 디렉터리에  '서비스이름.service'라는 이름으로 확인할 수 있다. 예를 들어 웹 서비스는 httpd.service라는 이름의 파일로 존재한다. 소켓 - 서비스는 항상 가동되지만, 소켓은 외부에서 특정 서비스를 요청할 경우에 systemd가 구동시킨다. 그리고 요청이 끝나면 소켓도 종료된다. - 소켓으로 설정된 서비스를 요청할 때는 처음 연결되는 시간이 앞에서 설명한 서비스에 비교했을 때 약간 더 걸릴 수 있다. 왜냐하면 systemd가 서비스를 새로 구동하는 데 시간이 소요되기 때문이다. 이와 같은 소켓의 대표적인 예로 텔넷 서버를 들 수 있다. - 소켓과 관련된 스크립트 파일은 /...

프로세스

프로세스 - 하드디스크에 저장된 실행 코드(프로그램)가, 메모리에 로딩되어 활성화된 것 - 예를 들어 웹 브라우저 프로그램인 크롬은 하드디스크의 어딘가에 저장되어 있을 것이다. 이렇게 하드디스크에 저장된 파일을 '프로그램'이라고 부른다. 크롬을 실행해서 화면에 나타난 상태(화면뿐만이 아니라, 메모리에 로딩되었다가 더 정확한 표현이다)를 '프로세스'라고 부른다. 포그라운드 프로세스 - Foreground Process는 방금 얘기한 크롬 등과 같이 실행하면 화면에 나타나서 사용자와 상호작용을 하는 프로세스를 말한다. 화면에서 실행되는 것이 보이는 프로세스라고 생각하면 된다. 백그라운드 프로세스 - Background Process는 실행은 되었지만, 화면에는 나타나지 않고 뒤에서 실행되는 프로세스를 말한다. 예를 들어 바이러스 백신, 서버 데몬 등은 눈에는 보이지 않지만 실행되는 것이다. 프로세스 번호 - 메모리에 로딩되어 활성화된 프로세스를 구분하려면 각각의 고유 번호가 필요하다. 이렇게 각각의 프로세스에 할당된 고유 번호를 프로세스 번호라 부른다. 프로세스 번호가 필요한 이유는 메모리에서 활성화된 프로세스를 메모리에서 강제로 제거하려면 프로세스 번호를 사용해야 하기 때문이다. 작업 번호 - 현재 실행되는 백그라운드 프로세스의 순차 번호 부모 프로세스와 자식 프로세스 - 모든 프로세스느 혼자서 독립적으로 실행되는 것이 아니라, 부모 프로세스의 하위에 종속되어 실행된다. 예를 들어 크롬 같은 경우에는 X 윈도 프로세스가 구동된 상태에서 실행되어야 한다. 따라서 X윈도는 크롬의 부모 프로세스이며, 크롬은 X윈도의 자식 프로세스라고 부른다. 여기서 크롬은 그냥 드고 X 윈도만 강제 종료하면 크롬은 계속 실행될까? 당연히 크롬도 종료된다. 즉, 부모 프로세스를 종료하면 그에 종속된 자식 프로세스도 모두 종료된다. 프로세스와 관련된 주요 명령어 ps - 현재 프로세스의 상태를 확인하는 명령어...

파이프, 필터, 리다이렉션

파이프(pipe) - 2개의 프로그램을 연결해주는 연결 통로를 의미한다. - | 문자를 사용한다. [ex] # ls -l /etc | more 필터 - 필요한 것만 걸러주는 명령어이다. - 주로 파이프와 같이 사용된다. [ex] # ps -ef | grep bash -> bash라는 글자가 들어간 프로세스만 출력 #rpm -qa | grep yum -> 설치된 패키지 중에서 'yum'이라는 글자가 들어간 패키지를 출력 리다이렉션 - 표준 입출력의 방향을 바꿔준다. - 표준 입력은 키보드, 표준 출력은 모니터이지만 이를 파일로 처리하고 싶을 때 주로 사용한다. [ex] # ls -l > list.tx # ls -l >> list.txt # sort < list.txt # sort < list.txt > out.txt

네트워크 보안을 위한 SELinux

-SELinux(Security Enhanced Linux)는 보안에 취약한 리눅스를 보호하기 위해 탄생했다. 시스템에서 보안에 영향을 미치는 서비스, 권한 등을 제어할 수 있다. -SELinux 환경에서는 해커가 어떤 경로로 시스템 침입에 성공하든, 침입한 경로의 애플리케이션 사용 이상의 권한을 얻지 못한다. 예를 들어 FTP 서버의 경로로 침입하면 FTP와 관련된 디렉토리나 파일 외에는 다른 서버에는 접근할 수 없으므로 해킹으로 인한 피해를 FTP 서버만으로 제한할 수 있다. 즉, 만약의 사태가 발생해도 피해를 최소화할 수 있다. -SELinux의 사용 여부는 enforcing, permissive, disabled라는 3가지 레벨을 지원한다. - 설정 파일은 /etc/sysconfig/selinux 파일이다. CentOS 7을 설치하면 기본적으로 enforcing으로 설정되어 있다. - enforcing : 시스템 보안에 영향을 미치는 기능이 감지되면, 그 기능이 작동되지 않도록 시스템에서 막아준다. - permissive : 시스템 보안에 영향을 미치는 기능이 감지되면 허용은 하되 사용 내용이 로그에 남고, 화면상에도 출력된다. - disabled : SELinux를 사용하지 않는 것이어서 당연히 보안에는 취약해진다.

DNS 서버

DNS 서버의 역할은 URL 이름을 IP 주소로 변경해주는 것이다. 예를 들어 웹 브라우저에서 http://www.naver.com을 입력한다면 바로 네이버 홈페이지로 접속되는 것이 아니라 /etc/resolv.conf 파일에 설정된 DNS 서버에게 www.naver.com URL의 IP 주소를 물어본다. DNS 서버가 해당 URL에 해당하는 IP 주소를 알려주면 그때서야 비로소 알아낸 IP 주소의 컴퓨터로 접속하는 것이다. 이러한 과정을 거치는 이유는 네트워크상에 있는 컴퓨터를 구분할 때 www.naver.com 같은 URL이 아닌 IP 주소가 중복되지 않는 유일한 식별자이기 때문이다. 결론적으로 DNS 서버가 고장 나면 www.naver.com 같은 URL을 사용해서 웹 서버에 접속할 수 없다는 사실을 기억하자.

네트워크 설정과 관련된 주요 파일

nmtui 명령어를 실행하고 나서 변경되는 관련 파일들이다. 중요한 파일들이므로 꼭 기억해두자. /etc/sysconfig/network - 네트워크의 기본 정보가 설정되어 있는 파일로 네트워크 사용 여부가 써 있다. /etc/sysconfig/network-scripts/ifcfg-ens32 - ens32 장치에 설정된 네트워크 정보가 모두 들어 있는 파일이다. /etc/resolv.conf - DNS 서버의 정보와 호스트 이름이 들어 있는 파일이다. /etc/hosts - 현 컴퓨터의 호스트 이름과 FQDN이 들어 있는 파일이다. nmtui 명령어를 사용하지 않아도, 위 4개 파일을 직접 편집하면 동일한 효과를 낼 수 있다. IP 주소, 게이트웨이 주소 등의 정보를 변경한 후에는 'systemctl restart network' 명령어를 실행해야 시스템에 적용되지만, /etc/resolv.conf의 nameserver 부분을 수정한 후에는 'systemctl restart network' 명령을 실행할 필요가 없다. 그 이유는 웹 브라우저나 'nslookup' 명령을 사용해 URL을 조회하는 경우에 실시간으로 /etc/resolv.conf 파일을 열어서 확인하기 때문이다.

중요한 네트워크 관련 명령어

nmtui Network Manager Text User Interface의 약자로, 네트워크와 관련된 작업 대부분은 이 명령어를 기반으로 삼아 실행할 수 있다. - 자동 IP 주소 또는 고정 IP 주소 사용 결정 - IP 주소, 서브넷 마스크, 게이트웨이 정보 입력 - DNS 정보 입력 - 네트워크 카드 드라이버 설정 - 네트워크 장치의 설정 - nmtui 명령어는 GNOME 그래픽 모드를 제공하지 않는다. systemctl start/stop/restart/status network - 네트워크 설정을 변경한 후에 변경된 내용을 시스템에 적용시키는 명령이다. - 'nmtui' 명령어를 실행한 후 또는 ifcfg-ens32 파일을 편집한 후에는, 꼭 'systemctl restart network' 명령어를 실행한다고 기억하면 된다. restart 옵션은 stop 옵션과 start 옵션이 합쳐진 것이다. status 옵션은 현재 작동 또는 정지 상태를 표시해준다. ifup 장치이름 - 해당 장치를 작동시켜 주는 명령어다. - 만약 네트워크 장치가 장착되었거나 작동하지 않으면 이 명령어로 네트워크 장치를 작동시킬 수 있다. 장치 이름에는 주로 ens32 또는 ens33이 사용된다. ifdown 장치이름 - ifup과 반대로 네트워크 장치를 끄는 명령어다. ifconfig 장치이름 - 해당 장차의 IP 주소와 관련된 정보를 출력해주는 명령어이다. nslookup - DNS 서버의 작동을 테스트하는 명령어이다. ping IP주소 또는 URL -해당 컴퓨터가 네트워크상에서 응답하는지를 테스트하는 간편한 명령어이다. 즉, 상대 컴퓨터가 아무런 이상 없이 작동하는지를 네트워크상에서 체크할 때 주로 사용된다.

국민연금

국민연금제도 - 젋었을 때 조금씩  보험료를 납부했다가 나이가 들어 일을 할 수 없게 되거나 예기치 못한 장애, 사망 등으로 소득이 없을 때 본인이나 그 유족에게 매달 연금을 지급함으로써 기본적인 생활을 할 수 있도록 하는 사회보장제도 국민연금 지역가입 대상 - 국내에 거주하는 18세 이상 60세 미만의 국민 중 공무원, 교직원 등 다른 공적연금 가입자와 국민연금 사업장가입자 및 그 배우자로서 소득이 없는 자 등을 제외한 사람입니다. 소득활동이 중단되었을 경우 연금보험료는? - 폐업, 사업 중단으로 소득이 없을 경우에는 납부예외 신청을 하여 납부예외기간 동안 연금보험료를 납부하지 않는다. - 소득이 있게 된 경우에는 소득이 있게 된 달의 다음 달 15일까지 소득신고를 하여야 합니다. 그렇지 않을 경우 향후 장애연금 또는 유족연금 사유가 발생하더라도 수급권에 제한을 받을 수 있습니다. 노령연금 - 노후소득보장을 위해 지급하는 연금으로 최소 10년 이상 가입시 지급 분할연금 - 이혼자를 위한 연금으로 일정 요건 충족 후 5년 이내 청구하면 지급 장애 및 유족연금 - 초진일 당시 일정한 가입기간이 있는 장애인, 사망일 당시 일정한 가입기간이 있는 분 또는 노령-장애 2급 이상의 연금을 받던 분의 유족에게 지급 연금 수습가능시기 - 69년 이후 출생 -> 노령연금 : 만65세, 조기노령연금 : 만 60세 군민연금 예상연금월액(현재가치 기준) - 월 납부액 : 9만원 -> 월 연금 수령액 : 17만원

네트워크 관련 설정과 명령어

TCP/IP - 컴퓨터끼리 네트워크상으로 의사소통을 하는 약속을 '프로토콜'이라고 부르는데, 프로토콜 중 가장 널리 사용되는 종류 중 하나다. - 통신의 전송/수신을 다루는 TCP와 데이터 통신을 다루는 IP로 구성된다. 호스트 이름과 도메인 이름 - 호스트 이름(host name)은 각각의 컴퓨터에 지정된 이름을 말한다. - 도메인 이름(또는 도메인 주소)domain name은 hanb.co.kr과 같은 형식으로 표기하며 kr은 한국, co는 회사, hanb는 단체/회사의 이름을 의미한다. 예를 들어 호스트 이름이 this이고, 도메인 이름이 hanbit.co.kr이라면 전체 이름은 this.hanbit.co.kr로 붙여서 부른다. 이를 FQDN(Fully Qualified Domain Name)이라고 부른다. 즉, 같은 회사(도메인)에서 this.hanbit.co.kr이라는 호스트는 유일하다. IP 주소 - 각 컴퓨터의 랜 카드는 네트워크 카드 또는 NIC(Network Interface Card)라고도 한다. - 네트워크에 연결된 모든 컴퓨터는 고유한 IP주소가 있으며, 이는 서로 다르기 때문에 특정 컴퓨터의 IP 주소를 알면, 그 컴퓨터가 전 세계 어디에 있든지 접속할 수 있다는 개념이다. - 모든 컴퓨터에서 자기 자신을 의미하는 IP주소는 127.0.0.1이다. 게이트웨이 - Gateway는 내부 네트워크를 외부로 연결하는 컴퓨터 또는 장비이다. - 게이트웨이 설정 명령어 형식   # route add default gw 게이트웨이주소 dev 장치이름   예를 들어, 게이트웨이가 192.168.111.254로 변경되었을 때는 다음과 같이 사용   # route add default gw 192.168.111.254 dev ens32 DNS 서버 주소 - 인터넷을 사용할 때 www.daum.net과 같은 URL을 해당 컴퓨터의 IP 주소로 변환해주는 서버 컴퓨터를 말한다. -...

at

cron은 주기적으로 반복되는 작업을 예약하는 것이지만, at 명령어는 일회성 작업을 예약하는 것이다. 즉, 예약해 놓으면 한 번만 실행되고 소멸된다. 예 at 3:00am tomorrow 내일 새벽 3시 at 11:00pm January 30 1월 30일 오후 11시 at now +1 hours 1시간 후

cron

cron - 주기적으로 반복되는 일을 자동으로 실행할 수 있도록 시스템 작업을 예약해 놓은 것 - cron과 관련된 데몬(서비스)은 crond이고, 관련 파일은 /etc/crontab이다. /etc/crontab 형식 분 시 일 월 요일 사용자 실행명령 분 : 0 ~ 59 시 : 0 ~ 23 일 : 1 ~ 31 월 : 1 ~ 12 요일 : 0 ~ 6, 요일은 0부터 일요일로 시작 사용자 : 명령을 실행할 사용자 실행 명령 : 그 시간에 실행할 명령 사용 예  00  05  1  *  *  root  cp -r /home /backup 매월 1일 새벽 5시 00분에 실행  cron은 주기적으로 실행할 내용을 디렉토리에 넣어 놓고 작동한다. /etc/cron.hourly/    시간별 /etc/cron.daily/      일별 /etc/cron.weekly/    주별 /etc/cron.monthly/  월별 01 * * * * root run-parts /etc/cron.hourly 매시간 1분에 /etc/cron.hourly 디렉토리 안에 있는 명령들을 자동으로 실행한다.

파일 묶기

리눅스(유닉스)에서는 '파일 압축'과 '파일 묶기'는 원칙적으로 별개의 프로그램으로 실행하도록 되어 있다. 물론 사용자 편의성을 위해 한 번에 할 수 있는 옵션도 제공한다. 파일 묶기의 명령어는 tar이며 묶어진 파일의 확장명도 tar이다. 사용 예 tar cvf my.tar /etc/sysconfig -> 묶기

파일 위치 검색

find 경로 옵션 action 옵션 -name, -user(소유자), -newer(전,후), -perm(허가권), -size(크기) action -print(기본 값), -exec(외부 명령 실행) 기본 사용 예 find /etc -name "*.conf" - '/etc' 디렉토리 하위에 확장명이 '.conf'인 파일 검색 find /home -user centos - '/home' 디렉토리 하위에 소유자가 'centos'인 파일 검색 find ~ -perm 644 - 현재 사용자의 홈 디렉토리 하위에 허가권이 644인 파일 검색 find /usr/bin -size +10k -size -100k - /usr/bin 디렉토리 하위에 파일 크기가 10KB~100KB인 파일 검색 고급 사용 예 find ~ -size 0k -exec ls -l {} \; - 현재 사용자의 홈 디렉토리 하위에 파일 크기가 0인 파일의 목록을 상세히 출력

YUM의 작동 방식과 설정 파일

- yum 명령어와 관련된 설정 파일은 /etc/yum.conf와 /etc/yum.repos.d/ 디렉토리가 있다. - /etc/repos.d/ : yum 명령어를 실행했을 때 인터넷에서 해당 패키지 파일을 검색하는 네트워크 주소가 들어있다. 'yum install 패키지이름'을 입력하면 작동하는 순서 1. yum install 입력 2. /etc/yum.repos.d/ 디렉토리의 repo 파일을 열어서 URL 주소 확인 3. 전체 패키지 목록 파일을 요청 4. 전체 패키지 목록 파일만 다운로드 5. 설치할 패키지와 관련된 패키지의 이름을 화면에 출력 6. y를 입력하면 설치에 필요한 패키지 파일을 요청함 7. 설치할 패키지 파일을 다운로드해서 자동 설치 /etc/yum.repos.d/CentOS-Base.repo [base] - 'CentOS 7 패키지' 저장소의 원본 패키지 명시 - CentOS 7이 출시되는 시점에서 제작된 '원본 패키지' 저장소의 위치 [updates] - 버그 수정이나 기능을 개선한 패키지 저장소 위치 명시 [extra] - 추가로 배포된 패키지 저장소 위치 명시 [centosplus] - 기존 패키지의 확장 기능을 제공하는 '추가 기능 패키지' 저장소 명시 gpgcheck - 패키지의 GPG 서명을 확일할지 여부를 1, 0 으로 지정할 수 있다. - 1로 지정할 경우 이어서 gpgkey 항목을 반드시 설정해야 한다. gkgkey - 아스키 GPG 키가 들어 있는 저장소의 URL이 적혀 있다.

YUM 고급 사용법

YUM 고급 사용법 패크지 그룹 설치 yum groupinstall "패키지그룹이름" - 패키지 그룹에 포함되는 패키지들을 통째로 설치할 때 사용한다. - 패키지 그룹의 종류는 "yum grouplist"으로 확인 가능하다. 패키지 리스트 확인 yum list 패키지이름 특정 파일이 속한 패키지 이름 확인 yum provides 파일이름 - 특정 파일이 어느 패키지에 들어 있는지를 확인할 수 있다. GPG 키 검사 생략 yum install --nogpgcheck rpm파일이름.rpm - CentOS 7에서 인증되지 않은 rpm 파일을 'yum localinstall'로 설치하면 설치되지 않는 경우도 있다. 그럴 경우 '--nogpgcheck' 옵션을 사용하면 gpg 키 인증을 생략하므로 설치할 수 있다. 기존 저장소 목록 지우기 yum clean all - 기존에 다운로드 한 패키지 목록을 지운 다음 yum install을 실행하면 새로 패키지 목록을 다운로드한다.

YUM

YUM - Yellowdog Updater Modified - rpm 패키지를 설치하는 편리한 도구 - rpm 명령어의 패키지 의존성 문제를 완전하게 해결해준다. - /etc/yum.repos.d/ 디렉토리에 Repository 저장소의 URL이 저장되어 있다. YUM의 기본 사용법 기본 설치 방법 yum -y install 패키지이름 - 사용자에게 yes/no를 묻는 부분에서 무조건 yes를 입력 rpm 파일 설치 방법 yum localinstall rpm파일이름.rpm - 현재 디렉토리의 rpm 파일에 의존성 문제가 있을 때 문제를 해결할 수 있는 파일을 인터넷에서 다운로드해서 설치해 준다. 업데이트 가능한 목록 보기 yum check-update - 시스템에 설치된 패키지 중에서 업데이트가 가능한 패키지의 목록을 출력한다. 업데이트 yum update 패키지이름 - 실제로 별로 사용할 일이 없다. - 'yum install 패키지이름'을 실행하면 기존에 설치되지 않은 패키지는 새로 설치하고, 이미 설치되어 있고 업데이트할 것이 없다면 그냥 실행을 끝낸다. - 아무런 옵션을 정하지 않고 'yum update'만 실행하면 업데이트 가능한 모든 패키지를 업데이트 해주므로 시간이 무척 오래 걸린다. 정보 확인 yum info 패키지이름 -패키지의 요약 정보를 보여준다.

RPM

RPM - Redhat Package Manager - Window의 setup.exe와 비슷하게 프로그램을 설치한 후에 바로 실행할 수 있는 설치 파일 - 파일의 확장명은 *.rpm이며, 이를 package라고 한다. rpm 파일의 형식 - 패키지이름-버전-릴리스번호.CentOS버전.아키텍처.rpm - 아키텍처 : 이 파일을 설치할 수 있는 CPU 자주 사용하는 RPM 명령어 옵션 설치 rpm -Uvh 패키지파일이름.rpm U(대문자) -> 기존에 패키지가 설치되지 않았다면 일반적인 설치를 하고, 기존에 패키지가 설치되어 있다면 업그레이드한다. v -> 설치 과정 확인 h -> 설치 진행 과정을 '#' 기호로 화면에 출력 삭제 rpm -e 패키지이름 e -> erase의 약자 이미 설치된 패키지 조회 rpm -qa 패키지이름 -> 시스템에 패키지가 설치되었는지 확인 rpm -qf 파일의절대경로 -> 이미 설치된 파일이 어느 패키지에 포함된 것인지 확인 rpm -ql 패키지이름 -> 특정 패키지에 어떤 파일들이 포함되었는지 확인 rpm -qi 패키지이름 -> 설치된 패키지의 상세 정보 아직 설치되지 않은 rpm 파일 조회 rpm -qlp 패키지파일이름.rpm -> 패키지 파일에 어떤 파일들이 포함되었는지 확인 rpm -qip 패키지파일이름.rpm -> 패키지 파일의 상세 정보

inode

inode - 리눅스/유닉스의 파일 시스템에서 사용하는 자료구조 - 파일이나 디렉토리의 여러 가지 정보가 있다. - 모든 파일이나 디렉토리는 각자 1개씩의 inode가 있으며, 각 inode에는 해당 파일의 소유권, 허가권, 파일 종류 등의 정보와 해당 파일의 실제 데이터가 위치한 주소도 포함되어 있다. 이러한 inode가 모여 있는 공간이 inode 블록이며, 일반적으로 전체 디스크 공간의 1% 정도를 차지한다. - 하드 링크를 생성하면 '하드 링크 파일'만 하나 생성되며 같은 inode를 사용하게 된다. - 심볼릭 링크를 생성하면 새로운 inode를 만들고, 데이터는 원본 파일과 연결되는 효과를 갖는다. Data 블록 - 실제 데이터가 저장되어 있는 디스크 공간으로 전체 디스크의 대부분을 차지한다. 명령어 하드 링크 생성 - ln 링크대상파일이름 링크파일이름 심볼릭 링크 생성 - ln -s 링크대상파일이름 링크파일이름