'Linux'에 해당되는 글 46건

  1. 2011.05.03 mount 순서
  2. 2011.05.03 iptable #3
  3. 2011.05.03 iptable #2
  4. 2011.05.03 iptable #1
  5. 2011.05.03 아파치 Directory 설정
  6. 2011.05.03 mysql 패스워드 초기화 방법
  7. 2011.05.03 MYSQL 설치
  8. 2011.04.27 vi의 텍스트 찾기, 바꾸기 명령
  9. 2011.04.26 [Linux] 시스템과 관리자용 명령어
  10. 2011.04.26 [Linux] 기본명령어

mount 순서

Linux 2011. 5. 3. 15:40

1.  vi /etc/fstab 열어 ext2, ext3 인지판다
2. fdisk /dev/sdb
3. mke2fs -j /dev/sdb
4.mount -t ext3 /dev/sdb /home2

vi /etc/fstab

/dev/sda /home2 ext3 defaults 12

'Linux' 카테고리의 다른 글

iptable #3  (0) 2011.05.03
iptable #2  (0) 2011.05.03
iptable #1  (0) 2011.05.03
아파치 Directory 설정  (0) 2011.05.03
mysql 패스워드 초기화 방법  (0) 2011.05.03
Posted by 으랏차
,

iptable #3

Linux 2011. 5. 3. 15:40

'Linux' 카테고리의 다른 글

mount 순서  (0) 2011.05.03
iptable #2  (0) 2011.05.03
iptable #1  (0) 2011.05.03
아파치 Directory 설정  (0) 2011.05.03
mysql 패스워드 초기화 방법  (0) 2011.05.03
Posted by 으랏차
,

iptable #2

Linux 2011. 5. 3. 15:40

80 포트 tcp INPUT, OUTPUT 열기

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

iptables -I OUTPUT -p tcp --sport 80 -j ACCEPT

 


22 포트 tcp INPUT, OUTPUT 열기

iptables -I INPUT -p tcp --dport 22 -j ACCEPT

iptables -I OUTPUT -p tcp --sport 22 -j ACCEPT

 


20, 21 포트 tcp INPUT, OUTPUT 열기

iptables -I INPUT -p tcp --dport 20 -j ACCEPT

iptables -I INPUT -p tcp --dport 21 -j ACCEPT

iptables -I OUTPUT -p tcp --sport 20 -j ACCEPT


iptables -I OUTPUT -p tcp --sport 21 -j ACCEPT

 


53 포트 udp INPUT, OUTPUT 열기 (bind)


iptables -I INPUT -p udp --dport 53 -j ACCEPT

iptables -I OUTPUT -p udp --sport 53 -j ACCEPT

 


161,162 포트 tcp,udp 를 222.222.222.222 에 INPUT, OUTPUT 열기


iptables -I INPUT -p tcp --dport 161 -s 222.222.222.222 -j ACCEPT

iptables -I OUTUT -p tcp --dport 162 -d 222.222.222.222 -j ACCEPT


iptables -I INPUT -p udp --dport 161 -s 222.222.222.222 -j ACCEPT

iptables -I OUTPUT -p udp --dport 162 -d 222.222.222.222 -j ACCEPT

 

25 포트 (메일발송 때문에)


iptables -I OUTPUT -p tcp --sport 25 -j ACCEPT

 

3306 (Mysql 때문에 - 같은 서버에서 사용합니다.)


iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

 


음.. 일단 질문하신것에 대한 답변은 했으나, output에 대한 정책은 보통 모두 accept입니다.
왜냐하면 output은 서버 자신이 내보내는것이기 때문이죠..
혹시나 모를 외부의 해킹접속때문에 막으신거면 이미 input에서 짤렸을것이기 때문에 output정책은
안먹습니다.
그러므로 보통 output은 모두 accept이고 input에서만 정책을 적용하죠.


그리고
iptables -I INPUT -m state --state RELATED | ESTABLISHED -j ACCEPT


이것을 가장 위에 추가해주시는게 좋습니다.

'Linux' 카테고리의 다른 글

mount 순서  (0) 2011.05.03
iptable #3  (0) 2011.05.03
iptable #1  (0) 2011.05.03
아파치 Directory 설정  (0) 2011.05.03
mysql 패스워드 초기화 방법  (0) 2011.05.03
Posted by 으랏차
,

iptable #1

Linux 2011. 5. 3. 15:39


iptables 명령어 실행시 시스템에 적용되는 시기

- iptables 명령어를 실행하면 재부팅하지 않더라도 즉시 시스템에 적용된다.

- iptables -A INPUT -s 0/0 -j DROP를 하면 그 즉시 모든 접속이 차단된다.

- iptables -D INPUT -s 0/0 -j DROP를 하면 그 즉시 접속 차단 명령이 삭제된다.

- iptables -L로 명령어가 시스템에 적용중인지 확인 가능

----------------------------------------------------------------------------------------------------------------------

 - 재부팅시 iptables 내용 보존하여 실행하기

(iptables명령을 실행하면 시스템에 즉시 적용이 되지만 리붓을 하게되면 적용했던 내역들이

초기화가 된다. 아래는 영구적으로 저장하는 방법 두가지. *배포판에 따라 경로가 상이할수도 있음)

