2014년 12월 30일 화요일

리눅스의 시작16_SAMBA서버

SAMBA 서버에 대해 알아보자!


1. 개요
 - 네트워크를 통해 파티션을 공유하도록 제공하는 서비스
 - 유닉스 시스템과 windows 시스템 간 파일 시스템 공유
 - 유닉스 계열의 거의 모든 시스템에서 제공
 - 시스템의 리소스를 직접 제공하는 서비스이므로 보안에 주의
  * 응용을 제공하는 것이 아니라 리소스를 제공하는 서비스

2. 서버 설치 
 - 설치 확인
 rpm -qa | grep samba 검색 후 "smb" 문자열로 출력 되는 것이 없다면
 yum -y install samba 로 설치

 - 설정
 * samba 서버는 파일을 공유하는 시스템으로 사용자 설정을 해줘야 함
 * samba 서버 내에 유저를 등록 후 그 유저를 samba 유저로 등록을 해줘야 함
 * 권한을 부여 해줄 수 있으며, 그 권한에 따라 사용자가 파일의 읽기, 수정 등이 가능

> 서버 상태 설정
 #/etc/rc.d/init.d/smb { start | restart | stop }
 : 시작, 재시작, 정지를 설정

> 사용자 등록 
 삼바 서버에 사용자가 등록되어 있다는 전제하에 사용자 등록 및 비밀번호 변경
  /usr/bin/smbpasswd [옵션] 유저명
  * 옵션
   -a : 유저 등록
   -x : 유저 삭제
   -d : 사용 중지
   -e : 재사용
  smb.conf 구문 검사 : /usr/bin/testparm
  NetBIOS 명 검색 : /usr/bin/nmblookup

 > /etc/samba/smb.conf 파일 내 설정 정보 및 옵션 정보
 workgroup
  * NT(Network) 도메인 명 지정
 netbios name
  * 네트워크 이름
  * 기본 값 : 호스트명
 hosts allow 
  * 허가 항목 지정(지정된 것만 접속 가능)
   ex) host allow = 1.1.1. EXCEPT 1.1.1.11 1.1.1.12 = 1.1.1.0 / 255.255.255.0
 hosts deny
  * 접속 거부 항목 지정(형식은 hosts allow와 동일)
 guest account
  * 윈도우의 guest 사용자 맵핑 계정 설정
  * nobody 또는 유닉스 계정으로 매핑 가능
  * 주석 처리하면 guest 접속 불가(권장)
 security
  * user, share, server(domain) 중 설정
   - security = user
   - passdb backend = tdbsam
  * 일부 예전 버전의 경우 user 설정 시 추가 설정 필요
   - encrypt passwords = yes
   - smb passwd file = /etc/samba/smbpasswd
 Link 디렉토리 접근
  보안 설정으로 인해 Symlink 디렉토리에 대한 기본 접근이 불허



 follow symlinks = yes
 wide links = yes
 unix extensions = no

 > 언어셋 지정(반드시 test 후 설정)
 unix charset = utf-8
 dos charset = cp949

 유닉스 계열의 언어셋과 클라이언트인 윈도즈 계열의 언어셋이 서로 다름으로 반드시 지정

comment = 여기는 공유 경로 : 주석 처리
path = /home/data : 공유 파일 경로 지정
browseable = no : 공유 정보를 제공 할 지 여부(yes/no), No로 설정하면 보이지는 않지만 사용 가능
writable = yes : 쓰기 권한 접근 허용 여부 (yes/no)
public = no : 누구에게나 접근을 허용 할 지 여부 (yes/no)
read only = yes : 읽기 전용 접근 여부 (yes/no)
valid users = fred : 접근 가능한 사용자 (읽기 or 쓰기에 대한 권한은 정해지지 않음)
write list = +staff : 공유 경로에서 쓰기 가능한 그룹 (과 유저)
Printable = no : 프린트 스풀 디렉토리로 사용할 것인지 여부 (yes/no)

> [homes]는 기본 이름으로 사용 : 각 계정의 홈 디렉토리로 사용
 [homes]
  comment = home Directories
  browseable = no
  writable = yes

 - 대괄호([])의 시작점부터 설정 정보가 정의되어 다시 대괄호([])가 시작되는 부분 전까지 smb.conf 에서 같은 구역으로 인식함

