레이블이 리눅스(CentOS 및 기타)인 게시물을 표시합니다. 모든 게시물 표시
레이블이 리눅스(CentOS 및 기타)인 게시물을 표시합니다. 모든 게시물 표시

2016년 12월 5일 월요일

16TB 이상 Disk 설정 하는 방법

ㅇ ㅂㅇ

Linux에서 16TB 이상 Disk 설정 하는 방법

1. mke2fs.conf 내용 수정

vi /etc/mke2fs.conf  하단 그림과 같이 한 줄 씩 추가

inode_ratio = 65536


auto_64-bit_support = 1  


이미지에서는 ext4에만 추가 했으나, 사용할 파일시스템 타입에 맞춰 추가 해야함

2. yum으로 필요한 것들 설치

yum -y install gcc
yum -y install kernel-devel
yum -y install zlib-devel
yum -y install openssl-devel
yum -y install perl
yum -y install expat-devel
yum -y install gettext-devel
yum -y install autoconf
yum -y install curl

3. 압출 파일 다운 후 설치

wget http://codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.xz
tar –xvf git-xxxxx
압축풀린 폴더로 이동
autoconf
./configure –with-curl=/usr/local
make
make install

git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
cd e2fsprogs
mkdir build; cd build/
../configure
make
make install

4. 이후 mkfs.ext4로 포맷후 마운트 
mkfs.ext4 /dev/sdb1



파일시스템 정보 저장 파일(/etc/fstab)에 대해

ㅇ ㅂㅇ

파일 시스템 정보를 저장하는 /etc/fstab에 대해 알아 보자

> 구성
 - fstab은 파일 시스템의 정보를 저장하는 파일로 mount는 재부팅 시 초기화 되는 데 그것을 원하는 것들만 영구적으로 mount 시키기 위해 사용하며, 해당 파일에 정의 된 정보가 잘못된 경우 부팅시 에러가 발생한다.
  >> 보통 서버단에서의 문제는 Disk Fail 같은 문제가 발생시 fstab에 정의된 파일시스템 정보를 확인하다 error가 발생하여 부팅이 되지 않게 된다. 이 때 fstab의 내용을 수정해주어야 하는 데 로그인이 가능하여 로그인 후 vi 명령어로 수정하려고 할 때, 수정이 안되는 상황(부팅시 파일들이 read only 상태)이 발생하는 경우가 있다 이 때 " mount -o remount,rw / "명령어를 실행하여 파일을 Read&Write 가능 상태로 변환하여 fstab을 수정하여 재부팅하면 정상 부팅이 된다.
  ㄴ Disk Fail이 확인 되었을 경우 Dell 장비를 제외한 보통 장비들은 fstab의 Fail Disk의 파일시스템 정의 부분을 주석처리 한 뒤 재부팅을 해서 교체해야 함

[파일시스템장치명] [마운트포인트(디렉토리)] [파일시스템종류] [옵션] [Dump관련설정] [파일점검옵션]