1. 스크립트 파일 만들어서 실행

   1) cd /etc/sysconfig

      - 스크립트파일 만들어질 디렉토리로 이동 (다른 디렉토리에 만들어도 됨)

   2) touch iptablesscript

      - /etc/sysconfig디렉토리에 iptablesscript라는 파일이 생성됨  (다른 파일명으로 만들어도 됨)

   3) vi /etc/sysconfig/iptablesscript

      - 만들어진 파일을 open

   4) /sbin/iptables -A INPUT -s 100.100.100.100 -j DROP

      /sbin/iptables -A OUTPUT -s 200.200.200.200 -j ACCEPT

      - 실행하고자 하는 내용을 입력

      - 맨 윗줄에 #! /bin/bash나 맨 아랫줄에 exit 0는 입력할 필요 없음

   5) chmod 700 iptablesscript

      - 실행가능한 파일로 속성을 변경

   6) vi /etc/rc.d/rc.local

      - 재부팅시 자동으로 실행되는 내용이 들어가도록 하는 rc.local파일을 open

   7) /etc/sysconfig/iptablesscript

      - rc.local파일의 맨 아랫줄에 입력

   8) 재부팅


2. /etc/rc.d/rc.local 파일에 직접 기록

   /sbin/iptables -A INPUT -s 100.100.100.100 -j DROP

   /sbin/iptables -A OUTPUT -s 200.200.200.200 -j ACCEPT

   위 두줄을 /etc/rc.d/rc.local파일 맨 아랫줄에 직접 입력 (파일에 직접 기록하는 방식은 다른 자동 실행 파일이 있는 경우 혼동
                                                                                 가능성이 있으므로 스크립트 파일로 만드는 것이 좋음)


----------------------------------------------------------------------------------------------------------------------
 - iptables 명명 규칙
iptables -A INPUT -s 200.200.200.1 -j DROP

200.200.200.1 이라는 source IP(-s)로부터 오는(INPUT) 모든 패킷을 막는(DROP) 규칙을 추가(A)한다.

* INPUT   : 내가 외부의 패킷을 받을지 결정

          : INPUT을 막을 경우 외부에서 나한테 패킷을 보낼 수 없음

* OUTPUT  : 내가 외부에 패킷을 보낼지 결정

          : OUTPUT을 막을 경우 내가 외부에 패킷을 보낼 수 없음

* FORWARD : 내가 받을 패킷을 어디로 RELAY할지 결정

 

* ACCEPT  : 패킷을 허용

* DENY    : 패킷을 허용하지 않는다는 메시지를 패킷을 보낸 PC에 돌려보냄

* DROP    : 패킷을 허용하지 않으며, 허용하지 않는다는 메시지 자체도 안보냄

* REJECT  : match된 경우 -------- 거절한다는 에러 메시지를 돌려보냄

          :  match되지 않은 경우 - DROP과 동일한 작동을 함


----------------------------------------------------------------------------------------------------------------------


iptables -A INPUT -p tcp --sport 25 -j ACCEPT

25번이라는 source포트(--sport)에서 오는(INPUT) protocol이(-p) tcp인 모든 접속을 허락하는(ACCEPT) 규칙을 추가(A)한다.

----------------------------------------------------------------------------------------------------------------------

iptables –A INPUT –s 200.200.200.1 –p tcp --destination-port telnet –j DROP


200.200.200.1 이라는 source IP(-s)로부터 오는(INPUT) protocol이(-p) tcp이고 목적지 port(--destination-port)가 telnet인

패킷의 접속을 막는(DROP) 규칙을 추가(A)한다.

----------------------------------------------------------------------------------------------------------------------

iptables -A INPUT -i eth1 -s 192.168.1.0/24 -d 0/0 -j ACCEPT

192.168.1.0/24라는 source IP(-s)로부터 오는(INPUT) 서버안으로 들어오는 인터페이스(-i)가 eth1이고 destination IP(-d)가
어떤 IP라도(0/0) 접속을 허락하는(ACCEPT) 규칙을 추가(A)한다.

(서버자체에 대한 접속이 아니라 마스커레이딩등을 이용하여 랜카드 두 개를 장착한 경우 eth1에 연결된 내부 PC에서

 외부로의 접속 허용)

* 0/0 : 모든 IP가 해당 (/뒤의 숫자는 서브넷마스크를 의미함)

  /8  = /255.0.0.0  (/8이나 /255.0.0.0 중 어느 것을 입력해도 같음)

  /9  = /255.128.0.0

  /18 = /255.192.0.0

  /24 = /255.255.255.0

  /27 = /255.255.255.224

  /28 = /255.255.255.240

  /29 = /255.255.255.248

  /30 = /255.255.255.252

* '/'다음에 숫자가 올 경우 비트가 1로 채워진 갯수를 의미하는데 /24인 경우

  왼쪽에서 24개의 비트가 1이다.

(11111111.11111111.11111111.00000000 = 255.255.255.0)

  따라서 192.168.1.0/24 는 192.168.1.0/255.255.255.0과 같다

----------------------------------------------------------------------------------------------------------------------

iptables -A INPUT –p tcp --destination-port telnet –i ppp0 –j DROP

protocol이(-p) tcp이고 목적지 port(--destination-port)가 telnet이며, 서버안으로 들어오는 인터페이스(-i)가 ppp0인

패킷의 접속을 막는(DROP) 규칙을 추가(A)한다.

----------------------------------------------------------------------------------------------------------------------

iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT

iptables -A INPUT -p icmp --icmp-type 8 -j REJECT

protocol이(-p) icmp이고 icmp 의 type이 echo-request인 패킷이 오는(INPUT) 것을 거절하는(REJECT) 규칙을 추가(A)한다.
(외부에서의 ping을 거절하는 방법임 / echo-request대신에 8을 해도 됨)

* icmp type

  number    name                        icmp 보낸 program

    0       echo-reply                  ping

    3       destination-unreachable     Any TCP/UDP traffic

    5       redirect                    routing if not running routing daemon

    8       echo-request                ping

   11       time-exceeded               traceroute

* echo-request : ping프로그램으로 사용자가 목적지 서버에 보내는 패킷

* echo-reply : echo-request에 대하여 목적지시스템이 사용자에게 회신하는 패킷

----------------------------------------------------------------------------------------------------------------------

iptables -A INPUT -p tcp --dport 20:30 -j DROP


protocol이(-p) tcp이고 목적지 port(--dport)가 20번부터 30번까지인 패킷이 오는(INPUT) 것을 막는(DROP) 규칙을 추가(A)한다.

----------------------------------------------------------------------------------------------------------------------

iptables -A INPUT -m state --state INVALID -j DROP


network상태가(state --state)가 INVALID인 패킷이 오는(INPUT) 것을 막는(DROP) 규칙을 추가(A)한다.

* -m : -match로 해도 됨 (match 여부로 패킷의 방향을 결정하는 옵션임)

* state --state INVALID     : 패킷이 network연결되어 있는지 모르는 상태

* state --state ESTABLISHED : 패킷이 network 연결되어 있는 상태

* state --state NEW         : 패킷이 network 새로 연결되어 있는 상태

* state --state RELATED     : 패킷이 network새로 연결되어 있으나 이미 연결되어 있는 network와 연관성이 있는 상태

----------------------------------------------------------------------------------------------------------------------

iptables -A INPUT -p tcp --tcp-flags ACK ACK --dport 80

-m string --string "/default.ida?"

-j REJECT --reject-with tcp-reset

protocol이(-p) tcp이고 목적지가 80번 포트(--dport 80)로 오는(INPUT) 신호가 ACK이고 /default.ida?라는 문자열이 들어있는 패킷은

연결을 해제하고(tcp-reset) 거절하는(REJECT) 규칙을 추가(A)한다.

* tcp프로토콜의 접속 제어 flag

  - SYN (SYNchronize Sequence Numbers) : 연결을 요청하는 flag(신호)

  - ACK (Acknowledgement) : 알았다는 신호

  - RST (Reset) : 연결을 해제하는 신호

  - FIN (Finish) : 접속을 종료하고 전송을 끝내는 신호

* HOST A > (SYN) > HOST B > (SYN ACK) > HOST A > (ACK) > HOST B

  1) HOST A는 HOST B에 SYN을 보내 연결을 요청

  2) HOST B는 HOST A에 SYS ACK를 보내 연결을 허락한다고 회신

  3) HOST A는 HOST B에 ACK를 보냄으로써 연결이 이루어짐

* SYN,ACK,FIN,RST SYN : 앞의 네 개 FLAG인 SYN,ACK,FIN,RST를 검사하여  맨뒤의 SYN의 방향을 결정함

 (위의 명령어의 경우는 앞의 ACK만 검사하여 뒤의 ACK의 방향을 결정함)

* 는 명령어가 길어 아랫줄로 계속 이어서 입력할 경우 사용

  는 backspace왼쪽의 기호 key임

  80과 사이에 하나의 공백이 있어야 함 공백이 없을 경우 80 -m이 안되고 80-m으로 계속 이어지는 형태로 error발생

* --reject-with tcp-reset : RST 패킷을 돌려보내서 연결을 해제토록 함

* --reject-with icmp-net-unreachable   : error 메시지를 돌려보냄

* --reject-with icmp-host-unreachable  : error 메시지를 돌려보냄

* --reject-with icmp-port-unreachable  : error 메시지를 돌려보냄

* --reject-with icmp-proto-unreachable : error 메시지를 돌려보냄

* --reject-with icmp-net-prohibitedor  : error 메시지를 돌려보냄

* --reject-with icmp-host-prohibited   : error 메시지를 돌려보냄

----------------------------------------------------------------------------------------------------------------------

iptables -A input -i eth0 -s 10.0.0.0/8 -d 0/0 -j DENY

iptables -A input -i eth0 -s 127.0.0.0/8 -d 0/0 -j DENY

iptables -A input -i eth0 -s 172.16.0.0/16 -d 0/0 -j DENY

iptables -A input -i eth0 -s 192.168.0.0/24 -d 0/0 -j DENY

외부에서 내부 네트워크 IP자격으로 접근하여 ip spoofing하는 것 방지

----------------------------------------------------------------------------------------------------------------------

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

IP 주소를 할당 받은후 (POSTROUTING) NAT 테이블에 (-t nat) 서버밖으로 나가는 인터페이스(-o)가 ppp0인 모든 패킷들이
마스쿼레이드 되도록 (-j MASQUERADE) 규칙을 추가(-A) 한다.

* ppp0는 활성화된 외부 디바이스(External Interface)가 유동IP인 경우이며,  고정IP인 경우 ppp0대신에 eth0사용
  (/sbin/ifconfig를 이용하여 활성화된 외부 디바이스 확인 가능)