------------------------------------------------------------------------------------------------------------
 정리
1. yum으로 설치
2. smbpasswd -a 사용자명 명령어로 사용자 추가
 - 리눅스에서 보유중인 user만 사용자 추가 가능(useradd로 계정을 추가한 상태로 추가를 해야 함)
3. /etc/samba/smb.conf 파일 수정
 - 예제
[kangkoon]
 comment = kangkoon
 path = /home/kangkoon/
 read only = no
 writable = yes
 valid users = kangkoon
 public = no
 browseable = yes
 security = user
 create mask = 0765
 >> 공유폴더의 경로는 "/home/kangkoon/"이며, 읽고 쓰기가 가능하며, 접속 가능 유저는 kangkoon이고 공유 폴더가 모두에게 보여지며, 접속 유저의 권한은 user 이고 파일 생성시 765 권한으로 생성됨
4. /etc/init.d/smb 데몬을 재시작
5. window에서 실행 명령창에서 "\\ ip " 로 samba 서버 접속
 - 접속 권한이 없다는 팝업(메시지) 발생
  1> vi /etc/sysconfig/sellinux > SELLINUX = disabled 로 설정
  2> chmod 공유디렉토리 명령어로 공유디렉토리의 write 권한 설정 부여
6. 파일 업로드 & 다운로드
7. 작업 완료
 - 이후, 다른 ID 로그인이나 자동로그인 세션을 끊고 싶을 경우
 1. cmd 창에서 net use 명령어로 samba 서버 접속 세션을 확인("\\ip\디렉토리명" 형태로 출력)
 2. net use /delete "\\ip\디렉토리명" 명령어로 세션을 끊음
 3. net use 로 끊긴 것 재 확인
 (4.) 다른 ID로 SAMBA 서버 로그인 가능 





2014년 12월 29일 월요일

리눅스의 시작15_NFS 서버

NFS 서버대해서 알아보자!

1. NFS 개요
 - 네트워크를 통해 파티션을 공유하도록 제공하는 서비스
 - Sun 사에서 개발되어 대부분의 유닉스에서 사용
 - 유닉스 계열의 거의 모든 시스템에서 공유 가능
 - 시스템의 리소스를 직접 제공하는 서비스이므로 보안에 주의
  * 응용을 제공하는 것이 아니라 리소스를 제공하는 서비스

2. NFS 서버 설치 확인
 - rpm -qa | grep nfs
 - rpm -qa | grep portmap
  > 미설치시 yum -y install nfs*, yum -y install portmap* 명령어로 설치

3. NFS 실행
 - service portmap {start | stop | restart}
 - service nfs {star | stop | restart}
 (portmap을 먼저 실행 후 nfs 실행)

4. 설정
 - /etc/exports 파일에 NFS로 제공될 자원과 권한 설정
 - 형식
  [export 할 디렉토리] [허가할 클라이언트] [(옵션)]
 * 허가 할 클라이언트 지점
  - 주소 / 넷마스크의 표현 형식으로 사용가능
  - 하나의 IP 및 호스트의 주소로 적을 수 있음
 * 옵션
  - ro : 읽기 전용, rw : 읽기 쓰기 허용
  - root_squash : 클라이언트의 root를 nobody로 맵핑
  - no_root_squash : 클라이언트의 root와 서버의 root를 일치 시킴
  - all_squash : 모든 사용자를 nobody로 맵핑
   * root를 포함하므로 no_root_squash는 무시
  - no_all_squash : 서버의 사용자와 클라이언트의 사용자를 일치 시킴
   * root_squash를 이용 root를 제외 시킬 수 있음
가장 기본 설정은 위 표와 같다

5. 실행
 mount -t nfs NFS서버IP:[/공유디렉토리] [/마운트를 할 디렉토리] 명령어를 통해 실행


2014년 12월 27일 토요일

리눅스의 시작12_Apache 서버 및 서버의 네임드화

Apache web 서버 및 서버의 네임서버화에 대해 알아 보자!

1. Apache web 서버란 ?
 - Apache의 어원은 A PAtCH에서 나온 말이다. 세계의 웹서버 시장에서 50% 이상을 점유하고 있는 좋은 웹서버 일뿐만이 아니라, 기능, 보안, 속도와 무료라는 큰 매력을 가지고 있다. 하지만, 가장 큰 단점이 아파치 자체로 인한 서버 장애시 대처방법이 없는 것과, 버전이 올라갈 때 마다 나오는 새로운 내용에 대해서 체계적인 매뉴얼이 부족한 것도 그렇고 GUI방식의 웹서버의 설정이 안되는 것등의 단점이 있음.