#cat /etc/fstab
UUID=46b428be-a4d0-48da-9a8d-7a26b9023869 /                       ext4    defaults        1 1
/dev/sdb1        /kangkoon1                 ext4    defaults        1 2
/dev/sdc1        /kangkoon2                 ext4    defaults        1 2
/dev/sdd1        /kangkoon3                 ext4    defaults        1 2
/dev/sde1        /kangkoon4                 ext4    defaults        1 2
/dev/sdf1        /kangkoon5                 ext4    defaults        1 2
/dev/sdg1        /kangkoon6                 ext4    defaults        1 2
/dev/sdh1        /kangkoon7                 ext4    defaults        1 2
UUID=f1335123-5d3f-40cf-b10d-1eb432382f0a swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
----------------------------------------------------------------------------------------------------------------------
#cat /etc/fstab
UUID=46b428be-a4d0-48da-9a8d-7a26b9023869 /                       ext4    defaults        1 1
UUID=1abf40a7-c90f-42a2-aa74-3d60ce489d08 /boot                   ext4    defaults        1 2
UUID=f1335123-5d3f-40cf-b10d-1eb432382f0a swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

 위에 두가지의 view가 있는 데, 파일시스템장치명(or Label)으로 정의한 경우와 UUID를 통한 정의 두가지가 있다. 각각 장단점이 있지만, 기본 리눅스 설치시 두번째 그림과 같은 상태로 존재하며 첫번째 그림과 같은 경우 Disk Fail의 발생시, 부팅 과정에서 파일시스템을 체크하는 중에 매칭이 되지 않아 부팅이 되지 않게 된다. 파일 시스템 확인 과정에서 Fail Disk를 확인 초기에 설정시 mkfs(make file system) 과정에서 mkfs.ext4 -L /kangkoon /dev/sdd1 (파일시스템 타입 Label 명칭 파일시스템장치명) 또는 e2label /dev/sdd1 /kangkoon (파일시스템장치명 Label 명칭) 과정을 통해 Label을 지정 할 수 있으며, 또는 blkid 명령어로 UUID를 확인 후 해당 UUID로 변경하여 적용 할 수 있다.
 ㄴ 정리 하자면, 파일시스템장치명(or Label) 적용 방식은 Disk Fail 시  해당 Disk를 인식하지 못해 (예를 들면, /dev/sdb1이 fail인 경우 파일시스템 체크 Error 발생 위치가 달라지는 데, /dev/sdb1 부분에서 Error가 발생하거나, 혹은 /dev/sdc1 부터 /dev/sdh1 까지 모두 Error로 인식하는 상태가 발생하거나, 한 단계씩 밀려 정상 인식을 계속 하다가 /dev/sdh1에서 파일시스템체크에 Error가 발생하는 경우가 발생) 한 단계씩 밀려 정상인 장치를 Error로 인식할 가능성이 있음
하지만 UUID를 사용하는 경우 고유한 식별자인 UUID를 이용하여 장치를 구분하여 매칭하기 때문에 정확한 파일시스템 체크를 통해 확실히 고장난 Disk가 무엇인지 확인 할 수 있다.

[파일시스템장치명]
 - 파티션의 위치로 fdisk -l 명령어로 확인 가능, Label 사용 및 UUID를 지정하여 사용 가능
[마운트포인트(디렉토리)]
 - 파티션이 연결될 디렉토리를 지정
[파일시스템종류]
 - 파티션의 파일시스템의 종류를 정의(mkfs 명령어로 정의한 것을 써주어야 함)
[마운트옵션]
 - 파일시스템에 맞게 사용되는 옵션을 설정
[Dump관련설정]
 - 덤프(백업)가 되어야 하는 지 설정
[파일점검옵션]
 - fsck에 의한 파일시스템 체크(무결성 검사) 우선 순위를 정함

 fstab 작성 후 mount -a 명령어를 이용하여 fstab에 정의한 것들을 모두 mount 할 수 있다.

> 옵션
 - 3개의 항목은 옵션이 따로 없지만 4,5,6번 항목은 옵션이 지정 할 수 있음
네번째 항목
 default - rw, nouser, auto, exec, suid 속성을 모두 설정
 auto - 부팅시 자동 마운트
 noauto - 부팅시 자동 마운트 하지 않음
 exec - 실행파일이 실행되는 것을 허용
 noexec - 실행파일이 실행되는 것을 불가
 suid - SetUID, SetGID 사용 허용
 nosuid - SetUID, SetGID 사용 불가
 ro - read only 읽기 전용의 파일시스템으로 설정
 rw - read & write 읽기/쓰기 전용의 파일시스템으로 설정
 user - 일반 사용자 마운트 가능
 nouser - 일반 사용자 마운트 불가능, root(최고 사용자)만 가능
 quota - Quota 설정 가능
 noquota - Quota 설정  불가능

다섯번째 항목
0 - dump 
명령으로 dump 가 실행되지 않는 파일시스템
1 - 
데이터백업 시, dump 가 가능한 파일시스템

