<방화벽 설정 명령>

~]# lokkit   // (usr/sbin/lokkit)
~]# iptables  -F   // (방화벽 해제)<네트워크 설정 명령>
~]# ntsysv   // 서비스 설정 명령
~]# pathping  <IP 주소>   // tracert 기능에 네트워크 트래픽 기능 추가
~]# vi  /etc/sysconfig/network   // 기본게이트웨이 설정파일(호스트네임,게이트웨이)
~]# vi  /etc/sysconfig/network-scripts/ifcfg-eth0   // 호스트 설정파일 (IP주소, 넷마스크)
~]# vi  /etc/resolv.conf   // 기본 DNS 설정파일
~]# ifconfig  ehth0  192.168.0.100  netmask  255.255.255.0  broadcast 192.168.0.255  up
    // (ifconfig 명령어로 IP 셋팅하기)
~]# /etc/rc.d/init.d/network  restart  또는 service  network  restart
    // 네트워크 설정변경 적용
~]# netconfig   // 네트워크설정(반드시 수퍼유저{root}권한으로 실행)
~]# vi  /etc/hosts   // 호스트명 변경

< CD-ROM 마운트 하기 >
~]# mount  -t  auto(또는iso9660)  /dev/cdrom(또는hdc)  /media/cdrom/
~]# df  -T   // cd-rom 마운트 확인
~]# cd  /media/cdrom/Centos/RPMS/
RPMS]# ls  -l  |  grep  snmp   // 설치할 파일(예, snmp) 확인
~]# umount  /media/cdrom/   // 마운트 해제
~]# vi  /etc/fstab   // 자동마운트 시킬때

< RPM 사용법>
~]# rpm  -Uvh  <패키지 파일>   // 설치
~]# rpm  -e   <패키지 파일>   // 삭제
~]# rpm  -qa  <패키지 이름>   // 시스템에 패키지가 설치되었는지 확인

< yum 사용법>
~]# yum  -y  install  <패키지 이름>
~]# yum  check-update // 업데이트 가능한 목록보기
~]# yum  update  <패키지 이름>
~]# yum  remove  <패키지 이름>
~]# yum  info  <패키지 이름>   // 정보확인
~]# yum  localinstall  <패키지 이름>  
    // 로컬에서 설치 (현재디렉토리에 있는 rpm파일을 설치)
    // yum 설치시 다운로드 속도가 느릴때”Ctrl + C”를 눌러서 다른 미러 사이트에 접속해 서 새로 다운로드 한다.

< ping 명령에 반응 막기 > – /etc/sysctl.conf
~]# sysctl  -a   // 설정이 가능한 파라미터 값들을 확인
~]# sysctl  -w  net.ipv4.icmp_echo_ignore_all=1
    // 값이 “0”이면 응답하고 , “1”이면 응답하지 않는다.
~]# sysctl  -p   // 설정한 뒤에 이명령으로 설정사항을 바로 적용

< 사용자 접속제한하기> – 계정사용자의 경우
/etc/passwd에 있는 사용자 패스워드 필드에 *표시 (로그인X)
예) ~]# vi  /etc/passwd
         testuser : * : 10877 : 0 : 99999 : 7 : : :
다시 접속할 경우 ” ~]# passwd  testuser “명령으로 패스워드 입력

< 모든 사용자에 대한 일시 접속금지> – 시스템 점검시
~]# touch  /etc/nologin
    // “/etc”에 ” nologin”이란 파일을 만들어 줌 다시 접속허용할 경우 ” nologin ” 파일을 지움

< 그룹별 계정 생성법>
~]# useradd  -D   // 사용자 계정 생성시에 적용되는 설정내용 확인
~]# mkdir  /home/groupone
~]# useradd  -D  -b  /home/groupone   // 기본 홈디렉토리 변경