2. Apache 서버 설치과정
 1).  httpd-2.2.25.tar.gz 버전을 /usr/local 에 다운 받음
 2). cd /usr/local 디렉토리로 이동후 tar 명령어를 사용 압축을 품 tar xvfz httpd-2.2.25.tar.gz
 3). cd ./httpd-2.2.25 디렉토리로 이동 후 ./configure --prefix=/app/apache --enable-so 명령어로 파일을 설치 할 준비를 함
 > --prefix 옵션은 설치 디렉토리를 /app/apache로 지정해주고 
 > --enable-so 옵션은 아파치에 DSO 방식으로 모듈이 적재되도록 하는 옵션. DSO 방식이란 사용할 모듈을 주소공간에 가져와서 사용하는 것으로 사용된 모듈을 다시 불러와 재컴파일 하는 일이 없게함. 처음 서버를 구동할 때 시간이 좀 더 걸리거나 일부 플랫폼에서 지원이 안된다는 단점이 있지만 한번 불러오면 속도도 빠르고 확장이 쉽다는 장점이 있음.
 4). make 명령어 실행
 5). make install 명령어 실행
  ---- 여기까지가 기본 패키지 설치 및 실행 준비
3. Apache 서버 설정 및 실행
 > 구성파일
  * 실행 데몬 : /app/apache/bin/httpd
  * 관리 스크립트 : /app/apache/bin/apachectl
  * 설정 파일 : /app/apache/conf/httpd.conf
  * 초기 서비스 파일 : /app/apache/htdocs/index.html
  * 컴파일 옵션에 따라 달라질 수 있음
  * 추가 설정 /etc/hosts 파일에 IP와 서버의 도메인 명을 입력

 > 서버 구동
   /app/apache/bin/apachectl {start | stop | restart}

 > httpd.conf 파일의 구문 점검 (경로 : /app/apache/conf/httpd.conf)
  /app/apache/bin/httpd -t
  * httpd.conf 파일의 문법상의 오류를 찾아줌
  * "Syntax OK" : 오류 문법 없음

 > 3개의 섹션으로 구성
  * 전역 환경 설정 부분
  * 기본 서버 구성
  * 가상 호스트 부분

 > httpd.conf 파일 내의 설정 옵션 
  '전역 환경 설정'
  * ServerRoot "/app/apache"
   - 웹 서버의 설정파일, 로그파일 등이 저장되는 최상위 디렉토리
  * Timeout 120
   - 서버와 클라이언트의 연결시에 아무런 메시지가 없을 때에 오류로 처리되는 초단위 시간
  * MaxClients 150
   - 접속 가능한 최대 client 수
  * Startservers 20
   - 초기 서버 프로세스의 수
  * MinSpareServers / MaxSpareServers
   - 대기 상태의 프로세스 수
  '기본 서버 구성'
  * ServerAdmin root@localhost
   - 관리자의 메일주소
  * DocumentRoot "/app/apache/htdocs"
   - 웹 서버의 홈 디렉토리 (메인 페이지 파일이 있는 경로)
  * DirectoryIndex index.html index.java index.php
   - 메인 페이지 파일명
  * ErrorLog "/logs/error_log"

   - 웹 서버에 문제가 발생시에 에러를 기록하는 로그 파일
  * CustomLog "logs/access_log combind"
   - 외부에서 접근한 기록에 대한 로그파일
  * UserDir public_html
   - 개인 홈 디렉토리 지정

- 기본 구성 폼 -
  <Directory "/app/apache/htdocs">
    Options indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
  <Directory>

IP 기반 호스트
  <VirtualHost 접속IP>
     DocumentRoot 홈 디렉토리
     ServerName IP 또는 도메인명
  </Virtual Host>
  <Virtual Host> 항목에는 모든 전역 설정 파라미터가 기술 가능
 예
   <VirtualHost 192.168.10.10>
     DocumentRoot /home/httpd/10
     <기본 구성 폼 추가>
     ServerName 192.168.10.10
   </VirtualHost>