여섯번째 항목
0 - 
부팅 시, fsck 가 실행되지 않음 (무결성 검사 생략)
1 -
루트 파일시스템 (우선 순위 1위)
2 - 
루트 파일시스템 외의 파일시스템 (루트 파일시스템 이후 순차적으로 검사)








2015년 4월 14일 화요일

rpmforge 설치 및 사용법

ㅇ ㅂㅇ

1. rpmforge란 ?
 - rpmforge는 CentOS나 RedHat과 별개로 진행되는 프로젝트로 프로그램을 설치하는 툴 중 하나이다.

2. rpmforge 설치
 1). 설치를 할 OS가 32비트 인지 64비트 인지 확인한다.
  > i386, i486, i586, i686 등은 32비트
  > x86_64 는 64비트

< 32 비트 운영체제 >
 2). rpmforge 파일 다운로드
  > http://pkgs.repoforge.org/rpmforge-release/에서 버전을 확인, 해당 rpm을 다운로드 한다.
  > wget이 없다면 yum -y install wget 명령어를 통해서 설치한다.


  > wget http://pkgs.repofrge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.



 3). rpmforge 설치
  > rpm -Uvh rpmforge-release-0.5.2-2.el5.rf.i386


 4). rpmforge 설치 후 프로그램 다운로드 및 설치
  > hping 설치


 5). 기타 설치
  > htop 모듈 설치
    # yum --enablerepo=rpmforge -y install htop








2015년 4월 1일 수요일

Linux(Fedora)에서 yum으로 package 설치가 되지 않을 경우

ㅇ ㅂㅇ

yum 명령어로 설치 중 에러 해결

yum 명령어로 패키지를 설치중 낯선 경고를 보게됬다.


Loaded plugins: presto, refresh-packagekit
Error: Cannot retrieve repository metadata (repomd.xml) for repository: fedora.
Please verify its path and try again

이라는 에러 메시지가 발생했다.

1. yum 관련 파일 소스 수정

이때 /etc/yum.repos.d/ 디렉토리의 파일들을 수정하여 문제를 해결한다.

수정은 모든 파일의 'baseurl' 부분의 주석을 해제하고, 'mirrorlist' 부분에 주석처리를 한다.
혹은 mirrorlist=https 를 mirrorlist=http 로 수정하여도 가능하다.

[fedora]
name=Fedora $releasever - $basearch
failovermethod=priority
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/
mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch
enabled=1
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch

[fedora-debuginfo]
name=Fedora $releasever - $basearch - Debug
failovermethod=priority
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/debug/
mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=fedora-debug-$releasever&arch=$basearch
enabled=0
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch

[fedora-source]
name=Fedora $releasever - Source
failovermethod=priority
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/source/SRPMS/
mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=fedora-source-$releasever&arch=$basearch
enabled=0
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch


이렇게 수정 후 다음 명령어를 입력

 yum clean all
 yum repolist

2. 네트워크 확인

이후에도 문제가 발생하면 네트워크 설정을 확인하여야 한다.

setup을 통해 현재 네트워크 설정이 제대로 되어 있는 가에 대해 확인을 하며
/etc/sysconfig/network 에 설정된 내용도 설정된 내용과 동일한지 확인해야 한다.


Linux(CentOS)에서 Telnet 서버 설치하기

ㅇ ㅂㅇ

텔넷 서버를 설치 후 패킷 감지를 해보자

1. 텔넷 서버의 설치 유무를 확인. 

 텔넷 서버의 설치 유무를 확인 하기 위해 rpm -qa 옵션을 이용한다

rpm -qa | grep telnet *
rpm -qa | grep xinetd


명령어를 입력하여 설치가 되지 않은 것이 확인 되면

yum -y install telnet-server
yum -y install xinetd

명령어를 입력하여 설치해 주자.


설치가 완료되면
rpm -qa | grep telnet *
rpm -qa | grep xinetd
명령어를 다시 입력하여 설치가 완료 된 것을 확인함

