이제 정말 본격적으로 설치한 하드디스크를 사용할 수 있도록 앞선 포스팅에서 배운 명령어를 통해 구성하도록 하겠습니다. 


# ls -l /dev/sd* 


로 설치된 하드디스크를 확인합니다. /dev/sdc/ 로 설치된 것을 확인할 수 있습니다.



# fdisk /dev/sdc 


로 파티셔닝을 시작합니다.



처음에 명령어를 파티셔닝 명령어를 모르겠다면 m 을 입력해서 파티셔닝 명령들을 확인할 수 있습니다.



여러가지 명령들이 있습니다. 읽어보면 무슨 내용인지 확인할 수 있고 당장은 새로운 파티셔닝을 해야하므로 n 을 입력합니다.



다음으로 p(주요파티션) e(확장파티션) 을 구분해야하는데 기본적으로 주요파티션으로 사용하므로 p를 입력합니다. 아무것도 입력하지 않은 상태로 엔터를 치면 default설정이 되므로 그렇게 하셔도 됩니다. 



파티셔닝이 되고 파티셔닝이 됬는지 확인하기 위해 파티셔닝 명령어 p (print)를 입력하면 파티셔닝된 상태를 확인할 수 잇습니다. 


덧붙이자면 시스템은 Linux고 시스템 Id는 83입니다. Id는 16진수로 표현됩니다. 



이제 w (write)를 입력해서 파티셔닝된 사항을 저장해주면 파티셔닝은 완료됩니다. 



이제 다시 


# ls -l /dev/sd*


로 확인해보면 파티셔닝된 /dev/sdc1 을 확인할 수 있습니다. 앞으로는 이 파티셔닝된 부분을 가지고 구성이 진행됩니다. 



# mkfs.ext4 /dev/sdc1


으로 파티셔닝된 하드를 포맷(시스템파일 생성)을 진행해줍니다. 파일타입은 센토스에 가장 호환이 되는 ext4 형식으로 합니다. 



용량이 1GB밖에 되지 않아 금방됩니다


# mkdir /mydata


로 마운트시킬 폴더를 생성해줍니다. /mydata는 임의로 지정한 이름이므로 아무렇게나 지정해도 상관없습니다.



# mount /dev/sdc1 /mydata


설치한 하드는 마운트를 시켜야 사용이 되므로 필수적인 부분입니다. 



# df


명령으로 현재 /dev/sdc1 이 /mydata에 마운트된 것을 확인할 수 있습니다.



※ 주의할점은 기존에 /dev/sdb1도 /mydata에 마운트 시켜 놓았었는데 추가적으로 /dev/sdc1 을 마운트시키니까 /mydata에는 입력받은 /dev/sdc1이 마운트되었습니다. 따라서 하드를 같은 슬롯에 마운트시킬 수 없으므로 따로 폴더를 생성해서 한 폴더에 하나의 디스크만 마운트시켜야 합니다. 

따라서 저는 따로 /mydata1을 생성해서 /dev/sdc1을 마운트시켜 주었습니다.



이제 부팅시에도 마운트가 지속될 수 있도록


# gedit /etc/fstab 


을 편집해줍니다. vi로 편집해도 무방합니다. 



#

#

#

.

.

주석부분은 무시하고 가장 아랫줄에


마운트시킬하드    마운트시킬폴더    파일형식(포맷방식)    defaults    문제시덤프해서수정여부(0 or 1)   디스크검사순서(0, 1, 2 - 2는 첫번째 다음)   

/dev/sdc1            /mydata1                ext4                defaults            0                                    0


을 입력해줍니다. 



리눅스에는 기본적으로 gnome window를 GUI 환경으로 설정해서 설치할 수 있지만 윈도우와 비슷한 KDE데스크탑 환경도 설치할 수 있습니다. 초기 리눅스 설치시에 설정해주면 되는 부분인데요. KDE데스크탑과 gnome 데스크탑의 가장 큰 차이는 설정의 정도에 있겠습니다. gnome은 가벼운 설정을 추구하는 반면 KDE는 윈도우와 같이 이것저것 설정할 수 있다는 것이죠. gnome은 왜 설정못하냐 라고 물으실 수도 있겠습니다. gnome에서도 역시 설정 가능한 부분은 KDE도 마찬가지지만 리눅스에서 gnome 데스크탑을 활용하신다면 그래도 조금은 가벼운 환경을 추구한다고 보기 때문입니다.(사족입니다...>_<)




이번 포스팅에서는 Client(클라이언트) 사용자가 이용할 수 있도록 KDE데스크탑을 설치해보도록 하겠습니다. 


가장 먼저 설치할 KDE데스크탑 그룹패키지를 확인합니다.


$ yum grouplist | grep KDE



대소문자를 반드시 구분해서 KDE데스크탑 그룹패키지를 설치해줍니다. 


$ su -c 'yum -y groupinstall "KDE Plasma Workspaces"'



설치가 되고 있습니다. 컴퓨터의 사양에 따라 시간이 5~15분 정도 소요될 수 있습니다. 



설치가 완료되었습니다. 이제 KDE데스크탑으로 부팅하기만 하면 됩니다. 



만약 자동로그인이 되어있다면 전체설정>사용자>자동로그인 끔  으로 자동로그인을 해제해주셔야 합니다. 


$ reboot



리부트를 하고 접속화면이 뜨면 centos 를 눌러 비밀번호 입력화면을 띄웁니다. 그리고 로그인 버튼 옆에 설정버튼을 누르면 KDE Plasma 작업공간으로 설정을 변경하고 로그인할 수 있습니다. 



KDE데스크탑 작업환경으로 로그인되었습니다. 



개인적으로 그놈클래식으로 연습하다보니 익숙하지 않은 환경이네요 >_<



KDE데스크탑에서는 아래와 같은 화면을 확인해볼 수 있습니다. 



재부팅하게되면 이미 설정된 KDE Plasma 작업공간으로 부팅되므로 다시 그놈 클래식으로 설정해주어야 합니다. 






오늘은 어떻게 보면 가장 활용빈도가 낮을 수 있는 리눅스 센토스 내에 존재하는 가상머신을 활용하는 방법에 대해 알아보려고 합니다.