> 아파치 웹서버 만들기
 위의 설치 준비 과정을 거친 후

위 경로에서

해당 코딩을 활성화 시킨 뒤 해당 경로의 conf 파일을 아래와 편집


st01과 te01은 동일한 아이피에 서로 다른 웹 페이지를 갖고 있는 아파치 웹 서버, 도메인도 보유하고 있음


 > 주의 사항
   * 호스팅 디렉토리에 대한 접근 설정이 유효해야 함
   * conf/extra/httpd-vhosts.conf를 참고
   * apache 설정보다 name server 설정이 우선
   * 호스팅 중인 호스트명이 name 서버에서 확인 되야 함
   * 시스템의 호스트명과 /etc/hosts에 기록된 이름이나 IP를 동일하게 설정









리눅스의 시작14_ssh 서버

SSH 서버에 대해 알아 보자!

1. SSH 서버에 대하여
 - ssh는 Secure shelld의 약자로 원격 머신에 로그인하여 그 안에 있는 명령들을 실행하는 프로그램(Putty와 같은 형식), telnet과 유사하지만, telnet은 클라이언트와 서버간의 데이터전송시 일반 텍스트 형태로 패킷을 전달하여 패킷의 내용을 유출 당 할 수 있지만, ssh는 패킷전송시 암호화시키므로 안전하게 전송 가능

2. SSH 서버 설치
 1). 설치 확인
 - rpm -qa | grep ssh 명령어로 확인




  2). 실행
  - service sshd {start | stop | restart} 명령어로 실행



  3). 관련 설정
  - vi 에디터를 통해 /etc/ssh/sshd_config 파일에서 속성들을 설정하여 변환
  관련설정 몇가지들
  - AllowUsers [유저] [유저] .... or Allowgroups [그룹] [그룹]..
   : 지정된 유저나 그룹만 접속을 가능하게 만듬
  - DenyUsers [유저] [유저] .... or Denygroups [그룹] [그룹]...
   : 지정된 유저나 그룹은 접속을 불가능하게 만듬
  - /etc/hosts.deny or /etc/hosts.allow 명령어를 통해 IP에 대한 제한을 설정 가능
   ex) hosts.deny 파일 내에 -sshd : All except 192.168.10. 
       : 모든 IP를 거부 하며, 192.168.10. 의 하위 IP 만을 허가 함


AllowUsers 속성과 DenyUsers 속성을 통해서 접속이 되는 경우와 안되는 경우를 확인





2014년 12월 23일 화요일

리눅스의 시작13_FTP 서버 설치

FTP 서버 설치 및 FTP 서버에 대해 알아 보자!


1. FTP 서버란 ?
 - File Transfer Protocol 는 인터넷상의 컴퓨터들 간의 파일을 교환하기 위한 표준 인터넷 규약으로서 가장 간단한 방법
 - 웹 페이지 파일들을 인터넷상에서 모든 사람들이 볼 수 있도록 하기 위해 제작자 본인의 컴퓨터에 있는 파일을 서버로 옮기는 과정
 - 대용량의 파일 전송 서비스에 적합
 - 웹 서비스의 일부로 통합 운영되는 추세
 - 시스템에 리소스를 많이 차지 하는 서비스
 - Out of band
  * 21 : control connection
  * 20 : data connection(Active mode)
     - passive mode : 임의의 포트를 이용(1024번 이후 포트 사용)