2. 텔넷 서버 설정
설치 된 것을 확인 후 vi /etc/xinetd.d/telnet 명령어를 입력하여 disable을 no로  바꿔줌 이후 service xinetd restart 해준다.

3. 윈도우에서 사용 가능 하도록 설정
텔넷 서버를 리눅스에 설치 한 이후 window에서 사용 하려고 할 때 window에서 텔넷 서버에 접속할 수 있는 기능을 활성화 해주어야 함


활성화 해준 뒤 cmd(명령프롬포트)를 이용하여 접속한다

telnet [접속할 텔넷 서버 IP]

입력 하면 해당 텔넷 서버로 접속이 가능함



여기서 해당 접속 서버의 리눅스 계정으로 로그인 후 사용 가능함!












Linux(Fedora)에서 SAMBA 설치

ㅇ ㅂㅇ

1. samba를 설치하기
 설치가 되어 있는지 우선 확인함 : rpm -qa | grep smb
 설치가 되어 있지 않다면 yum -y install samba 명령어로 설치함

2. samba 설정하기
 > vi /etc/samba/smb.conf
workgroup = WORKGROUP 등으로 윈도우의 작업그룹과 동일하게 맞춰줌.
하단에 [printers] 밑에 아래 그룹 추가.
[user]
 comment = user
 path = /원하는경로/
 read only = no
 writable = yes
 valid users = /원하는계정(linux에 존재하는 user가 편함)/
 public = no
 browseable = no
 printable = no
 create mask = 0765

3. samba 계정 추가

smbpasswd -a /위의 valid users에 넣은 값 /원하는 암호 입력

4. 방화벽 설정

setup 명령어로 방화벽 설정에 들어가 방화벽 서비스를 비활성화 시킴

5. selinux 설정
이후 selinux 설정을 바꿔줌

vi /etc/sysconfig/selinux 에서 enforcing 으로 되어 있는 값을 disabled(비활성화) 혹은 permissive(보안경고모드) 로 바꿔 줌

6. 설정을 모두 마친 후

모든 설정을 마친 후 재부팅


2015년 3월 24일 화요일

윈도우에서 다른 네트워크에 있는 oracle에 로그인 하기

ㅇ ㅂㅇ

$ORACLE_HOME/network/admin/listener.ora 에 있는 파일을 수정함


LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 호스트명)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = SID 명)
      (ORACLE_HOME = /app/ora11g/11g)
    )
  )
ADR_BASE_LISTENER = /app/ora11g

설정을 해줌

본인이 접속할 곳은 window로 window용 oracle을 설치해줘야 함 설치 후 마찬가지로
윈도우의 ORACLE_HOME/network/admin/tnsnames.ora 파일에 내용을 설정해줘야 함

TNS 명 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 접속하고자 하는 IP의 주소, 호스트 주소)(PORT = 1521))
    (CONNECT_DATA = (SID = SID명))
        )

위와 같이 설정 후 명령프롬포트에서 접속을 함

sqlplus sys/'관리자권한설정비밀번호'@'TNS명' as sysdba
또는
sqlplus '유저명'/'유저비밀번호'@'TNS명'






리눅스 부팅 시 오라클 리스너 및 STARTUP 자동 실행

ㅇ ㅂㅇ
1. rc.local 파일 편집
리눅스 부팅 시 자동 실행 될 것들을 명령어로 가지고 있는 /etc/rc.d/rc.local 파일을 아래와 같이 편집하여 자동 실행 되도록 함



su - ora11g -c /app/ora11g/11g/bin/"dbstart"
su - 명령어로 오라클 계정으로 로그인 함
ora11g - 오라클 관리자 리눅스 계정명
-c /app/ora11g/11g/bin/dbstart
 - oracle bin 디렉토리에 있는 dbstart 파일을 실행

su - ora11g -c /app/ora11g/11g/bin/"lsnrctl start"
 - oracle bin 디렉토리에 있는 lsnrctl 파일을 start 함

2. oratab 파일 편집

/etc/oratab 파일을 vi로 편집









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 할당 구역