----------------------------------------------------------------------------------------------------------------------

 - 마스커레이딩

                                                                          ┌---- PC1 (192.168.0.6)

* 인터넷망 - SERVER LAN1 - SERVER LAN2 - HUB - |----- PC2 (192.168.0.7)

                                                                          └---- PC3 (195.168.0.8)

* 패킷 발송 절차

  - 패킷에는 발신지, 수신지 IP주소와 포트번호가 포함되어 있습니다.

  1) PC1에서 서버로 패킷 보냄

  2) 서버는 수신된 패킷의 원래 IP(192.168.0.6)와 포트번호를 내부에 저장

  3) 서버는 수신된 패킷에 외부연결된 IP 및 새로운 발신포트번호를 부여

     <일반적인 web은 80번 포트를 사용하지만 80이 아닌 새로운 발신포트를

      사용해도 일반적으로는 접속 가능합니다. 목적지 서버에서 웹서버만

      운영하기 위해 80포트만 열어놓는 것은 패킷의 발신포트(source port)가

      아닌 목적지 포트(destination port)를 80만 열어놓는 것이므로

      발신포트가 예를들면 100이라도 접속 가능>

  4) 패킷은 새로받은 IP와 포트번호로 외부로 나감

* 패킷 수신 절차

  1) 외부에서 서버로 패킷이 들어옴

  2) 서버는 패킷의 포트번호를 검사하여 PC1의 포트인지 확인후

     패킷에 원래 IP(192.168.0.6)와 포트번호를 부여

  3) 패킷은 PC1로 전달됨

* 유동(또는 고정) IP 한개인 서버를 통해 IP가 없는 PC에 인터넷 연결하는 방식

  /etc/rc.d/rc.local 의 하단에 아래 두줄 추가하여 구축 가능

  iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

  echo 1 > /proc/sys/net/ipv4/ip_forward  (ip_forward 파일의 내용을 1로 바꿈으로써 ipforwarding이 가능하게 한다.

                                                              vi /proc/sys/net/ipv4/ip_forward로 보면 바꾸기 전에 기본으로는 0으로 되어 있음)

* PREROUTING  : 서버안으로 들어오는 패킷에 해당되며, 들어오는 인터페이서(-i)만 선택 가능

  POSTROUTING : 서버밖으로 나가는 패킷에 해당되면, 나가는 인터페이서(-o)만 선택 가능

* nat (Network Address Translation)

  - 패킷의 목적지나 시작점을 바꾸는 방법

  - 시작점 NAT(Source NAT) (SNAT) : 패킷의 시작점을 바꾸는 방법

    iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4

    (외부로 나가는 패킷의 출발지를 현재 내 PC의 IP주소인 200.200.200.200이 아닌 1.2.3.4로 변경)

  - 목적지 NAT(Destination NAT) (DNAT) : 패킷의 목적지를 바꾸는 방법

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 51210 -j DNAT

    --to 192.168.0.2

    (외부에서 내부로 들어오는 패킷의 목적지를 내부 서브네트워크중 하나인 192.168.0.2로 변경)


 

'Linux' 카테고리의 다른 글

iptable #3  (0) 2011.05.03
iptable #2  (0) 2011.05.03
아파치 Directory 설정  (0) 2011.05.03
mysql 패스워드 초기화 방법  (0) 2011.05.03
MYSQL 설치  (0) 2011.05.03
Posted by 으랏차
,

아파치 Directory 설정

Linux 2011. 5. 3. 15:13

<Directory> 값을 설정하여 각 Directory마다 적당한 권한을 설정할 수 있습니다.

 

※ httpd.conf

yum으로 설치했을 경우, /etc/httpd/conf/httpd.conf 를 열면 됩니다.

 

Ex 1) 전체 Directory에 관한 설정입니다.

 

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

 

Ex 2) 특정 Directory에 관한 설정입니다.

<Directory "/var/www/html">

#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
#    Options Indexes FollowSymLinks
        Options None
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride None

#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all

</Directory>

 

대략 이런 화면이 httpd.conf에 담겨있을 것입니다.

Options으로 해당 Directory에 옵션을 부여할 수 있습니다.

또한 AllowOverride로 .htaccess 등의 파일지시자를 불러들이거나, 옵션을 설정할 수 있습니다.

 

 

-----------------

※ Options의 옵션

 

* None : 어떠한 옵션도 이용할 수 없습니다.

* All : MultiViews를 제외한 모든 명령을 이용할 수 있습니다.

* Indexes : 해당 Directory에 index파일(index.html 등으로 설정된 파일)이 없는 경우, Directory를 Listing해줍니다.

* Includes : SSI(Server Side Include)를 허용합니다. (다른 파일을 include 할 수 있음.)

* IncludesNoExec : SSI를 허용하지만, #exec와 #include로 정의한 CGI 실행은 거부합니다.

* FollowSymLinks : 심볼릭 링크를 허용합니다.

* SymLinksifOwnerMatch : 심볼릭 링크를 허용하지만, 링크하고자 하는 대상이 사용자의 소유로 되어 있는 것만 링크가 가능합니다.

* ExecCGI : perl 같은 CGI(Common Gateway Interface) 스크립트를 실행을 허용합니다.