2. FTP 서버 설치!

 1). yum -y install vsftpd
   - yum 명령어를 통해 ftp 서버를 설치함

 2). vi 명령어를 통해, /etc/vsftpd/vsftpd.conf 파일을 수정함
   - vsftpd.conf 파일에서는 익명 사용자 관련 설정, chroot 설정 등을 할 수 있음

 * 익명 사용자 관련 설정
  - anonymous_enalble=YES : 익명사용자의 로그인 허용, 로그인시 anonymous로 로그인 하면 익명사용자로 로그인 가능
  - anon_upload_enable = YES (default:NO) : 익명사용자의 업로드 가능 여부 권한 설정
  - anon_mkdir_write_enable = YES (d:NO) : 익명사용자의 디렉토리 생성 권한 설정
  - deny_email_enable = YES (d:NO banned_email_file) : banned 파일에 지정된 메일 계정은 접속 불가
  - banned_email_file=/etc/vsftpd.banned_emails : banned 할 목록에 대한 파일 경로 및 파일 명
  - non_anon_password=NO : 익명사용자 로그인시 패스워드의 필요 여부

 * chroot 설정
  - chroot_local_user=YES(d:NO) : 전체 사용자에게 홈디렉토리를 각각의 root로 인식 ( 상위, 하위 디렉토리로 이동 불가)
  - chroot_list_enable=YES
   : chroot_local_user가 NO일 때 chroot_list_file에 지정된 사용자만 chroot를 적용
   : chroot_local_user가 YES일 때 chroot_list_file에 지정된 사용자만 chroot를 비적용
  - chroot_list_file=/etc/vsftpd/chroot_list
   : Default 값 : /etc/vsftpd/chroot_list

 * 제한 설정
  - userlist_enable=NO(d:YES) : 접속이 불가능 하게 만들 유저 리스트 목록 보유
  - max_clients = n(n은 숫자) : 최대 접속 가능 클라이언트 설정
  - max_per_ip = n(0은 무제한) : 한 IP내에 최대 접속 가능 인원 설정
  - ls_recurse_enable= YES(ls-R 명령은 부하가 큼) : 리스트를 출력하는 명령어(ls, ll 등) 사용 규제

 * 설정을 통한 확인






2014년 12월 22일 월요일

리눅스의 시작11_DNS 서버

리눅스를 통해 DNS 서버를 구축해 보자!

1. DNS 서버의 정의
 - DNS 서버는 TCP/IP 기반 네트워크에 대한 이름 확인을 제공합니다. 즉, 클라이언트 컴퓨터의 사용자가 숫자 IP 주소 대신 이름을 사용하여 원격 호스트를 식별할 수 있습니다. 클라이언트 컴퓨터는 원격 호스트의 이름을 DNS 서버로 보내고, DNS 서버에서 해당 IP 주소로 응답합니다. 그런 다음 클라이언트 컴퓨터에서 직접 원격 호스트의 IP 주소로 메시지를 보낼 수 있습니다. DNS 서버의 데이터베이스에 원격 호스트에 대한 항목이 없는 경우 이 DNS 서버는 원격 호스트에 대한 정보가 있을 가능성이 있는 DNS 서버의 주소로 클라이언트에 응답하거나, 직접 다른 DNS 서버를 쿼리할 수 있습니다. 이 프로세스는 클라이언트 컴퓨터가 IP 주소를 받거나 쿼리된 이름이 특정 DNS 네임스페이스 내의 호스트에 속하지 않는 것이 확실해질 때까지 반복적으로 발생할 수 있습니다.


2. 설치 순서

  1) 패키지 설치 확인
   : rpm -qa | grep -bind 명령어로 name 서버 패키지 파일이 설치 되어 있는 지 확인함
    (본인은 chroot를 삭제하고 하여 명령어(rpm -e --nodeps chroot패키지명)를 추가로 입력한  후 사용함)


  2) named.conf 파일 생성
 - bind의 부트 파일로 각종 옵션 및 각 도메인들에 대한 zone 파일정보를 가지고 있음
   : cat /etc/named.conf 명령어로 파일이 있는 지 확인 후 없다면 vi /etc/named.conf 명령어로 생성 후 아래와 같은 내용 입력

  3) zone 파일 설정
 - 각 DNS 서버의 도메인 및 메일 서버로 쓸 아이피 등록, 이하 모든 서브 도메인이 찾아 갈 곳 등을 설정한 정보가 담긴 파일
   : vi /var/named/"설정파일명" 명령어로 파일을 만들고 내용을 수정함

 부연 설명
 - $TTL 86400
  : TTL(time to live) 값이라고 함, 살아 있는 시간이므로 설정이 갱신 되는 시간을 말함
   86400초마다 바뀐 것이 있다면 갱신을 하겠다는 뜻 (하루는 86400)
 - @
  : 자기 자신(Origin Domain)을 의미, 즉 여기서는 kangkoon.co.kr
 - ;
  : 주석 표시
 - NS
  : 해당 도메인의 네임 서버를 정의 하는 것, 도메인들 끝에 .(점)이 있는 것을 주의 하자!
 - MX
  : 메일 서버를 쓸 경우, 메일 서버 지정하는 도메인을 셋팅