센토스를 윈도우 상에서 구동할 때 멀티부팅을 하거나 Vmware를 사용해서 구동할 수 있는데 구동된 리눅스 센토스 내에서 또한번 가상머신을 이용해 윈도우 서버 2008을 구동해보려고 합니다. 


이번 포스팅에는 터미널을 사용하지 않습니다. 


1. 윈도우 상에서 cafe.naver.com/thisislinux 자료실에서 윈도우서버2008.iso 파일을 다운로드 받습니다. (센토스 내에서 인터넷 접속을 통해 받아도 상관업습니다.)


2. 받은 파일을 복사합니다.


3.센토스 다운로드 폴더로 붙여넣기 합니다.


4. 아래와 같이 복사된 윈도우 iso파일을 확인합니다.


5. 이제 프로그램 > 시스템도구 > 가상머신관리자 를 실행시킵니다.


6. 파일 > 새 가상머신 만들기 를 실행합니다.


7. 다음과 같은 화면이 나오면 로컬설치매체(ISO 이미지나 CDROM)을 선택하고 앞으로를 누릅니다.


8. 우측 하단에 로컬검색을 클릭합니다. 


9. 다운로드 폴더에 윈도우 iso 파일을 선택해줍니다.


10. 메모리는 1GB를 줍니다.


10-1. 사전에 메모리를 넉넉하게 설정하지 않았다면 vmware 설정에서 메모리를 용량을 늘려줍니다.


10-2. Processors 탭에서 Virtualize engine virtualize intel, CPU를 활성화 시켜줍니다.


11. 가상 머신이 차지할 용량을 설정하고 앞으로를 눌러줍니다. 전 8GB를 주었습니다.


12. 이제 이름을 win2008로 설정하고 '설치 전에 사용자 설정'을 체크한 후 완료를 누르면 설치가 시작됩니다. 


이렇게 하면 설치가 완료됩니다. 해당 설치는 컴퓨터의 성능에 따라 최소 10분에서 최대 1시간 이상도 걸릴 수 있다는 점 염두에 주시기 바랍니다.


오늘 포스팅은 센토스 리눅스 내에서 가상머신을 활용하는 방법에 대해 알아보았습니다. 


윈도우에서는 가상 머신을 기본으로 제공하지 않으나 리눅스에선 가상 머신을 기본적으로 제공하므로 유용하게 사용할 수 있을 것 같습니다.


다음에는 클라이언트 컴퓨터에 KDE 데스크톱을 추가설치하는 법에 대해 포스팅하도록 하겠습니다. 


04. file Directory & Permission (파일과 디렉터리의 소유와 허가권) 에서 다룬 내용이지만 내용이 나눠져 있어서 찾기가 어려워서 링크파일에 대해서만 따로 포스팅을 하려고 합니다.


파일의 링크(link)에는 하드링크(hard link)와 심볼릭 링크(symbolic link 또는 soft link 라고도 한다) 두 가지가 있습니다. 

하드 링크(Hard Link)는 windows에서 바로가기 아이콘의 개념과 비슷합니다. 


하드링크를 생성하면 "하드링크파일"만 하나 생성되며 같은 inode1을 사용합니다.


# ln 링크대상파일이름 링크파일이름


심볼릭 링크(Symbolic Link)를 생성하면 새로운 inode2를 만들고, 데이터는 원본파일을 연결하는 효과를 가진다. 


# ln -s 링크대상파일이름 링크파일이름


덧붙여 inode란 실제 데이터 파일의 정보를 나타내는 inode 구역에 저장되는 데이터인데 그냥 하나의 객체를 뜻한다고 생각하면 쉽다. 


inode1=inode1 but inode1≠inode2


다시말해 하드링크를 생성한 파일은 원본파일과 완전히 동일한 inode 정보를 가지게 되어 이 말인 즉슨 원본파일을 지워도 hard link 파일은 원본 파일의 데이터를 그대로 갖고 있기 때문에 실행이 된다는 말씀이다. 


하지만 바로가기라는 특성상 symbolic 링크가 더욱 일반적으로 쓰인다. (hard link는 무쓸모인가...)


# ls -il  or # ls -li    


파일리스트 맨 앞에 파일 색인번호를 표시한다. 이 명령어로 하드링크(hardlink) 파일과 소프트링크(softlink) 파일의 색인번호를 원본파일과 비교할 수 있다.


링크파일 생성에 [옵션]을 정리하면 다음과 같습니다.


# ln [옵션] 원본파일 대상파일(혹은 디렉터리)


--backup[=CONTROL] : 대상파일이 존재할 경우 백업파일을 만든 후 링크파일을 생성

-b : 링크파일 생성 시에 대상파일이 존재하면 백업파일을 만든 후 링크파일을 생성

-d : 디렉토리에 대한 하드링크생성. root 권한으로 수행하더라도 시스템의 권한제한으로 실패할 수도 있음. (-F / --directory = -d)

-f : 대상파일이 존재할 경우에 대상파일을 지우고 링크파일을 생성

-i : 대상파일이 존재할 경우에 대상파일을 지울지 확인 (--interactive)

-s : 심볼릭 링크파일 생성

-S : 백업파일을 생성할 때 원하는 접미사를 정할 수 있음

-t, --target-directory=DIRECTORY : 링크파일을 생성할 디렉토리를 지정함


링크 파일을 만들어서 테스트 해보시면서 연습하시길 바랍니다. 

센토스 리눅스를 설치하면 파이어폭스 웹브라우저(firefox web browser)는 자동으로 설치됩니다. 윈도우에서 internet explorer 처럼요. 


물론 자동업데이트를 설정할 수 있지만 첫 포스팅 01. Basic Server Setting (서버 기본 설정) 에서 저희는 업데이트를 자동으로 되지 않도록 설정해두었습니다.


따라서 파이어폭스를 자동업데이트를 시켜주지 않는다면 언젠가는 구버전이 되고 말겠죠. 따라서 파이어폭스를 최신 버전으로 업그레이드 해보도록 하겠습니다. 


먼저 파이어폭스 버전정보를 확인해봅니다. 