<시스템 시작과 종료>
“shutdown  -h  now”  또는  “halt”  또는  “init  0”   // 시스템 종료 명령
“shutdown  -r  now”  또는  “reboot” 또는 “init  6”   // 시스템 재부팅
shutdown  -h  +10m   // 10분 후에 종료 ( h : halt )
shutdown  -r  22:00   // 오후 10시에 재가동 ( r : reboot )
shutdown  -c   // 진행중인 shutdown을 취소 ( c : cancel )
shutdown  -k  now  // 현재 접속된 사용자에게 종료된다는 메시지만 보내고, 실제로 종료하지는 않음
~]# cat  /etc/inittab // 렌레벨이 정의되어 있는 파일
~]# man  <명령어>   // 명령어에대한 도움말
~]# cp  abc.txt  cba.txt   // abc.txt 파일을 cba.txt 파일로 복사
~]# cp  -r  abc  cba   // 디렉토리 복사
~]# touch  abc.txt   // 파일이 없을 경우엔 abc.txt 라는 빈 파일을 생성
     (abc.txt 파일이 있을 경우엔 파일의 수정 시간을 현재 시각으로 변경함)
~]# mv  aaa  bbb  ccc  ddd   // aaa,bbb,ccc 파일을 ddd  디렉토리로 이동
~]# mv  abc.txt  cba.txt   // 이름 변경


<사용자와 그룹>
~]# adduser  -d  <홈 디렉토리>  <사용자명>   // 별도로 사용자의 홈디렉토리를 지정
~]# adduser  -u  <사용자 id>  <사용자명>
    // 사용자 id(예,501)를 순차 번호가 아닌 임의로 지정
   // “사용자 id”는 “/etc/passwd” 파일을 “그룹 id”는 “/etc/group”파일을 열어보면 확인할 수 있다.
~]# adduser  -g  <그룹명>  <사용자명>  또는 adduser  <사용자명>  -g  <그룹명>
    // 별도의 그룹을 지정
~]# adduser  -s  <셸 파일명>  <사용자명>
    // /bin/bash 외의 별도의 셸을 지정
~]# adduser  -c   // 설명

※.사용자 생성시 별도의 옵션 없이 “adduser <사용자명>”으로 하면 사용자 이름과 동일한 그룹이 자동으로 생김
     ( /etc/passwd : 사용자가 등록,   /etc/group : 그룹이 등록 )
~]# su  –   // 수퍼유저(root)의 권한을 얻는 명령

<파일과 디렉토리의 소유와 허가권>
rwx  r–  r–   // 첫번째 “rwx”는 소유자(user) , 두번째 “r–“는 그룹(group) , 세번째 “r–“는 그외의 사용자(other)의 파일 접근 권한을 의미한다.
~]# chmod  777  install.log   // install.log라는 파일의 허가권을 변경하는 명령
~]# chown  <새로운 사용자명>[.<새로운 그룹명>]  <파일명>
    // 파일 소유권 변경 명령
~]# chgrp  <새로운 소유그룹>  <변경할파일(디렉토리)>
예) ~]# chown  root.root  install.log
    // install.log파일의 소유자,소유그룹을 root로 바꾸라는 의미

< 하드 링크(Hard Link)와 소프트 링크(Soft Link) >
~]# ln  <링크 대상 파일명>  <링크 파일명>
    // 하드 링크 생성 명령 (원본 파일이 없어져도 이상이 없음)
~]# ln  -s  <링크 대상 파일명>  <링크 파일명>
    // 소프트 링크 생성 명령 (원본 파일이 없어지면 연결 끊어짐)
~]# mkdir  linktest   // 링크를 테스트할 디렉토리를 만든다.
~]# cd  linktest
linktest]# vi  basetest   // 아래 내용 입력
    파일 링크를 테스트하기 위한 원본 파일입니다..
linktest]# ln  basetest  hardlink   // 하드 링크 연결
linktest]# ln  -s  basetest  symbollink   // 소프트 링크 연결
linktest]# ls  -il   // inode를 확인
linktest]# mv  basetest  ../   // 원본 파일을 다른 곳으로 이동
linktest]# cat  hardlink  와  cat  symbollink   // 하드 링크와 심볼릭 링크를 각각 확인