* MultiViews : 웹브라우져의 요청에 따라 적절한 페이지로 보여줍니다. 웹브라우져 종류나 문서 종류에 따른 가장 적합한 페이지를 보여주는 설정입니다.

 

 

※ AllowOverride 옵션

 

* None : AccessFileName에 지정된 파일을 엑세스하지 않습니다. (무시합니다.)

* All : 이전의 인증방식에 대하여 새로운 접근 방식을 우선 적용하도록 override를 허용합니다.

* AuthConfig : AccessFileName 지시자에 명시한 파일에 대하여 클라이언트 인증지시자의 사용을 허용합니다. htpasswd 유틸리티를 이용하여 AccessFileName에 명시한 파일로 제어하고자 할때 사용한다고 합니다.

* FileInfo : AccessFileName 지시자에 명시된 파일에서 addEncoding, addType 같은 문서 유형을 제어문을 허용합니다.

* Indexes : AccessFileName 지시자에 명시된 파일에서 AddIcon, FancyIndexing 같은 Directory Indexing을 제어하는 지시자를 허용합니다.

* Limit : AccessFileName 지시자에 명시된 파일에서 allow, deny 같은 접근제어 지시자를 허용합니다.

* Options : AccessFileName 지시자에 명시된 파일에서 options 같은 특정 Directory 옵션을 제어하는 지시자를 허용합니다.

 

 

.htaccess 파일은 간단하게 vi 에디터로 작성이 가능합니다.

 

※ .htaccess 옵션

 

* AuthType : 인증타입을 결정합니다. Basic과 Digest 방식이 있습니다.

* AuthName : 인증시 보여줄 메세지를 정합니다.

* AuthUserFile : 인증을 허용할 사용자의 id와 password가 저장되어 있는 위치를 정합니다.(.htpasswd) .htpasswd 파일은 보통 아파치의 /bin/htpasswd라는 유틸리티를 이용해서 생성됩니다.

* AuthGroupFile : 그룹으로 인증확인을 할 경우, 그룹인증파일명을 입력합니다.

* Limit : <Limit GET POST> 내용 </Limit> 같은 방식으로 사용할 수 있습니다. (예제는 GET과 POST 방식을 거부하는 태그입니다.)

* Limit 태그 안의 옵션

 - require valid-user : 패스워드로 인증된 사용자만이 접속할 수 있도록 합니다.

 - require group 그룹명 : 패스워드로 인증된 그룹만이 접속할 수 있도록 합니다.

 - order : 웹 서버에 접근 및 거부에 관한 명령행을 실행합니다. (deny, allow)

 - deny from <all, 아이피 등> : 옵션에 따라서 사용자 접속을 거부합니다.

 - allow from <all, 아이피 등> : 옵션에 따라서 사용자 접속을 허용합니다.

'Linux' 카테고리의 다른 글

iptable #2  (0) 2011.05.03
iptable #1  (0) 2011.05.03
mysql 패스워드 초기화 방법  (0) 2011.05.03
MYSQL 설치  (0) 2011.05.03
vi의 텍스트 찾기, 바꾸기 명령  (0) 2011.04.27
Posted by 으랏차
,

mysql 패스워드 초기화 방법

 

모르는시는 분들을 위해 올립니다.

 

1. mysql 프로세스를 죽입니다.
# ps -ef | grep mysql  (프로세서 ID확인)
# kill -9 프로세스ID

 

2. DB를 싱글모드로 실행합니다.
# cd /usr/local/mysql/bin
# /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &

 

3. root 패스워드를 변경합니다.
# mysql
mysql> use mysql
mysql> update user set password=password('암호') where user='root';
mysql> flush privileges;
mysql> quit

 

4. 다시 시작합니다.
# ./mysqladmin -uroot -p shutdown
# ./mysqld_safe &

 

mysql 패스워드 설정 방법

 

1. 디렉토리로 이동하여 mysqladmin 명령을 이용하여 패스워드를 설정합니다.

# cd /usr/local/mysql/bin

# ./mysqladmin -uroot password '암호'

 

2. Mysql Login 방법

# mysql -uroot -p

    password: 암호

'Linux' 카테고리의 다른 글

iptable #1  (0) 2011.05.03
아파치 Directory 설정  (0) 2011.05.03
MYSQL 설치  (0) 2011.05.03
vi의 텍스트 찾기, 바꾸기 명령  (0) 2011.04.27
[Linux] 시스템과 관리자용 명령어  (0) 2011.04.26
Posted by 으랏차
,

MYSQL 설치

Linux 2011. 5. 3. 14:52

두 번째 MySQL입니다.

소스로 설치하니 난감한 점이 많군요..

설치할 때 많이 헤맸습니다..;

 

우선 http://mysql.com에서 설치파일을 받습니다.

 

사용할 버전은 5.5.11인데, 이전 버전에서는 configure를 사용했으나,

5.5부터 cmake를 이용해서 설치해야 됩니다.

 

cmake는 yum을 이용하여 설치해도 되나, 전 이상하게 잘 안되더군요;;

그래서 wget을 이용하여 설치하겠습니다.

 

wget이 설치되어있지 않다면 설치해줍니다.

 

# yum install wget

 

cmake를 설치하기전에 gcc가 설치되어있어야 합니다.

 

#yum install gcc gcc-c++

 

이제 cmake를 설치해봅시다.

 

# wget http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz

 