파이어폭스를 실행하고 오른쪽 목록 버튼을 클릭하고 빨간 박스로 표시해둔 파이어폭스 도움마로 들어갑니다.


파이어폭스는 터미널에서


# firefox 


로 실행가능합니다.



파이어폭스 도움말 창에서 맨 밑에있는 Firefox 정보 를 클릭합니다.



Mozilla Firefox 정보에서 파이어폭스 버전인 45.5.0 을 확인할 수 있습니다.



이제는 X윈도우로 간편하게 업데이트 하는 방법을 먼저 해보겠습니다.


파이어폭스 웹브라우저를 실행한 후 주소창에


http://www.mozilla.org/en-US


를 입력하여 접속한 후 Firefox 메뉴를 누릅니다.



Download Firefox 를 눌러서 버전 다운로드 페이지로 넘어갑니다.



중간쯤에 있는 Linux 64-bit 를 클릭합니다. 



다음과 같은 창이 뜨면 파일을 /root 에 저장해 줍니다.



(※ wget을 이용한 방법도 여기서부터 동일합니다.)


이제 터미널 창을 열어서


압축해제된 firefox 폴더를


# mv firefox /usr/local


로 이동시켜줍니다. 



# cd /usr/local/bin 


으로 이동 후 


# ln -s /usr/local/firefox/firefox . 


bin 폴더에 링크파일을 생성해줍니다.


이제


# firefox


로 확인해보면 파이어폭스 버전이 54.0으로 변경된 것을 확인할 수 있습니다. 




+++ 혹시 창이 아래와 같이 뜬다면 +++


메뉴바가 보이지 않는다면 주소표시줄 상단에 커서를 두고 오른쪽 마우스를 눌러 다음과 같이 메뉴를 소환한 다음


Menu Bar 


를 클릭합니다.



그리고 Help - About Firefox


로 버전 정보를 확인할 수도 있습니다.



다음 그림처럼 말이죠...! &_&;;






















윈도우에서는 자체적으로 이미지를 만들 수 있는 프로그램을 제공합니다. 제어판에서 말이죠.


리눅스 센토스에서도 마찬가지로 브라세로(Brasero)를 이용해서 이미지파일을 만들고 CD/DVD를 굽거나 할 수가 있습니다. 


가장 먼저 yum 명령으로 해당 패키지를 다운받아줘야 합니다.


# yum -y install brasero



Nothing to do?!!!


어라 이미 다운받아져 있네요 >_<;;



그렇다면 터미널 종류 후에 '프로그램 - 음악과 비디오 - 브라세로' 를 실행시켜 줍니다.



브라세로는 다음과 같이 생겼습니다. 


설명은 새프로젝트만들기에 옵션과 동일하므로 생략하도록 하겠습니다.



그리고 데이터프로젝트를 눌러서 이미지파일을 시험삼아 만들어봅시다.



노틸러스(파일)을 열고 홈폴더에서 test1,test2,test3 파일을 클릭합니다. 



선택한 파일 3개를 드래그 앤 드롭으로 브라세로에 떨궈줍니다. 



그리고 우측 하단에 굽기를 누르면 다음과 같이 이미지 파일의 위치를 지정할 수 있습니다.


일단 간단히 기본 설정되어 있는 /root 에 저장하도록 하겠습니다. 


이미지가 성공적으로 만들어졌구요...!



홈 폴더(/root)에 들어가서 확인해보면 다음과 같이 brasero.iso 라는 이미지 파일이 만들어졌음을 확인할 수 있습니다~:)



리눅스를 쓴다고 모든 분들이 텍스트모드에서 혹은 콘솔창을 띄워놓고 작업만 하시진 않을겁니다.


저처럼 윈도우의 자질구레한 기본프로그램들과 악성코드가 귀찮아서 오신 분들도 물론 있을 거구요.


하지만 윈도우만 쓰다가 리눅스를 쓰시는 분들은 어떤 프로그램이 윈도우 소프트웨어의 대체 프로그램이 될지 모릅니다.


리눅스에는 윈도우에서 사용되는 대부분의 소프트웨어를 대체할만큼의 많은 무료 소프트웨어(유틸리티)들을 제공합니다. 물론 이것들 모두 훌륭한 프로그램입니다.


이번 포스팅에서는 윈도우 탐색기와 비슷한 기능의 파일브라우저인 노틸러스의 활용법에 대해 알아보려고 합니다. 이번 포스팅은 쉬어간다는 느낌으로 보셔도 좋습니다. 


노틸러스라는 파일부라우저는 이미 설치되어 있습니다.


바로


프로그램 - 파일


이 노틸러스 유틸리티 입니다.




보조프로그램 - 파일


로도 확인이 가능합니다.



파일을 열면 홈폴더가 보입니다.


슈퍼유저의 홈폴더이므로 경로는 /root


입니다.



그렇다면 만일 일반유저로 접속했을 때 슈퍼유저의 홈폴더는 어디일까요


바로 컴퓨터 입니다.


/ 폴더에서


/root 폴더를 찾아 들어갈 수 있습니다.


일반유저로 들어가면 저 폴더그림에 x표시가 되어서 root폴더에 접근할 수 없다고 표시되어 있을겁니다~ 직접 확인해보세요.



노틸러스 파일브라우저는 윈도우 탐색기와 거의 동일하므로 기존 윈도우에서 쓰던 단축키들인 Ctrl+X, C, V 등과 새폴더 만들기, 이름바꾸기, 삭제, 등 모든 명령이 동일하게 실행된다고 생각하시면 됩니다. 


그렇다면 이번에는 png, gif, jpg 확장자를 실행시키는데 적용되어 있는 기본프로그램을 어디에서 확인하거나 변경할 수 있는지 알아보겠습니다.


프로그램 - 시스템도구 - 설정 



전체 설정 - 자세히보기



자세히보기 - 기본프로그램


에서 웹, 메일, 달력, 음악, 영상, 사진에 해당하는 기본프로그램을 변경할 수 있습니다. 





리눅스 센토스에서 GRUB(grand unified boot loader)은 부트로더 입니다. 