< 파일 압축과 파일 묶기>
~]# tar  cvf  xinetd.tar  /etc/xinetd.d/   //   /etc/xinetd.d/를  xinetd.tar로 생성(묶음)
~]# tar  cvfz  xinetd.tar.gz  /etc/xinetd.d/   //  생성 + gzip 압축
~]# tar  cvfj  xinetd.tar.bz2  /etc/xinetd.d/   //  생성 + bzip2 압축
~]# tar  tvf  xinetd.tar   // 묶음의 경로 확인
~]# tar  xvf  xinetd.tar   // 묶음 파일 풀기
~]# tar  xvfz  xinetd.tar.gz   // gzip 압축 해제 + tar 풀기
~]# tar  xvfj  xinetd.tar.bz2   // bzip2 압축 해제 + tar 풀기
~]# gzip  <파일명>   // “파일명”을 압축파일인 “<파일명>.gz”으로 만들어줌
~]# gunzip  <파일명>.gz  또는  gzip  -d  <파일명>.gz   // 확장명 gz의 압축을 풀어줌
~]# bzip2  <파일명>   // “파일명”을 압축 파일인 “파일명.bz2″으로 만들어줌
~]# bunzip2  <파일명>.bz2  또는  bzip2  -d  <파일명>.bz2
    // 확장명 bz2의 압축을 풀어줌

<파일 위치 검색>
find [경로] [옵션] [조건] [action] // [옵션] : -name, -user(소유자), -newer(전,후), -perm(허가권)
{사용 예}   // [action] : -print(GNU는 디폴트, 유닉스는 필수 입력), -exec
~]# find  /  -name  .searchfile  -exec  ls  -l  {}  \ ;
    // 특정파일을 모두 찾아서 각각 “ls -l”하여 리스트 확인
~]# find  /etc  -name  “*.conf”  |  more
    // “/etc” 디렉토리 하위에 확장명이 “.conf”인 파일 검색
~]# find  /home  -user  fedora
    // “/home” 디렉토리 하위에 소유자가 “fedora”인 파일 검색
~]# find  ~  -perm  644
    // 현재 사용자의 홈 디렉토리 하위에 허가권이 644인 파일 검색
~]# which  <실행 명령어>
    // PATH에 설정된 디렉토리만 검색 , 절대 경로를 포함한 위치 검색
~]# whereis  <실행 명령어>   // 실행 파일 및 소스, man, 페이지 파일까지 검색
~]# local  <파일 이름>
    // 매우 빠르고 유용하지만 새로 설치된 파일들이 등록되어 있지 않을 때는 찾을 수 없음

<파이프,필터,리다이렉션>
1. 파이프(pipe) : 두 프로그램을 연결해주는 연결 통로의 의미, “|”문자를 사용함(\키를 shift와 함께 누른 글자)
   예) ~]# ls  -l  /etc  |  more
    // 그냥 “ls  -l  /etc” 명령을 입력하면 페이지가 넘어가므로 한 개 페이지씩 보여줌
2. 필터(filter) : 필요한 것만 걸러주는 명령어, grep,tail,wc,sort,awk,sed 등 주로 파이프와 같이 사용된다.
   예) ~]# ps  -ef  |  grep  bash   // “bash”라는 글자가 들어간 프로세스만 출력
       ~]# rpm  -qa  |  grep  bind
    // 설치된 패키지 중에서 “bind”라는 글자가 들어간 패키지를 출력
3. 리다이렉션(redirection) : 표준 입출력의 방향을 바꿔줌
   예) ~]# ls  -l  >  aa.lst
         // “ls -l”의 결과를 화면에 출력하지 말고, aa.lst라는 파일에 쓰도록 한다.
    단, aa.lst 파일이 기존에 있으면 덮어 쓴다(overwrite).
       ~]# ls  -l  >>  aa.lst
         // 위와 동일. 단, aa.lst 파일이 기존에 있으면 기존의 내용에 이어서 씀(append)
        ~]# sort  <  aa.lst    // aa.lst 파일을 정렬해서 화면에 출력한다.
        ~]# sort  <  aa.lst  >  bb.lst   // aa.lst 파일을 정렬해서, bb.lst 파일에 쓴다.

<프로세스,데몬,서비스>
~]# ps  -ef  |  grep  <프로세스 이름>   // 현재 프로세스의 상태를 확인하는 명령
~]# kill  -9  <프로세스 번호>
    // 프로세스를 강제로 종료하는 명령, “-9” 옵션과 함께 사용하면 무조건 종료 응답을
        하지 않고 무한 루프를 도는 프로세스는 이 명령으로 강제 종료