다음과 같은 화면이 뜨면서 cmake를 받을 수 있습니다.

 

 

이제 압축을 풀고 설치까지 후다닥 해봅시다.

 

# tar -zxvf cmake-2.8.4.tar.gz

# cd cmake-2.8.4

# ./bootstrap

# make; make install

 

 

이러면 cmake는 후다닥 설치가 끝나게 됩니다.

 

자 그럼... 이제 mysql을 깔아 봅시다.

우선 mysql 사용자를 추가해줍니다.

 

# groupadd mysql

# useradd -g mysql mysql

 

압출을 풀고 cmake를 해줍니다.

 

# tar -zxvf mysql-5.5.11.tar.gz

# cd mysql-5.5.11

# cmake . -LH (-LH 옵션으로 설치 경로 등의 옵션을 볼 수 있습니다.)

 

혹여나 이런 메시지가 뜰 수 있습니다.

 

 

다음과 같은 경우는 ncurses-devel (Redhat 계열)이 설치가 안되어있기 때문에 발생합니다.

 

# yum install ncurses-devel

 

 

위 패키지를 설치한 후, mysql 압축이 풀려있는 디렉토리에 들어가서 CMakeCache.txt를 지우고 설치를 계속 합니다.

사실 cmake에도 옵션이 많습니다만, 아직 잘 모릅니다..; 저는 기본설치를 하겠습니다.

 

 

※ 간단한 cmake 옵션

  * cmake . : 기본 옵션으로 컴파일을 합니다.
  * -LH : 설치 경로 위치를 보여줍니다.
  * -DCMAKE_INSTALL_PREFIX=경로 : mysql이 설치되는 경로입니다. (기본 /bin/local/mysql)
  * -DDEFAULT_CHARSET=utf8 or euckr(기본 charset은 latin1입니다.)
  * -DWITH_EXTRA_CHARSETS=all (기본 세팅입니다.)
  * -DMYSQL_TCP_PORT=3306 (기본 세팅입니다.)

 

다음 명령어를 입력하여 설치를 마무리해봅시다.

 

# make; make install

 

 

설치는 완료되었습니다.

이제 소유권을 바꾸고 환경설정파일 세팅을 해보겠습니다.

 

# cd 설치한 경로

# chown -R mysql .

# chgrp -R mysql .

# scripts/mysql_install_db --user=mysql

 위 명령에 에러가 나시면 바로 뒤에 다음 명령어를 붙이시면 됩니다.

  --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

 

 

# chown -R root .

# chown -R mysql data

# cp support-files/my-medium.cnf /etc/my.cnf

 

서버를 구동합니다.

 

# bin/mysql_safe --user=mysql &

 안되면 user를 root로 바꿔보세요.

 

 

chown은 파일의 소유주를 바꿔주는 명령어입니다. -R은 하위파일 모두를 바꾸는 옵션입니다.

chgrp은 다 같은데 그룹을 바꿔주는 명령어입니다.

이제 mysql에 접속해봅시다.

 

# /usr/local/mysql/bin/mysql

 

실행되면 다음과 같은 화면이 나올 것입니다.

 


자 이제 패스워드를 설정해봅시다.


 

# ./mysqladmin -u root -h localhost.localdomain password '패스워드'

# ./mysql -p

 

후에 패스워드 입력하면 들어가집니다.

캡쳐에 두가지 방법으로 되어있는데, 어떤 방법으로 해도 설정됩니다.

'Linux' 카테고리의 다른 글

아파치 Directory 설정  (0) 2011.05.03
mysql 패스워드 초기화 방법  (0) 2011.05.03
vi의 텍스트 찾기, 바꾸기 명령  (0) 2011.04.27
[Linux] 시스템과 관리자용 명령어  (0) 2011.04.26
[Linux] 기본명령어  (0) 2011.04.26
Posted by 으랏차
,

(출처: www.kldp.org)

 

1. 문서 처음부터 마지막까지의 char 를 _char_ 로 치환한다.

:%s/char/_&_/g

 

2. 현재(커서 위치)부터 마지막까지의 char를 _char_ 로 치환한다.

:.,$s/char/_&_/g

 

3. buf_.*[255], buf_in[255], buf_get[255] 와 같은 문자열을 hello 로 변경한다.

:1,10s/buf_.*\[255\]/hello/g

 

4. 숫자로만 이루어진 행 찾기는 다음과 같습니다.

/^\d\+$

 

5. 특수 문자의 의미

^ : 행의 첫 부분

\d : 0~9까지의 숫자

+ : 바로 앞의 글자 (여기서는 숫자)가 1개나 1개 이상 있음 (즉 숫자가 최소한 1개 있음)

$ : 행의 마지막 부분

 

6. 현재 줄에서 add 를 plus로 치환

:s/add/plus/g

 

7. 현재 문서에서 add 를 plus로 치환

:%s/add/plus/g

:g/add/s//plus/g

 

8. 현재 줄에서 /etc/ 를 /etc/local/ 로 치환

:s$/etc/$/etc/local/$g

$ 말고도 여러 가지 문자를 쓸 수 있습니다.

:나 & 등등

 

9. '앗싸좋구나108계단' 이 '좋구나108계단앗싸' 로 바뀝니다.

:%s/\(앗싸\)\(좋구나\)\(108계단\)/\2\3\1/g

 