부트로더는 시스템에 전원이 들어오면 BIOS를 실행합니다. BIOS는 다음으로 하드웨어의 이상유무를 체크하고 시스템을 초기화하는 POST(power on self test)과정을 거칩니다. 이어서 부팅매체를 검색하고 부트 디스크에(부팅매체가 대부분의 경우 디스크이므로) 있는 MBR의 부트로더를 불러옵니다. 부트로더가 메모리에 불러들어지면 시스템 제어가 부트로더인 GRUB에게 넘어가게 되고 GRUB은 /boot/grub/grub.conf 파일을 읽어들여 부팅 커널을 결정하고 커널이미지를 불러옵니다. 그러면서 시스템 제어가 GRUB에서 커널로 넘어가게 됩니다. 커널은 swapper 프로세스를 실행하고 장치드라이브를 초기화한 다음 init프로세스를 실행합니다. init 프로세스를 실행하고 나면 /etc/inittab 파일을 읽어들여 스크립트를 차례대로 실행시키며 부팅을 완료합니다. 


GRUB 경로 : /etc/grub.conf, /boot/grub/grub.conf 


이제 부팅될 때의 이미지를 변경해보자. 


먼저 해당 테마를 변경할 수 있는 테마를 깔아야 한다.


루트권한으로 아래 명령을 실행합니다. 


$ su -c 'yum -y install grub2-starfield-theme' 


※ su -c는 명령어를 입력하는 루트권한 명령이다.



그리고 다시


$ rpm -qa | grep theme 


으로 설치된 grub2-starfield-theme 를 확인합니다. 



해당 grub2-starfield-theme.rpm 파일은 root 사용자의 폴더에 저장되어 있습니다. 


$ su - 


로 루트권한을 얻은 뒤 / 폴더로 이동해면 해당 파일이 설치됨을 확인할 수 있습니다. 




# yum -y localinstall grub2-starfield-theme.rpm


을 이용해서 로컬인스톨을 해줍니다. 




# gedit    /etc/default/grub


으로 이동합시다.



gedit 수정 창에서 맨 아랫줄에 아래화면에 음영처리된 부분을 입력해줍니다.


GRUB_THEME="/boot/grub2/themes/system/theme.txt"



해당 파일은 /boot/grub2/themes/system 경로에 존재하는데 해당폴더에 변경할 grub이미지가 들어있어야 합니다. 




앞선 포스팅의 http://gnome-look.org 에 접속해서 원하는 사진을 다운받아 줍니다. 



해당 파일은 다운로드 폴더에 저장되는데 해당 파일의 이름을 3.jpg 로 변경해 줍니다. 







그리고 3.jpg를 홈 폴더로 이동시켜 줍니다.




다시 터미널을 띄운 다음 3.jpg 파일을 /boot/grub2/themes/system 로 복사해줍니다.


일단 루트 권한을 얻은 다음


# mv /home/centos/3.jpg  /boot/grub2/themes/system 



그리고 vi 에디터를 이용해서 앞서 언급한 theme.txt 파일을 수정해주면 됩니다.


# vi /boot/grub2/themes/system/theme.txt


vi 에디터에서 행을 쉽게 보기위해 :set number 를 입력해서 34행을 찾습니다.



34행의 desktop-image 뒷부분에 "3.jpg" 라고 입력해 줘서 해당 이미지를 grub 부트이미지로 설정해줍니다.



# grub2-mkconfig -o /boot/grub2/grub.cfg 


로 재설정하면 설정이 완료됩니다. 



# reboot



예쁜 grub 배경화면이 설정되었습니다. 



네트워크 보안을 위해 SELinux 를 설정할 수 있는데 SELinux(Security Enhanced Linux)는 보안에 취약한 리눅스를 보호하기 위해 탄생했습니다.


SELinux는 강제(Enforcing), 허용(Permissive), 비활성(Disabled) 세가지 레벨로 구분할 수 있습니다.


강제는 시스템 보안에 영향을 미치는 기능이 감지되면 아예 그 기능이 작동되지 않도록 시스템에서 막아줌

허용은 시스템 보안에 영향을 미치는 기능이 감지되면 허용은 되지만 그 내용이 로그에 남음

비활성은 SElinux를 사용하지 않음


설정 파일인 /etc/sysconfig/selinux 를 편집하거나, 


# system-config-selinux 


명령으로 설정할 수 있습니다.





이번에는 센토스 리눅스에서 네트워크 관련된 개념과 명령어에 대해 포스팅하려고 합니다.


네트워크 관련 개념


--TCP/IP--


컴퓨터끼리 네트워크 상으로 의사소통을 하는 "프로토콜" 중 가장 널리 사용되는 프로토콜의 한 종류

인터넷 상의 모든 정보공유는 프로토콜을 기반으로 행해지고 있다. 


--호스트이름과 도메인이름--


호스트 이름은 각각의 컴퓨터에 지정된 이름

도메인 이름(또는 도메인 주소)는 jerrystle.tistory.com과 같은 형식


--IP주소--


각 컴퓨터의 랜카드에 부여되는 중복되지 않는 유일한 주소

4바이트로 이루어져 있으며, 각 자리는 0~255까지의 주소

eX) Server의 ip주소는 192.168.111.100


--네트워크주소--


같은 네트워크에 속해 있는 공통된 주소(ex. 192.168.111.0)


--브로드캐스트(Broadcast)주소--


내부 네트워크의 모든 컴퓨터가 듣게 되는 주소

현재 주소의 제일 끄자리를 255로 바꾼 주소(C클래스)


--게이트웨이(Gateway), 라우터(Router)--


라우터 = 게이트웨이

네트워크 간에 데이터를 전송하는 컴퓨터 또는 장비

Vmware의 게이트웨이 주소는 192.168.111.2로 고정


--넷마스트(Netmask) & 클래스(Class)--


넷마스크:네트워크의 규모를 결정(ex. 255.255.255.0-C클래스)


--DNS(Domain Name System) 서버(=네임서버) 주소--


URL을 해당 컴퓨터의 ip조솔 변환해 주는 서버

설정파일은 /etc/resolv.conf

Vmware를 사용하면 Vmware가 192.168.111.2번을 게이트웨이 및 DNS서버로, 

192.168.111.254를 DHCP서버로 설정함


--리눅스에서의 네트워크 장치이름--