~]# pstree    // 부모 프로세스와 자식 프로세스의 관계를 트리 형태로 보여준다.
~]# vmstat  3  5    // 프로세스,메모리,페이지 상황을 3초마다 5개씩 알려준다.
1. 무한 루프를 도는 프로세스 중지 방법
    ~]# yes  >  /dev/null    // 무한 루프를 도는 단순한 프로세스 생성
    ~]# ps  -ef  |  grep  yes    // 프로세스 번호 확인
    ~]# kill  -9  <프로세스 번호>
       // 프로세스 종료   ( 또한, 프로세스를 그냥 종료하려면 “Ctrl+C” )
2. 포그라운드 프로세스 → 백그라운드 프로세스 → 포그라운드 프로세스로 프로세스의 상황
   바꾸기
    ~]# yes  >  /dev/null
       // 포그라운드 프로세스 생성하고 “Ctrl+Z”를 눌러 프로세스를 일시 중지 시킨다
    ~]# bg   // 잠시 중지된 프로세스를 백그라운드 프로세스로 계속 실행
    ~]# jobs   // 현재 백그라운드로 가동중인 작업을 확인
         [1]+Running   yes >/dev/null  &   // 맨앞에 나오는 [1]이 <작업 번호>
    ~]# fg  <작업 번호>   // 다시 포그라운드 프로세스로 만든다
    ~]# gedit  &   // gedit 를 실행한 터미널을 계속 사용할 수 있도록 백그라운드로 실행
       // firefox,gedit 등은 별도의 창이 가동되어 실행하는 것이므로 백그라운드로 실행해도
           아무 문제가 없다 하지만, vi 에디터와 같이 현재의 터미널에서 입출력을 해야 하는
           프로세스는 백그라운드 실행하면 의미가 없다.

<서버 데몬의 유형>
데몬(daemon)  =  서비스  =  서버 프로세스
1. Standalone 타입의 데몬 :
   – 시스템에 독자적으로 프로세스가 구동되어 서비스를 제공하는 데몬
   – 웹 서버(httpd), DB 서버(mysqld), 센드메일 서버(sendmail), 네임 서버, samba등
   – 실행 및 종료는 대개 “service  <데몬이름>  start/stop/restart” 로 사용된다.
   – 실행 스크립트 파일은 “/etc/init.d/(서비스)” 디렉토리에 주로 들어 있다.
     단, 이 디렉토리에 있다고 전부 데몬이라고 얘기하지는 않는다.
   – 메모리에 항상 구동되어야 하기 때문에 자주 호출되는 서비스가 사용하기에 적당함
2. inetd 타입(또는 xinetd 타입)의 데몬 – 수퍼데몬
   – 평상시에는 구동되지 않다가, 서비스를 요청할 때만 구동시켜 주는 방식
   – 데몬 설정 파일은 “/etc/xinetd.d/ 디렉토리에 들어 있다.
   – 내부 설정 파일을 수정하면 반드시, “service  xinetd  restart” 명령으로 재시작해야 한다.
   – xinetd 데몬이 서비스하는 포트는 “/etc/services” 파일에 설정이 되어 있다.

<root 사용자의 비밀번호를 잊어버려서 로그인을 하지 못할 경우 해결 방법>
1. 재부팅을 하여 아래 내용의 화면이 나오면 아무키나 누른다.
   Booting  Fedora  Core  (2.6.11-1.1369_FC4)  in  3  seconds. . . . .
2. GRUB의 메뉴 화면이 나타난다.
 ① Fedora  Core  (2.6.11-1.1369_FC4
    // 여기에 커서를 두고 “e” 키를 누른다. ( e : Edit )
 ② kernel  /boot/vmlinuz-2.6.11-1.1369_FC4  ro  root=LABEL=/  rhgb  quiet
    // 커서를 두고 “e”키
 ③ grup edit> kernel  /boot/vmlinuz-2.6.11-1.1369_FC4  ro  root=LABEL=/  rhgb  quiet 1      
    // “1”을 입력 Enter
  ④ 2번 화면에 “1” 이 추가 되어 있을 것이다. “b”를 눌러 부팅한다.
3. 부팅은 런레벨1(싱글모드)로 부팅이 될 것이다.
    // 그냥 root 사용자로 로그인이 자동으로 된다.
   sh-3.00# whoami   // 현재 로그인된 사용자 확인
   sh-3.00# passwd   // 자신(root)의 비밀번호 변경
   sh-3.00# reboot  
    // 재부팅 후에 변경한 root의 비밀번호로 정상적으로 로그인이 될 것이다.

<GRUB 부트 로더에 암호 설정 방법> – /etc/grub.conf (설정파일)
~]# grub
grub> md5crypt
    Password :  ****   // 사용할 암호 입력
    Encrypted :  $1$ndrkx0$UUvidooZmqnuGfKjBxU4G0
    // 다음과 같이 암호화된 결과가 나온다