10. 대소문자 구분 없이 바꾸려면 i 옵션을 붙입니다. 이것은 ".vimrc" 파일을 고치지 않아도 작동합니다.

:%s/foo/bar/i

 

11. 정확하게 foo에 일치될 때만 바꿉니다. 즉 foo는 바꾸지만, foo 앞뒤로 다른 문자열이 붙어 있는 경우에는 바꾸지 않습니다.

:%s/\/bar

 

12. 정렬

123 def ghi

432 ius dkf

089 cdo lks

 

이걸 숫자를 가운데로, 두 번째는 끝, 세 번째를 처음으로 보내려면

:%s/\([0-9]*\) \([a-z]*\) \([a-z]*\)/\3 \2 \1/g

 

13. 만약 3~5자리로 이루어진 모든 숫자를 검색하고 싶다면 다음과 같이 입력한다.

/[0123456789]\{3,5\} 또는 /[0-9]\{3,5\}

 

14. 만약 `ab'로 시작하는 소문자로 되어 있는 모든 단어를 삭제하려면 다음과 같이 입력한다.

:%s/ab[a-z]*//g

 

15. 만약 test라는 파일에 cpu가 들어있는 라인을 모조리 지우고자 한다면 vi mode에서 아래와 같이 사용한다.

:g/cpu/d

# g는 모든 라인에 적용한다라는 의미이고,

# d는 delete를 의미합니다.

 

16. stat0,stat1.....stat9 패턴이 있는 라인을 모조리 지우기

:g/stat[0-9]/d

 

17. 빈 줄 두 줄을 한 줄로 바꾸기

:%s/\n\n/\n/g

 

18. 두 칸을 한 칸으로 줄이기

:%s/ / /g

 

19. 탭을 스페이스 공백으로 바꾸기

:%s/\t/ /g

 

20. 마지막에 한 칸 띠우고 엔터된 것을 바로 엔터한 것으로 고치기

:%s/ $//g 또는 :%s/ \n/\n/g

 

21. 줄 첫 칸의 띄어 쓰기를 없애기

:%s/^ //g

 

22. 잘못 바꾸기를 했을 때 되돌리려면 그냥 u 키를 누르면 됩니다.

그리고 u를 눌러 취소했는데(undo), 다시 하고 싶다면 (redo) Ctrl+R을 누르면 됩니다.

 

23. 찾기 후 블록 해제하는 방법

:noh

검색할 때 블록이 안 생기도록 하려면

:set nohlsearch

 

24. 줄 뒤 공백 문자 모두 지우기

:%s/[ \n]*//g

 

25. 빈 줄 모두 삭제하기

:g/^$/d

 

26. 소문자 a가 포함되지 않은 줄만 모두 삭제

:%g!/a/d

g : 다음이 패턴이 나타나는 줄에 대해 명령을 실행

g! : 다음의 패턴이 나타나지 않는 줄에 대해 명령을 실행

'Linux' 카테고리의 다른 글

mysql 패스워드 초기화 방법  (0) 2011.05.03
MYSQL 설치  (0) 2011.05.03
[Linux] 시스템과 관리자용 명령어  (0) 2011.04.26
[Linux] 기본명령어  (0) 2011.04.26
[Linux] 내부 명령어  (1) 2011.04.26
Posted by 으랏차
,

du : 지정된 특정 디렉토리나 파일들이 차지하는 공간을 보고한다.

   디렉토리나 파일을 지정하지 않으면 현재 디렉토리로 간주, 크기는 1k바이트 크기로 보고한다.

 

옵션

-s : 총 합계만을 따진다. 하위 디렉토리의 숫자 등은 나오지 않는다.

-a : 크기가 계산된 각 파일의 크기를 보인다.

-b : 바이트 크기로 출력한다.

-x : 현재 디렉토리에 마운트된 파일 시스템만 검사된다.

-L : 심볼릭 링크 자신의 공간 대신 연결된 파일의 크기를 다룬다.

 

 

 

df : 디스크의 여유 공간을 검사하여 보고한다.

 

옵션

-a : 0 블록을 가진 파일도 보고한다. 기본적으로는 무시한다.

-i : 블록 사용 대신 incode 사용정보를 보고한다.

-v : System V의 df와의 호환을 위한 옵션이다. 무시된다.

-t : 특정 형태의 파일 시스템으로 검사를 제한한다.

-x : 특정 형태의 파일 시스템 이외의 것으로 검사를 제한한다.

 

 

 

ps : 프로세스 통계(Process Statics)를 나타낸다.

   현재 실행중인 프로세스들을 사용자와 PID(프로세스 아이디)에 의해서 보여준다.

 

옵션

-l : 긴 형식으로 출력한다.

-u : 실행 유저와 실행 시간을 표시한다.

-j : 작업 제어(job control) 형식으로 출력한다.

-s : 시그널 형식으로 출력한다.

-m : 메모리 정보를 보여준다.

-a : 다른 사용자의 프로세스 현황을 보여준다.

-x : 터미널 제어 없이 프로세스 현황을 표시한다.


'Linux' 카테고리의 다른 글

MYSQL 설치  (0) 2011.05.03
vi의 텍스트 찾기, 바꾸기 명령  (0) 2011.04.27
[Linux] 기본명령어  (0) 2011.04.26
[Linux] 내부 명령어  (1) 2011.04.26
[Linux] 텍스트 처리 명령어  (0) 2011.04.26
Posted by 으랏차
,

[Linux] 기본명령어

Linux 2011. 4. 26. 10:30

리눅스는 대문자와 소문자를 구별한다.

기본명령어 사용시 대/소문자에 유의해서 사용해야 한다.

 

ls : 파일 시스템 상의 파일의 목록을 보여준다.

 

옵션

-a : 도트로 시작되는 이름을 가진 파일명도 전부 보여준다

-l :  각 파일들에 대한 소유자, 권한, 갱신일 등의 자세한 정보

-i : 파일의 inode 번호를 보여준다.

-r : 정렬된 순서의 역으로 출력한다.

-u : 엑세스(access)한 날짜 순서대로 정렬한다.

-C : 가로 순서로 나열하여 출력한다.

-R : 현 디렉토리의 내용은 물론이고 서브 디렉토리의 내용까지 전부 보여준다.

 

 

cp : 파일을 현재위차, 또는 다른위치로 복사한다. 파일존재시 기존파일이 새 복사본 파일로 바뀐다.

 

옵션

-a : 가능한한 원 파일의 구조와 속성을 그대로 복사

-R : 디렉토리를 재귀적(recursive)으로 복사

-b : 복사할 때 덮어쓰게되는 파일은 백업을 만든다.

-P : 원본 파일의 소유자, 그룹, 권한, 시간 기록을 그대로 복사한다.

-d : 심볼릭 링크는 심볼릭 링크로 복사한다. 그리고 원본 파일과의 하드링크 관계를 유지한다.

-f : 복사위치에 존재하는 파일을 제거하고 복사한다.

 

 

mv : 파일 이동(move)이나 이름 변경 명령어. cp와 rm을 합친것과 동일

 

옵션

-b : 대상 파일이 지워지기 전에 백업 파일을 만든다.

-f : 대상 파일의 접근허가와 관계없이 무조건 파일을 이동한다.

-i : 대상 파일이 기존 파일이면, 덮어 쓸 것인지 물어본다.

-u : 대상 파일보다 원본 파일이 최근의 것일 때 업그레이드 한다.

-v : 파일 옮기는 과정을 자세히 보여준다.

 

 

rm : 파일을 삭제. -f 옵션 사용시 디렉토리까지 삭제

 

옵션

-f : 지울 파일이 있을 경우 강제로 삭제

-i : 지울 파일이 있을 경우 지울 것인지 물어봄

-r : 하위 디렉토리에 있는 모든 파일을 삭제

-v : 지우는 파일 정보를 출력

 

 

mkdir : 디렉토리를 생성한다.

 

옵션

-m :새로운 디렉토리의 허가모드를 지정한 모드로 설정한다.

-p : 부모 디렉토리가 존재하지 않는 경우 자동 생성한다.

 

 

chmod : 파일의 모드를 바꾼다. 파일의 모드는 권한(permission)을 제어한다.(8진수로표현)

 

옵션

-c : 실제로 파일의 권한이 바뀐 파일만 자세히 기술한다.

-f : 파일의 권한이 바뀔 수 없어도 에러메시지를 출력하지 않는다.

-v : 변경된 권한에 대해서 자세히 기술한다.

-R : 디렉토리와 파일들의 권한을 재귀적으로 모두 바꾼다.

 

 

ln : 두 개의 파일 사이에 링크를 만들어, 하나의 파일을 두 개 이상의 이름으로 접근 가능하게 함

  파일 복사대신 링크 사용시 디스크 공간을 절약할 수 있음

 

옵션

-s : 하드 링크 대신 심볼릭 링크를 만든다.

 

 

find : 원하는 특정 파일을 디렉토리 탐색으로 찾는다. 파일 조건은 이름, 크기, 날짜 등 지정 가능

   매우 강력한 도구로 특정 디렉토리들을 순회하면서 지정된 조건에 만족하는 파일을 찾는다.

 

옵션

-name 파일명 : 찾고자 하는 파일의 이름을 지정. 와일드 카드도 가능하다.

-perm 모드 : 파일 permission이 일치되는 것을 찾는다. 원하는 권한은 ls로 볼 수 있는 형태와 같음

-type ? : 형태가 같은 파일을 찾는다.

    ? 부분 : 디렉토리 d, 파이프 p, 심볼릭 링크 l, 블록파일 b, 일반파일 f

-links ? : 특정 개수의 링크를 가진 파일을 찾는다. ? 부분에 링크의 숫자를 표기

-size ? : 파일의 크기가 일치하는 것을 탐색한다. 파일 크기는 블록단위로 ? 부분에 지정.

     한 블록은 512바이트, 블록숫자 뒤에 k를 붙이면 키로바이트 단위 블록숫자로 간주

-user 사용자 : 파일 사용자의 ID에 따라서 검색. 로그인 이름이나 번호 모두 가능

-atime ? : 최근 며칠내에 엑세스한 파일을 검색한다. 날짜수는 ?에 명시

-exec 명령 : 원하는 검색 조건에 맞는 파일을 찾으면 명시된 명령을 실행.

       명령의 끝은 \;을 사용하여 끝낸다.

       find가 검색해낸 파일 이름 인수로 사용하고 싶을때는 그 위치에 {} 사용

-newer 파일 : 어떤파일보다 최근에 갱신된 모든 파일을 검색한다.

Posted by 으랏차
,