CentOS 7은 랜카드를 ens32 또는 ens33으로 할당함

이전버전에서는 eth0, eth1 등으로 인식했음

Vmware에 CentOS를 설치할 경우에는 Vmware 버전에 따라서 완전히 다른 이름으로 인식할 수도 있음


네트워크 관련 명령어


nmtui


네트워크와 관련된 대부분의 작업을 이 명령어에서 수행

자동 IP주소 또는 고정 IP주소사용 결정

IP주소, 서브넷마스크, 게이트웨이 정보 입력

DNS정보 입력

네트워크 카드 드라이버 설정

네트워크 장치(ens32) 설정

텍스트 기반으로 작동함


systemctl <start/stop/restart/status> network


# systemctl restart network


네트워크의 설정을 변경한 후에, 변경된 내용을 시스템에 적용시키는 명령어


X윈도의 그래픽 모드를 사용하려면 "gnome-control-center network' 명령어를 사용


ifup <장치이름> 및 ifdown <장치이름> : 네트워크 장치를 on 또는 off (systemctl 보다 명령이 강력하다)

ifconfig <장치이름> : 장치의 ip주소 설정 정보를 출력

nslookup : DNS 서버의 작동을 테스트


# nslookup

> www.naver.com

Server : 192.168.111.2

Address : 192.168.111.2#53


Non-authoriatative answer:

www.naver.com canonical name = www.naver.com.nheos.com

Name : www.naver.com.nheos.com

Address : 202.179.177.22

Name : www.naver.com.nheos.com

Address : 202.179.177.21


nslookup 명령을 치면 해당 명령을 실행할 수 있게끔 > 표시가 나타고 해당 표시가 나타나면

DNS 를 확인할 주소를 입력하고 정상 작동을 확인할 수 있다.


ping <ip조소 또는 url> 

ping -c 3 <ip주소 또는 url> : 핑을 3번만 때려서 확인해라


/etc/sysconfig/network : 네트워크의 기본정보가 설정되어 있는 파일

/etc/sysconfig/network-scripts/ifcfg-ens32 : ens32장치에 설정된 네트워크 정보가 모두 들어 있는 파일


BOOTPROTO=none (자동으로 안받고 고정으로 ip를 받음, 자동은 DHCP)

IPADDR 은 IP주소

GATEWAY : 게이트웨이주소

DNS1 : 192.168.111.2 

ONBOOT="yes" (네트워크 사용여부)


/etc/resolv.conf : DNS 서버의 정보 및 호스트 이름이 들어 있는 파일

/etc/hosts : 현 컴퓨터의 호스트 이름 및 FQDN이 들어 있는 파일


KT에서 제공하는 DNS서버 : 168.126.63.1



시스템 설정하는 몇가지 명령어를 정리해보려한다. 


01. Basic server setting 포스팅에서 맨 마지막에 적어두었으나 활용을 위해 다시 정리한다.


시스템 설정(system setting)


날짜 및 설정 :  # system-config-date

네트워크설정 : # nmtui

방확벽설정 : # firewall-config

서비스설정 : # sntsysv

키보드설정 : # system-config-keyboard

언어 설정: # system-config-language

프린터설정 : # system-config-printer

사용자설정 : # system-config-users

네임서버설정 : # system-config-kickstart


위의 명령어를 터미널에서 실행하면 모두 GUI방식의 설정창이 열러서 손쉽게 설정을 변경할 수 있다. 


 # nmuti 


네트워크 설정창만 예시로 보여주자면


<첫 화면>


<연결 편집창>


<연결 활성화창>


<호스트 이름 설정창>

그리고 처음 리눅스를 설치하고 다른 포스팅을 보면서 왕초보일 때 헷갈리던 점이 있다면


#과 $의 구분이었다.


#은 root 사용자로 접속했을 때의 입력 표시상태이며


$은 일반 사용자로 접속했을 때의 입력 표시상태이다.


뭐 이런걸 다 알려주나 싶겠지만 정말 처음에는 # 뒤에 $을 다시 쓰고 명령어를 적어야 되는지 헷갈렸었다.(나만 그랬을 수도...)


그래서 혹시나 몰라서 적어둔다.


# 명령어

$ 명령어


는 권한만 다를 뿐이다. 


$에서 root권한으로 접속하려면 sudo 로 접속해서 root 비밀번호를 입력하거나


그저 관리자 권한을 이용만 하려면 $ su - 명령어 


형태로 사용해도 무방하다.

리눅스에서 파일 위치검색은 파일을 찾는 방법이다.


명령어를 사용해야 하기 때문에 명령어를 이해해야 한다.


구성은 다음과 같다.


find [경로] [옵션] [조건] [action] : 기본 파일 찾기

            [옵션] -name, -user(소유자), -newer(전,후), -perm(허가권), -size(크기)

                         [action] -print(디폴트), -exec(외부명령 실행)

ex 1) /etc 에서 확장자 conf 인 모든 파일을 찾아라


# find /etc/ -name "*.conf"  


ex 2 ) conf.txt로 conf 검색파일 전부 저장


# find /etc -name "*.conf" > conf.txt   


ex 3) /bin 에서 10k - 100k 파일을 찾아라


# find /bin -size +10k -size -100k  


ex 4) swp파일을 rm 명령으로 실행해라


# find /home -name "*.swp" -exec rm {} \; 


ex 5) /usr/bin 폴더에서 95k 이상 100k 이하 폴더를 찾아서 ls -l 명령을 실행해라


# find /usr/bin -size +95k -size -100k -exec ls -l {} \;



-exec 와 \; 은 외부 명령어의 시작과 끝을 표시한다. 


which 실행파일이름 : PATH에 설정된 디렉터리만 검색

whereis 실행파일이름 : 실행파일, 소스, man페이지 파일까지 검색

locate 파일이름 : 파일 목록 데이터베이스에서 검색 





이번에는 파일압축에 대해 정리하려고 한다. 


압축파일 확장명은 xz, bz2, gz, zip, Z 등이 있다.


xz나 bz2 압축률이 더 좋은데 왜냐하면 gzip 이 가장 먼저 생성된 압축형식이기 때문이다. 


따라서 압축률은 gzip<bz2<xz 순으로 좋다. 