grub> quit   // grub를 종료
~]# vi  /etc/grub.conf
      # boot=/dev/hda
      password   –md5   $1$ndrkx0$UUvidooZmqnuGfKjBxU4G0
       // 위의 암호화된 결과를 입력
      default=0   // 기본적으로 부팅되는 부트 엔트리 번호 (순번은 0,1,2,3 ..으로 매겨짐)
      timeout=5   // 초기에 부팅될 때 5초 동안 여유를 준다는 의미
      splashimage=(hd0,0)/boot/grub/splash.xpm.gz
       // GRUB 메뉴의 부팅 이미지 파일을 지정한 부분
      hiddenmenu   // 기본적으로 GRUB 부트 로더를 보여주지 않는 설정
       // hd(0,0)  :  – 첫번째 “0”은 첫번째 하드디스크인 “/dev/hda”장치를 의미
                       – 두번째 “0”은 첫번째 파티션인 “/dev/hda1 장치를 의미
GRUB 설정파일을 저장하고 시스템 재부팅하여 GRUB 부트 로더로 부팅 하면 “e”키는 눌리지 않을 것이다. “p”를 눌러서 위에서 설정한 비밀번호 입력하면 사용을 할수가 있다.

< cron과 at >
cron : – 주기적으로 반복되는 일을 자동적으로 실행될 수 있도록 설정해 놓는 것
        (예약된 작업)
        – 관련된 데몬(서비스)은 crond , 관련 파일은 /etc/crontab
        – /etc/crontab의 내용은 “분,시,일,월,요일,권한,실행” 명령 순으로 되어 있다.
          (요일 부분은 0~6까지 일요일~월요일,  “0”을 입력하면 “일요일”을 의미 한다.)
at : 일회성 작업을 예약하는 것. 즉, 예약을 해 놓으면 한 번만 실행되고 소멸되는 것이다.
      ⓐ 예약 : ~]# at  3:00  am  tomorrow   // 내일 새벽 3시
                    ~]# at  11:00  pm  January  30   // 1월 30일 오후 11시
                    ~]# at  now  +  1  hours   // 1시간 후
      ⓑ at> 프롬프트에 예약 명령어 입력 후, Enter
      ⓒ 완료되면 “Ctrl+D”
      ⓓ 확인 : ~]# at  -l
      ⓔ 취소 : ~]# atrm  <작업 번호>

(매월 15일 새벽 3시 1분에 “/home” 디렉토리와 그 하위 디렉토리를 /backup 디렉토리에 백업하기)
~]# service  crond  status
    // cron 데몬이 가동하고 있는지 확인 (기본적으로 가동이 되어 있을 것이다.)
~]# vi  /etc/crontab
    01  3  15  *  *  root  run-parts  /etc/cron.monthly
~]# cd  /etc/cron.monthly/
cron.monthly]# touch  abc.sh   // 메시지를 출력하는 스크립트 파일 생성
cron.monthly]# chmod  755  abc.sh   // 속성을 실행 가능하도록 바꿔준다.
cron.monthly]# vi  abc.sh   // 아래 쉘 스크립트 내용 입력
     # ! /bin/sh
     set  $(date)
      // 현재날짜를 추출해서 /backup 디렉토리에 “backup-<현재날짜>.tar.gz”으로 fname=”backup-$2$3.tar.gz”  “/home” 디렉토리 전체의 백업 파일을 생성하라는 의미
    tar  cfz  /backup/$fname  /home
cron.monthly]# mkdir  /backup   // 백업용 디렉토리 생성

cron.monthly]# service  crond  restart
cron.monthly]# date  011503002005
    // “01월 15일 03시 00분 2005년”으로 날짜를 강제로 바꾸기