생성 된 것을 확인 가능

 위 과정을 실습을 통해 확인해 봄

 <실습 간의 사용할 root 네임 서버 생성 및 하위 네임 서버 생성 및 설정>

 /etc/named.conf 파일 수정

/var/named/ 디렉토리에 존 파일 생성


host 명령어로 네임서버가 제대로 작동하는 지 확인

다시 한번 숙지
 1. rpm -qa | grep bind-* 명령어로 네임 서버가 설치 되어 있는 지 확인
 2. 설치 후 cat /etc/named.conf 파일이 있는지 확인 후 없으면 vi 에디터를 통해서 설치
  (named.conf 파일은 네임서버 시작시 네임서버에 관한 정보가 담긴 존 파일을 연결 시켜주는 파일)
 3. cd /var/named/ 디렉토리에서 named.conf 파일에서 설정한 정보를 바탕으로 zone 파일 생성
  (위에도 설명했지만 존파일엔 네임 서버에 관련된 정보들 및 하위 네임서버 등등의 설정이 가능 함)
 4. service named start 명령어로 네임 서버를 활성화
 5. host 명령어로 네임서버가 제대로 작동하는 지 확인












2014년 12월 10일 수요일

리눅스의 시작10_리눅스 명령어(예약, 백업 설정 명령어)

리눅스 예약 작업 및 백업 설정 명령어를 알아보자!

<알립니다 : 리눅스 버전이 CentOS 5.7 버전으로 바뀌었으니 참고하여 주세요!>