파일 압축 관련 명령어


명령어 뒤에 -d를 붙이면 압축을 푸는 것이다.


xz : 확장명 xz로 압축을 하거나 풀어준다

ex) xz 파일명 ,  xz -d 파일명.xz


bzip2 : 확장명 bz2로 압축을 하거나 풀어준다. 

ex) bzip2 파일명,  bzip2 -d 파일명,bz2


bunzip2 : "bzip2 -d" 옵션과 동일한 명령어


gzip : 확장명 gz으로 압축을 하거나 풀어준다

ex) gzip 파일명, gzip -d 파일명.gz


gunzip : "gzip -d" 옵션과 동일한 명령어 


연습을 위해 


#ls -l > list.txt


로 ls 명령어를 실행한 목록을 list.txt 파일로 만들어보자


다음을 실행시키면 된다.



# ls


로 확인해보면 list.txt 파일을 확인할 수 있다.



압축 효율을 확인하기 위해 복사본을 만들어보자.


아래와 같이 


# cp list.txt file1.txt

# cp list.txt file2.txt

# cp list.txt file3.txt



를 입력하면 아래와 같이 file1.txt file2.txt file3.txt 이 생성되었음을 확인할 수 있다.



file 명이 들어간 파일만 정리해서 보면 다음과 같다. 



그리고 앞서 배운 명령어로 각 파일을 압축해보자. 


# xz file1.txt

# bzip file2.txt

# gzip file3.txt


압축을 하고 


# ls -l file* 


으로 확인하면 빨간글씨로 압축된 파일을 확인할 수 있다. 



그런데 분명 압축효율이 xz가 가장 좋을 줄 알았는데 336byte로 gz의 압축파일크기인 315보다 작다.


이 경우 단순한 파일을 압축했기 때문에 알고리즘 상의 차이로 gz이 일부 효율이 더 좋을 수 있지만


파일이 무거워지고 커질수록 xz의 효율은 좋아지기 때문에 일반적인 상황에서는 xz를 주로 사용한다고 염두해두면 된다. 


리눅스에서는 파일을 압축하는 개념이 원본파일을 그대로 압축하기 때문에 파일을 압축하고 나면 원본 파일이 사라진다.


위의 화면에서도 확인할 수 있듯이 기존의 file1.txt file2.txt file3.txt는 확인되지 않고 압축된 파일들만 나열이 된다.


그래서 별도로 파일을 묶는다는 개념이 존재한다. 

파일묶기


리눅스(유닉스)에서는 '파일 압축'과 '파일 묶기'는 원칙적으로 별개의 프로그램으로 수행

파일묶기의 명령어는 'tar'이며, 묶인 파일의 확장명도 'tar'이다. 


파일묶기명령(tar)


tar : 확장명 tar로 묶음 파일을 만들어 주거나 묶음을 풀어준다. 

동작 : c(묶기), x(풀기), t(경로확인)

옵션 : f(파일), v(과정보이기), J(tar+xz), z(tar+gzip), j(tar+bzip2)

ex) # tar cvf my.tar /etc/sysconfig/ >>> 묶기

    # tar cvfJ my.tar.xz /etc/sysconfig /etc/sysconfig >>> 묶기+xz로압축

    # tar xvf my.tar >>> tar 풀기

    # tar xvfJ my.tar.xz /etc/sysconfig/ >>> xz 압축 해제 + tar 풀기 


연습을 위해서 anaconda-ks.cfg 파일을 복사해서 test1, test2, test3 파일을 만들자.


아래와 같이 하면 된다.



복사가 완료되면


# tar cvf test.tar test1 test2 test3 


명령을 통해서 test1~3 파일을 test.tar 로 묶으면 된다.



# ls -l test*


로 확인을해보면 test.tar 으로 tar 확장자로 묶인 파일을 확인할 수 있다.



하지만 용량을 보면 엄청나게 늘어난 것을 확인할 수 있다. 왜냐하면 단지 파일을 묶기만 했기 때문인데


tar 명령어는 위에 언급했듯이 압축해서 파일을 묶을 수 있는 기능을 지원한다.


다시 연습을 위해 기존 test1~3 파일을 지우고


# rm -f test? 

test+1자리 파일들을 전부 지울 수 있다.



확인해보면 test.tar 파일만 살아있다.



일단 


# tar xvf test.tar 


으로 묶여있는 test.tar 파일을 풀어보자.



풀린 파일을


# ls -l test*


로 확인하자.



다시 test.tar 묶인 파일을 지우고


# tar cvfj test.tar.bz2 test1 test2 test3


로 bz2 확장자로 test1~3 파일들을 묶어보자. 



# ls -l test*


로 확인하면 bz2 확장자로 묶인 test.tar 파일을 확인할 수 있고 용량도 1695byte 로 줄어든 것을 확인할 수 있다. 



물론 앞서 말했듯이 xz 확장자를 이용한 tar cvfJ 명령을 통해서 압축이 가능하다. xz 는 같은 이름의 동일한 내용의 파일을 인식할 수 있는 알고리즘이 있다고 한다. (믿거나 말거나다...)



센토스 리눅스에서는 일반적으로 gedit과 vi 에디터라는 기본 텍스트모드로 사용가능한 에디터를 제공한다.


gedit은 쉽게 생각해서 windows의 notepad(메모장)과 동일하게 사용할 수 있다. 


터미널에서 


# gedit 


입력하면 아래와 같은 화면이 나온다. 메모장과 굉장히 동일하다. 



적고 싶은 명령이나 메모를 위의 화면에 입력하고 저장하고 빠져나오면 된다. 


하지만 vi 에디터는 visual 한 에디터라지만 생각보다 굉장히 비주얼적이지 않다. 


vi 에디터는 사용법을 별도로 익혀야 한다. 


vi 에디터를 통해 mytext1.txt 이라는 파일을 만들어보자.



다음과 같이 입력하면 mytext.txt 라는 파일이 생성되는데 여기서 주의할점은 그냥 mytext 라고만 적으면 자동으로 txt 파일을 생성하지는 않는다는 점이다. 원하는 확장자 명이 있다면 그 확장자명을 적어서 만들어주어야 한다. 