cron.monthly]# service  crond  restart
cron.monthly]# date   // 현재 날짜 정보 확인
(내일새벽 4시에 시스템을 최신 패키지로 업데이트하고, 완료되면 시스템을 재부팅하는 것을 at으로 예약하기)
~]# at  4:00  am  tomorrow
at> yum  -y  update
at> reboot
at> <EOT>   // Ctrl + D 입력
job  1  at  2005-06-17  04:00
~]# at  -l
쉘(shell) – OS 명령어 해석, 사용자의 사용환경 제공, DOS 의 command.com 의 역할
~]# cat  /etc/shells   // 쉘의 종류 정의되어 있음
~]# echo  $SHELL   // 현재 사용중인 쉘의 종류 확인
~]# chsh   // 사용하고자 하는 쉡 변경
    New  shell  [/bin/bash] : /bin/csh
~]# crontab  -e   // 서버의 시간을 주기적으로 맞게 수정 하려면 아래 내용 입력
    0 0 * * 1   root   /usr/bin/rdate   -s   time.bora.net   /sbin/clock   -w
    // 시스템 시간을 맞추기 위해 time server 로 사용할 수 있는 서버
       (” time.bora.net ”  ,  ” time.kriss.re.kr ”  ,  ” time.nuri.net ” )
~]# history   // 이전에 사용했던 명령어 확인

~]# ! 6    // 이전에 사용했던 6번 명령어 다시 사용
~]# cat  .bash_history   // 기존에 사용했던 명령어 모두 저장
<root 의 원격 로그인 허용 및 제한 설정>
/etc/securetty :  root가 로그인 가능한 터미널(tty) 장치명들을 나열해 둔 것
~]# vi  /etc/securetty
   # ttyp0   // pseudo 터미널을 통한 root의 접속 (앞에 주석처리 하면 원격지에서 root로 접속 안됨)
   # ttys0   // 시리얼 라인 또는 모뎀을 통한 root의 접속
~]# vi  /etc/ssh/sshd_config
   PermitRootlogin   yes 나 no   // 원격지에서 SSH로 root접속 허용
~]# cat  aa  bb  >  cc
    // aa와 bb를 합쳐 cc에 입력 (cc파일에 내용이 있는 경우 지워짐)
~]# cat  aa  bb  >>  cc  
    // 기존 내용에 추가 하여 입력 (cc라는 파일이 없었을 경우 새로 생성)
~]# head  -5  install.log   //  파일 앞부분 5라인만 내용 확인
~]# tail  -5  install.log   // 파일 뒷부분 5행만 보여줌
~]# sort  name.txt   // 파일 내용 정렬하기
~]# sort  -r  name.txt   // 반대로 정렬
~]# file  name.txt   // 파일의 종류 확인
~]# pwconv   // shadow 패스워드로 변환 명령
~]# pwunconv   // 원래 패스워드로 전환
~]# uptime    // 시스템 부하율 점검 (1분,5분,15분 동안의 시스템 부하율을 각각 평균하여 나타냄)
~]# top   // 시스템의 전체 운용상황 점검
~]# w   // 사용자 로그인 정보와 현재 작업 내용 확인


<로그 파일 종류>
/dev/console(콘솔 로그) – 콘솔에 뿌려지는 로그   // 관련 데몬(kernel)
/var/log/messages(시스템 로그) – 리눅스 커널 로그 및 주된 로그   // 관련 데몬(syslogd)
/var/log/secure(TCPD 로그) – inetd 에 의한 로그   // 관련 데몬(inetd)
/var/log/maillog(메일 로그) -sendmail 에 의한 로그   // 관련 데몬(sendmail, popper)
/var/log/boot.log(부팅 로그) – 시스템 부팅시의 로그   // 관련 데몬(boot)
/var/log/xferlog(FTP 로그)   // 관련 데몬(ftpd)
/usr/local/apache/logs/access_log(웹 로그)   // 관련 데몬(httpd)
/var/log/named.log(네임서버 로그)   // 관련 데몬(named)


<로그 파일 관리> – logrotate
/etc/cron.daily/logrotate   // 주기적인 실행을 위한 cron설정파일
/etc/logrotate.conf   // 기본 설정 파일
/etc/logrotate.d   // 각종 설정 파일 저장 디렉토리
/usr/sbin/logrotate   // 주 데몬
/var/log   // 시스템의 모든 로그 기록, 관리
/etc/syslog.conf   // 시스템 로그데몬(syslogd)이 실행 될 때 참조되는 로그 파일 설정 설정 파일

[출처] 리눅스 서버 공부 같이 하기 :: 네이버 카페 | 작성자 – 서비스

.