* crontab
 - 주기적으로 작업되는 작업 일정을 저장해서 자동으로 실행하는 데몬으로 at이나 anacron 등과 같이 다양한 프로그램 지원
 - 관련파일
  * /etc/rc.d/init.d/crond
   - 데몬 실행 스크립트
  * /etc/crontab
   - 기본 스케줄 일정
   - 시간 별, 일자 별, 주간 별, 월간 실행 스케줄을 관리
  * /usr/bin/crontab
   - 스케줄 설정 프로그램 파일
  * /etc/cron.allow, /etc/cron.deny
   - /usr/bin/contab 이용 제한
 #crontab -u [유저] [옵션]

 > 옵션
  -e : 스케줄 등록 (vi 환경으로 스케줄 등록)
  -l : 스케줄 확인 (출력)
  -r : 스케줄 삭제

 * 명령어 형식



 * 기간 설정
  - [#-#] : 실행할 시간 범위를 지정
  - [#-#/#] : 범위 내에서 실행 간격 지정
  ex)
    01 * * * * root ~~~ : 매 시간(정시) 1분 마다
    02 4 * * * root ~~~ : 매일 4시 2분 마다
    22 4 * * 0 root ~~~ : 일요일 4시 22분 마다
    42 4 1 * * root ~~~ : 매월 1일 4시 42분 마다


* rsync
 - 두 시스템 간에 지정한 디렉토리를 동기화 함


> 적용과정
 * rsync 설치 확인
  #yum list rsync (yum 명령어로 rsync 프로그램이 설치 되어 있는 지 확인, 없다면 install 명령어로 설치)
  #yum list xinetd (yum 명령어로 xinetd 프로그램이 설치 되어 있는 지 확인, 없다면 install 명령어로 설치)

 * 관련 파일
  - 데몬 : /usr/bin/rsync
  - 관리 스크립트 : /etc/rc.d/init.d/xinetd
  - 실행 설정 파일 : /etc/xinetd.d/rsync



  - 백업 설정 파일 : /etc/rsyncd.conf  (S-C 통신할 정보 설정)



 * rsync client 명령을 이용 server의 디렉토리와 client의 디렉토리를 동기화
  - rsync -avz [--delete] IP::[서비스명][백업디렉토리]
   #rsync -avz 192.168.10.102::backup /backup


  --delet : 서버 측에서 지워진 파일을 백업 시에 클라이언트 측도 지워 짐(완전 동기화 옵션)


2014년 12월 9일 화요일

리눅스의 시작9_리눅스 네트워크

리눅스 네트워크에 대해 알아보자!

* ifconfig
 - 네트워크 인터페이스 상태를 확인하거나 설정을 변경 (변경 내용은 비영구적)
 #ifconfig
 #ifconfig [NIC명]
 #ifconfig [NIC명] [IP] network [mask명] 
 #ifconfig [up | down]

* 네트워크 설정 파일들
 /etc/sysconfig/network-scripts/ifcfg-NIC명
  -> IP, subnetmask, gateway


 /etc/sysconfig/network
  -> 호스트명, gateway
  NETWORKING = [yes/no]
  HOSTNAME = 호스트명
  GATEWAY = gateway 주소


 /etc/resolv.conf
  -> DNS Server
  Search [default 도메인명]
  nameserver [DNS 서버 IP]


*네트워크 재시작
 #etc/rc.d/init.d/network [stop | start | restart]


 #etc/sysconfig/network-scripts/ifup NIC명 : 네트워크 활성화
 #etc/sysconfig/network-scripts/ifdown NIC명 : 네트워크 비활성화
  - 파일을 수정한 이후에는 반드시 네트워크를 재시작해야 함
  - 만일 ifup, ifdown 명령이 오작동 할 경우 network script를 이용

* setup (과거 명령어 netconfig)
 - 콘솔기반 네트워크 설정 툴
 - 네트워크 이외 다양한 설정을 메뉴방식으로 진행 할 수 있음
 - 각 설정내용을 위에 설명한 설정파일에 저장, 즉 설정파일을 직접 수정하는 것과 동일
 - netconfig 명령이 수행되지 않는 경우도 있음(최근 배포 본들은 지원하지 않는 경우가 많음)
 - 설정 이후에 반드시 네트워크 시작




* system-config-network(netcfg)
 - Xwindows 기반의 네트워크 설정 프로그램
 - [시스템] - [관리] - [네트워크] 메뉴를 선택
 - Xwindows 터미널에서 system-config-network 명령을 수행
 - netcfg 명령이 수행되지 않는 경우
  * 최근 배포본들은 지원하지 않는 경우가 다수
  * 레드햇 계열의 리눅스들은 system-config-*로 설정 명령어들을 통일시켰기에 거의 지원 하지 않음
 - 프로그램 내에서 직접 네크워크를 재시작 가능

* 리눅스에서 consol 모드로 시작되게 하는 법
 - vi 에디터로 inittab 파일을 열고, 맨 하단에 id:5:initdefault: 에서 숫자 5를 3으로 바꿔줌




* ping
 - 특정 호스트까지의 연결과 대상 시스템의 작동 여부를 확인
 #ping [ip]
 - 윈도우와 달리 실행 후 지속적으로 데이터를 보내므로 ^C(ctrl + C)를 이용 강제 중단 함

* netstat
 - 네트워크 상태 진단 프로그램
 #netstat [옵션]
 > 옵션
  -i : 인터페이스 상태 확인
  -s : IP, ICMP, TCP, UDP 에 대한 패킷 통계 정보
  -nr : 라우팅 테이블 확인

  #netstat -i  명령어 실행


 #netstat -nr 명령어 실행



* arp
 - 패킷을 송수신한 대상의 MAC address를 확인


 <-> rarp : Mac address는 알지만 IP 주소를 모를 때 (ex 자기 자신의 IP를 모를때 등등)

* IP aliases
 - 하나의 물리적인 인터페이스를 여러 개의 논리적인 인터페이스로 구현, IP를 여러 개 설정 하는 방법

 방법
 #ifconfig eth0:1 xxx.xxx.xxx.xxx


eth1은 네트워크 장비 추가로 만들어낸 진짜(비록 가상이지만) IP 할당 구역







2014년 12월 8일 월요일

리눅스의 시작8_리눅스 파일시스템

리눅스 파일 시스템 및 파티션에 대해 알아 보자!

1. 파일 시스템의 이해

* 파일시스템

 - 파일을 저장하기 위한 운영체제의 논리적인 구조
  > 각 OS들은 여러 개의 파일 시스템을 지원
   Linux : ext3, ext2, xfs, jfs, ReiserFS 등
   Window : FAT, FAT32, NTFS 등

 - 파티션
  * 물리적인 디스크를 논리적인 저장영역으로 구별한 것

 - MBR
  * 디스크의 앞쪽이 물리적으로 정의되어있는 sector OS가 직접 사용하지 않으며 부트로더가 저장

* 파티션의 종류

 - Primary partition
  * 물리적인 디스크에 독립적으로 존재하며, 파일시스템을 생성, 운영체제가 직접 사용 가능, 각 물리적인 디스크마다 4개까지 생성

 - Extended partition
  * 디스크마다 1개까지 생성 가능, 직접사용 할 수 없고, logical partition으로 분할 사용 가능

 - Logical partition
  * Extended partition 내에 만들어지며, 사용은 primary partition과 동일
  * 실린더 단위로 파티션을 나눔

 - P+E는 최대 4개 까지 생성 가능
   ex) P partition 3개 + E partition 1개, P partition 2개 + E partition 1개  ..... 등
      (E partition 내에 logical partition은 개수 제한 만들기 가능)