# vi mytext.txt


를 땅~ 쳐서 들어오면 위와 같은 화면이 열린다. 


이 화면에서는 바로 편집이 불가능하다.(키보드를 눌러도 입력이 되지 않는다)


편집을 위해서는 편집모드로 들어가야 되는데 키보드에서 i 를 눌러서 Insert Mode 라는 입력형 모드로 진입해야한다. 


i 를 누르면



위의 그림과 같이 -- INSERT -- 라는 문구가 생기면서 입력이 가능해진다. 


이제 아래와 같이 텍스트를 입력하고 파일을 저장해보자. 



vi 에디터에서는 gedit에서처럼 별도로 저장버튼이 있지 않기 때문에 명령어를 통해 저장해주어야 한다. 


일단 INSERT 모드를 빠져나와야 하므로 esc를 누르고 shift + ; 를 누른다( : 를 입력하라는 말이다)


<esc를 눌렀을 때>


< : 을 입력했을 떄>


다음과 같이 맨 아랫줄에 : 라는 표시가 뜨면 명령모드로 바뀐 것이다. 해당 명령모드에서 


wq 라고 입력하면 write and quit 로 저장한채로 vi 에디터에서 빠져나오게 된다. 


# ls 명령으로 확인해보면



아래와 같이 mytext.txt 파일이 생성된 것을 확인할 수 있다. 


# vi 


로만 입력을 한 다음 작성할 내용을 입력하고


esc

:

w myfile.txt

q


이런 형식으로 작성할 수도 있지만 앞서 정리했듯이 미리 파일이름을 지정하고 작성하는 방식이 더 편하므로 각자의 편의에 맞게 사용하시면 되겠다. 


똑같이 기본 작성해둔 파일을 수정할 수 도 있는데 


앞서 생성한 mytext.txt 파일을 수정하고 싶으면


# vi mytext.txt 


로 들어가면 기존에 저장된 mytext.txt 에 들어가서 작성한 내용을 수정하고 동일한 방식으로 저장하고 빠져나오면 된다. 


가끔 잘못입력해서 저장하지 않고 빠져나오려면


명령모드 ( : 를 입력하고 q! 를 입력해서 입력한 부분을 무시하고 빠져나올 수 있다.)


vi 에디터에서 파일을 작성하다가 오류로 인해 터미널이 종료되거나 문제가 생겨서 컴퓨터가 껴질 경우 


작성하던 파일은 임시파일로 저장된다. 


예를 들어 


# vi mytext.txt 


를 입력해서 해당 파일을 수정하다가 터미널을 강제 종료한 후 


다시 터미널을 열어 


# vi mytext.txt 


를 입력하면 다음과 같은 화면이 나온다. 



해당 화면이 뜨는 이유는 임시파일이 생성되었기 때문인데 space를 눌러 


입력화면으로 돌아간 다음 q로 무시하고 빠져나오면 된다. 


임시파일을 확인하려면 숨김옵션이 적용되어 있으므로


# ls -a


명령으로 모든 파일을 확인할 수 있는데 아래에 화면에서 .mytext.txt.swp 파일이 임시파일이다


swap 메모리에 저장된 파일인 것이다. 



해당 파일을 지우면 mytext.txt를 다시 열어도 임시파일이라는 경고메시지가 뜨지 않는다.


# rm .mytext.txt.swp

y


를 입력해서 임시파일을 지우면 아래와 같이 문제 없이 해당 파일이 열리게 된다. 



vi의 나머지 기능들을 요약하자면


명령모드 -> 입력모드


i : 현재 커서의 위치부터 입력

I : (대문자 i) 현재 커서 줄의 맨 앞에서부터 입력 

a :  현재 커서의 위치 다음칸부터 입력

A :  현재 커서 줄의 맨 마지막부터 입력


명령모드에서 커서를 이동


h : 커서를 왼쪽으로 한 칸이동 (← 과 동일하다)

j  : 커서를 아래로 한 칸 이동(↓ 와 동일하다)

k  : 커서를 위로 한 칸 이동(↑ 와 동일하다)

l  : 커서를 오른쪽으로 한 칸이동(→ 와 동일하다)


명령모드에서 삭제, 복사, 붙여넣기


x : 현재커서가 위치한 글자 삭제(delete 키와 동일)

X : 현재 커서가 위치한 앞 글자 삭제(backspace와 동일)

dd : 현재 커서의 행 삭제

숫자 dd : 현재 커서부터 숫자만큼의 행 삭제

yy : 현재 커서가 있는 행을 복사

숫자 yy : 현재 커서부터 숫자만큼의 행을 복사

p : 복사한 내용을 현재 행 이후에 붙여넣기

P : 복사한 내용을 현재 행 이전에 붙여넣기


명령모드에서 내용복구


u : 원래의 내용복구

nu : n단계까지의 명령을 복구


명령모드에서 찾기


/요 : 현재위치에서 아래방향으로 '요'라는 단어를 찾는다

?요 

/ : 단어찾기를 반복(위 -> 아래)

n : 단어찾기를 반복(아래-> 위)


명령모드에서 치환


:%s/기존문자열/새문자열


새로운 파일이름으로 저장하기


: w 새로운파일이름

: w %.new : 현재파일이름에 .new를 붙여서 새로운 파일로 저장


set number : vi 에디티 상에서 행 번호를 표시한다




 

기능들은 훨씬 더 많지만 위의 기능정도만 익혀두면 편집하는데 큰 문제는 없을 것이다. 








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


오늘은 센토스 리눅스에서 서버를 구축할 때 꼭 알아야 할 필수 개념들과 명령어를 알아보려고 합니다. 


파이프(pipe)


두 개의 프로그램을 연결해 주는 연결통로의 의미

"|" 문자를 사용함


# ls -l /etc/ | more


필터(filter)

필요한 것만 걸려 주는 명령어


grep, tail, wc, sort, grep, awk, sed 등

주로 파이프와 함께 사용


 # ps -ef | grep bash    

--> ps -ef 는 현재 작동중인 프로세스들을 보여주는 명령어, grep 은 bash에 관련된 명령어만 걸러주는 명령어


  # rpm -qa | grep gedit

 --> gedit 관련된 설치 파일만 골라서 보여주는 명령어