* 디스크 장치 파일

 - 커널만 접속 가능한 하드디스크(리눅스)에 접속하여 파티션을 나누어 주는 작업을 함

 - IDE (통합드라이브전자 : Intergrated Drive Electronics)
  * 디스크 자체 : /dev/hda, /dev/hdb, /dev/hdc
  * 파티션 : /dev/hda1, /dev/hda2, /dev/hda3 .... 등

 - SCSI(Small Computer System Interface:소형컴퓨터체계대면부), SATA(하드 디스크 혹은 광학 드라이브와 데이터 전송을 주요 목적으로 만든 컴퓨터 버스의 한가지)
  * 디스크 자체 : /dev/sda, /dev/sdb, /dev/sdc
  * 파티션 : /dev/sda1, /dev/sda2, /dev/sda3...

* VMware에 가상 디스크 추가 과정










* 디스크 확인
 -df
  * 디스크의 마운트 상태와 용량 확인
  > 옵션
    -T : 파일 시스템 타입까지 출력
    -h : 읽기 쉬운 단위로 출력


* 디스크 사용 과정


* fdisk
  - 물리적인 디스크에 논리적인 파티션을 생성하는 데 사용하는 명령어
  - 만들어진 파티션에는 mkfs 명령으로 파일 시스템이 생성
  - mount 명령을 통해 특정 디렉토리에 마운트 된다음 사용

 #fdisk 디스크명
 #fdisk /dev/sda (상대 경로 표현)

  - fdisk 프롬포트에서 사용하는 명령
   p : 현재 파티션 상태 출력
   d : 파티션 삭제
   n : 파티션 생성
   t : 파티션 변경
   w : 저장 후 종료
   q : 취소 후 종류


기존의 sda, sda1,... 파티션에서 sdb 파티션이 추가 된 것을 확인 가능


위와 같은 과정을 통해 파티션이 나눠짐


파티션이 나누어져 sdb1 파티션이 추가 된 것이 확인 됨

파티션이 또 나뉘어 sdb2 파티션이 추가

* mkfs
  - 파티션에 파일시스템을 만듬
 #mkfs -t [파일시스템타입] 파티션명



mkfs 명령어로 sdb1,sdb2 파티션에 파일시스템을 정의


* mount
  - 파일시스템은 지정한 디렉토리에 연결하여 사용 가능하도록 함
 #mount [-a] [-t [FStype]] [장치명] [디렉토리]
 > 옵션
   -a : /etc/fstab 의 내용을 읽어 모두 mount 함
   -t : 파일 시스템 양식을 정함
   -o : 마운트 옵션을 추가로 지정 (.remount : 옵션을 변경(파일이 변경된 경우), .ro:Read only로 정의)

*umount
  - mount된 파일시스템을 시스템으로 부터 제거
  #umount [디렉토리명] or [장치명]


* 자동 마운트
  - /etc/fstab 파일은 시스템 시작 시 자동으로 mount 할 파일 시스템의 목록이나 옵션을 저장


 #mount -a : fstab의 모든 목록을 mount

 * 파티션 정보 확인 (UUID 확인)
  - UUID는 파티션의 고유 정보로 디스크의 위치가 바뀌어도 동일하게 유지
  - UUID는 mount 명령어에서도 이용가능



* swap 공간 추가
  1. swap 파티션 포맷 (mkfs)
   #mkswap -c [장치명]
  2. swap 파티션 활성화(mount)
   #swapon [장치명]
     > swapon -s : 현재 swap 상태를 확인하는 명령어
   #swapoff [장치명]
  3. /etc/fstab에 소스추가하여 컴퓨터 부팅 시 자동으로 마운트되도록 함

mkswap -c /dev/sdb2로 swap 공간을 추가