리다이렉션(redirection)

표준 입출력의 방향을 바꿔 줄 때 사용하는 명령어


# ls -l 의 결과를 파일로 만들고 싶을 때


# ls -l > file.txt 

라고 적으면 터미널에 해당 결과가 출력되는 게 아니라 file.txt 폴더에 결과가 저장된다. 


# ls -l >> file.txt 


라고 적으면 기존에 file.txt는 유지하고 밑에 덧붙여지게 되는데 

# ls -l > file.txt 라고 적으면 최근의 기록으로 해당 파일이 이미 존재하는 경우 덮어쓰게된다. 


# sort < file.txt > out.txt


sort 는 정렬을 시키는 명령어로 결국 file.txt를 정렬해서 out.txt 파일을 만들어내라는 명령이다. 


이제는 프로세스데몬에 대해서 이해할 차례다.


프로세스란 하드디스크에 저장된 실행코드(프로그램)가 메모리에 로딩되어 활성화된 것을 의미합니다. 

Window OS에서 작업관리자 창을 통해 현재 실행 중인 프로세스를 확인하는데 그 프로세스를 의미합니다. 


포그라운드 프로세스(foreground process)

실행을 하면 화면에 나타나서 사용자와 상호작용을 하는 프로세스로 대부분의 응용프로그램입니다.


백그라운드 프로세스(background process)

실행은 되었지만 화면에는 나타나지 않고 실행이 되는 프로세스로 백신이나 서버 데몬(서비스) 등과 같은 프로그램이 이에 해당합니다. 


각각의 프로세스는 고유한 프로세스 번호를 가집니다.

또한 현재 실행되고 있는 백그라운 프로세스에는 작업번호가 순차적으로 붙게 됩니다. 


# ps -ef 


명령을 통해 현재 실행중인 프로세스를 확인할 수 있으며 프로세스 번호는 실행할 때마다 랜덤된 번호를 부여하므로 프로세스 번호는 계속 바뀌게 된다. 


모든 프로세스는 부모(상위) 프로세스가 있으며 


# ps -ef | grep bash 


에서 


(picture) 

root 60637 60630 0 19:26 pts/0 00:00:00 bash 

에서 60637은 자식프로세스, 60630은 부모프로세스이다. 

자식을 부모에 종속되므로 자식프로세스를 킬(kill)하더라도 부모프로세스는 킬되지 않는다. 


명령어로는


ps

현재 프로세스의 상태를 확인하는 명령어


# ps -ef | grep process_name 


kill

프로세스를 강제로 종료하는 명령어


# kill -9 process_number

# kill process_number --> 역시 강제종료지만 -9 명령어보다 약하다


pstree

부모 프로세스와 자식 프로세스의 관계를 트리 형태로 보여준다


그렇다면 이제 배운 명령어를 가지고 실험을 해보자.

아래 명령어를 입력해서 무한 루프 y를 생성해보자. 중단하려면 Ctrl+C를 누르면 된다.


# yes 

^C(Ctrl+C)

# yes > /dev/null

# ps -ef | grep yes


grep --color=auto 프로세스는 반복되는 프로세스로 무시하면 된다.


# kill -9 64198


포그라운드 -> 백그라운드 -> 포그라운드


아래명령을 다시 실행시킨다음 Ctrl+Z로 일시중지 시키고 명령어 bg를 입력하면 포그라운드에서 돌던 프로세스가 백그라운드에서 돌기 시작한다. 

다시 포그라운드로 돌리려면 fg를 입력하면 된다.


# yes > /dev/null

^Z

[1] + Stopped  yes > /dev/null

# bg

# fg  process_number

^C



# gedit

# gedit  &  


명령어 뒤에 &를 넣으면 백그라운드로 돌린다는 의미이다. 해당 명령어는 명령어를 입력했을 때 포그라운드로 출력물이 보이는 경우에 효과적이다. 

그래서 보통 압축을 할때 (tar 명령) 포그라운드에서 진행 상황을 보지 않고 tar .... & 이라고 입력해서 백그라운드에서 압축을 실행시킬 수 있다. 



이번엔 서비스이다.

서비스는 시스템과 독자적으로 구동되어 제공하는 프로세스를 일컫는다. 예를 들자면 웹 서버(httpd), DB 서버(mysqld), FTP서버(vsftpd) 등이 있다.

실행 및 종료는 대게 


# systemctl start/stop/restart service_name


으로 사용한다

서비스의 실행 스크립트 파일은 /usr/lib/systemd/system/ 디렉터리에 'service_name.service' 라는 이름으로 확인할 수 있다. 예를 들어 웹 서비스는 httpd.service라는 이름의 파일로 존재한다. 


서비스는 항상 가동되지만 소켓이란 것이 있다. 소켓은 외부에서 특정 서비스를 요청할 경우에 systemd가 구동시킨다. 그리고 요청이 끝나면 소켓도 종료된다. 따라서 소켓으로 설정된 서비스를 요청할 때는 처음 연결되는 시간이 앞에서 설명한 서비스에 비교했을 때보다 약간 더 걸릴 수 있다. 왜냐하면 systemd가 서비스를 새로 구동하는 데 시간이 소요되기 때문이다. 이와 같은 소켓의 대표적인 예로 텔넷(Telnet)이 있다. 쉽게 말해 서비스는 항상 가동되어 있어 요청하면 바로 반응하고 소켓은 서비스를 새로 가동시켜야 하기 때문에 반응이 서비스에 비해 느리다. 

예전 centos 에서는 소켓과 비슷한 개념으로 xinetd 데몬이 주로 사용되었다고 하는데 centos 7에 들어와서 여전히 xinetd 데몬을 지원하긴 하지만 많은 서비스들이 xinetd 대신 소켓을 사용하는 추세이다. 


이렇게 오늘은 센토스 리눅스에서 서버를 구축할 때 알아뒀으면 하는 개념들과 명령어에 대해 정리해보았다.

필자도 공부중이지만 모르는 부분은 물어가면서 구글링해가면서 하나씩 배워가는 재미가 쏠쏠한 센토스 리눅스이다. 

+ Recent posts