IT_Server/Linux

[LINUX] 서버 Tip

JJun ™ 2007. 7. 5. 08:22
LONG
 
▶▷ 2U intel l440gx+ scsi 설정 ◁◀
boot: linux apic resuce
 

▶▷ perl-5.8.0 설치 및 Encode 모듈 설치 ◁◀
- 모듈 설치 유무 검사
아래 명령을 실행해서 아무런 메세지 없이 실행되면 모듈이 설치되어 있는 것입니다.
$ perl -e "use Encode"
- 모듈 설치
일반적으로 Perl 모듈은 각 모듈 소스를 다운로드 받아 직접 설치과정을 거쳐야합니다.
하지만, CPAN 모듈이 설치되어 사용할 수 있다면, 아래 명령으로 보다 쉽게 관련 모듈을 설치할 수 있습니다.
# perl -MCPAN -e "install Encode"

# gzip -dc stable_tar.gz | tar xf -
# cd perl-5.8.0
# sh Configure  -Dcc=gcc  -de
# make
# make test 
# make install
Do you wish to have /usr/bin/perl be the same as /usr/local/bin/perl? [y]  at installperl line 483. y
# perl -v

 

▶▷ src.rpm 설치 sendmail(샌드메일) ◁◀
rpm -qa | grep send
rz
vi /etc/redhat-release
dir
rpm --rebuild --target i686 sendmail-8.12.10-1kr.src.rpm
-----------------------------------------------------------------------
libsasl........
-----------------------------------------------------------------------
rpm -Uvh sendmail-8.12.10-1kr.src.rpm
cd /usr/src/redhat/SPECS/
dir
rpm -qa | grep sasl
rpm -qa | grep ssl
vi sendmail.spec
-------------------------------------------------------------------------
Requires: cyrus-sasl >= 1.5.24-20 openssl >= 0.9.6b
BuildRequires: cyrus-sasl-devel >= 1.5.24-20 openssl-devel >= 0.9.6b
#
-------------------------------------------------------------------------

rpm -bb --target i686 sendmail.spec
rpmbuild -bb --target i686 sendmail.spec
cd ../RPMS/i686/
dir
rpm -Uvh sendmail-cf-8.12.10-1kr.i686.rpm
rpm -qa | grep send*
rpm -qa | grep send
cd /etc/mail
dir
vi virtusertable
ps -ef
/etc/rc.d/init.d/sendmail restart
/etc/rc.d/init.d/sendmail restart

 

▶▷ 한라인 쉘 sendmail 보내기 ◁◀
echo -ne "Subject: databases\nasdfasdf\n" | sendmail -t -f
hd0658@hotmail.com webpd@nayana.com

 

▶▷ redhat 9.0, fedora sendmail.mc, sendmail.cf 수정 ◁◀
  - localhost에서만 보내는 메일에 대한 relay가 디폴트일 경우가 많으므로 메일 서버로의
    사용을 위해서 해당 부분 설정
  DAEMON_OPTIONS('Port=smtp, Addr=127.0.0.1, Name=MTA')dnl
  
   위의 설정 내용에서 앞에 dnl을 추가함(주석 처리 효과)

   이렇게 수정 완료후, 아래의 명령어를 통해 sendmail.cf 파일을 재생성
   m4 sendmail.mc > sendmail.cf
  - 그 다음에 sendmail 리스타트

 

▶▷ 스위치 snmp, mrtg 설치 ◁◀
cd /home/icom/html/mrtg2/
ll
cd s211-130/
dir
vi s201.cfg
cd s211-130/
pwd
cd ../bin/
dir
./cfgmaker --global 'WorkDir: /home/icom/html/mrtg2/s211-130' --global 'Options[_]: bits,growright' --output /home/icom/html/mrtg2/s211-130.cfg
nayana@211.218.126.130
vi ../s211-130.cfg
dir
ll
./indexmaker ../s211-130.cfg > index.html
mv index.html ../s211-130
cd ../s211-130
dir
ll
pwd
ll
ll -al
vi /etc/crontab
perl /home/icom/html/mrtg2/bin/mrtg /home/icom/html/mrtg2/s211-130.cfg
ll
vi /etc/crontab

 

▶▷ intel Pro/100 랜카드 에러 잡기 ◁◀
OS:              Red Hat 8.0
Hardware:    IBM Thinkpad T23
                   Intel Pro/100 VE
Issue:
There is an apparent issue with the internal network card that is built-in on the IBM Thinkpad T-23 when used with Red Hat 8.0 (maybe other distros also, but I have only had Red Hat installed on that model of laptop).  The card that comes with the laptop is an Intel Pro/100 VE.  Apparently when sleep mode is enabled it can cause PCI bus errors which cause the network functions to stop working until you restart the network services. 
Symptoms:
-- You will intermittantly lose network connectivity although the interface reports itself in the up state.
-- Additionally you may see the following error listed in /var/log/messages
   kernel: eepro100: wait_for_cmd_done timeout!
Resolution:
-- First you will need to download and compile the eepro100-diag tool.  (this tool was written by Donald Becker). 
You can download the version I used from here or check
http://www.scyld.com/diag/ for the most recent version.
-- once you have the source downloaded you will need to compile it.  To compile it type the following command:
 cc -O -Wall -o eepro100-diag eepro100-diag.c
This will leave you with a binary file named eepro100-diag
-- Run the following command as root
       eepro100-diag -ee
Look for a line telling you sleep mode is enabled:
     Sleep mode is enabled. This is not recommended.
     Under high load the card may not respond to
     PCI requests, and thus cause a master abort.
     To clear sleep mode use the '-G 0 -w -w -f' options.
-- To turn of sleep mode run the command stated above (as root), i.e.:
 eepro100-diag -G 0 -w -w -f
-- once you have run the command you will need to cold boot the computer.
The above steps should resolve the issue of the Intel Pro/100 VE periodically failing to work with Red Hat 8.0
Comments?
If you have any questions or comments you can email me at
linux@tadlocks.net.
--------------------------------------------------------------------------------
December 2002; ver. 1.01


▶▷ 영조 전용 웹서버 셋팅 및 apm 설치 컴파일 하기 ◁◀

bios 셋팅
다시 초기화 및 플로피 등 설정

w
ls -al
vi install.log
w
ps -ef
rm -f *
vi .bash_profile
------------------------------------------------------------------------------------------------------------
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/apache/bin
BASH_ENV=$HOME/.bashrc
USERNAME="root"
------------------------------------------------------------------------------------------------------------

vi /etc/hosts
vi /etc/default/useradd
------------------------------------------------------------------------------------------------------------
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
--------------------------------------------------------------------------------------------vi /etc/login.defs
--------------------------------------------------------------------------------------------

# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
#QMAIL_DIR      Maildir
MAIL_DIR        /var/spool/mail
#MAIL_FILE      .mail

# Password aging controls:
#
#       PASS_MAX_DAYS   Maximum number of days a password may be used.
#       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#       PASS_MIN_LEN    Minimum acceptable password length.
#       PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7

#
# Min/max values for automatic uid selection in useradd
#
UID_MIN                   500
UID_MAX                 60000

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN                   500
GID_MAX                 60000

#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD    /usr/sbin/userdel_local

#
# If useradd should create home directories for users by default
# on RH systems, we do. This option is ORed with the -m flag on
# useradd command line.
#
CREATE_HOME     yes

UMASK           076
----------------------------------------------------------------------------------------vi /etc/group
----------------------------------------------------------------------------------------
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin
tty:x:5:
disk:x:6:root
mem:x:8:
kmem:x:9:
wheel:x:10:root,icomis
mail:x:12:mail
man:x:15:
lock:x:54:
nobody:x:99:
users:x:100:
slocate:x:21:
floppy:x:19:
vcsa:x:69:
utmp:x:22:
mailnull:x:47:
rpm:x:37:
rpc:x:32:
xfs:x:43:
rpcuser:x:29:
nfsnobody:x:65534:
nscd:x:28:
ident:x:98:
radvd:x:75:
pcap:x:77:
icomis:x:500:
mysql:x:501:
popusers:x:45:
joungjo:x:502:
realnike:x:503:
---------------------------------------------------------------------------------------------vi /etc/pam.d/su
---------------------------------------------------------------------------------------------#%PAM-1.0
auth       required     /lib/security/pam_wheel.so debug group=wheel
auth       sufficient   /lib/security/pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth       sufficient   /lib/security/pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth       required     /lib/security/pam_wheel.so use_uid
auth       required     /lib/security/pam_stack.so service=system-auth
account    required     /lib/security/pam_stack.so service=system-auth
password   required     /lib/security/pam_stack.so service=system-auth
session    required     /lib/security/pam_stack.so service=system-auth
session    optional     /lib/security/pam_xauth.so
---------------------------------------------------------------------------------------------vi /etc/inittab
---------------------------------------------------------------------------------------------# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6

# Run xdm in runlevel 5
# xdm is now a separate service
x:5:respawn:/etc/X11/prefdm -nodaemon
---------------------------------------------------------------------------------------------vi /etc/fstab
---------------------------------------------------------------------------------------------LABEL=/boot             /boot                   ext3    defaults        1 2
none                    /dev/pts                devpts  gid=5,mode=620  0 0
LABEL=/home             /home                   ext3    defaults,usrquota,grpquota,data=journal        1 2
none                    /proc                   proc    defaults        0 0
none                    /dev/shm                tmpfs   defaults        0 0
LABEL=/tmp              /tmp                    ext3    defaults        1 2
LABEL=/usr              /usr                    ext3    defaults        1 2
LABEL=/var              /var                    ext3    defaults        1 2
/dev/hda5               swap                    swap    defaults        0 0
/dev/cdrom              /mnt/cdrom              iso9660 noauto,owner,kudzu,ro 0 0
---------------------------------------------------------------------------------------------ntsysv
mkdir -p /etc/skel/html
ps -ef
vi /etc/inittab
reboot
ps -ef

cd /usr/src/
dir
rz
cd /home
touch quota.user;chmod 600 quota.user
touch quota.group;chmod 600 quota.group
groupadd free
vi /etc/ssh/sshd_config

#커널 업 튜닝
cd /usr/src/
tar xvfz linux-2.4.19.tar.gz;rm -f *;chown -R root.root linux-2.4.19;ln -sf linux-2.4.19 linux
cd /usr/include;rm -rf linux;rm -rf asm;ln -sf ../src/linux/include/linux linux;ln -sf ../src/linux/include/asm-i386 asm
vi /usr/src/linux/include/linux/fs.h
>>>#define INR_OPEN 32767          /* Initial setting for nfile rlimits */
>>>#define NR_FILE 32768   /* this can well be larger on a larger system */
vi /usr/src/linux/include/linux/limits.h
>>>NR_OPEN 1024 -> 32767
vi /usr/src/linux/include/net/tcp.h
>>>TCP_TIMEWAIT_LEN (60*HZ) -> (15*HZ)

cd linux
make menuconfig
make dep
make bzImage
make modules;make modules_install
make install
vi /etc/lilo.conf
lilo
reboot

quotacheck -avugm
convertquota -u /free
quotaon -a
quotacheck -avugm


rpm -Uvh * --force
dir
/etc/rc.d/init.d/named start
ps -ef
ps -ef
ps -ef
ntsysv
ps -ef
vi /etc/named.conf
ps -ef
ll
dir
vi /etc/proftpd/proftpd.conf
vi /etc/xinetd.d/ipop3
dir
vi /etc/oops-firewall/filter.conf
dir
vi /etc/openssh/sshd_config
------------------------------------------------------------------------
PermitRootLogin                         no

# 로그인 전(Banner) 과 로그인 후의(motd) banner 출력 여부
#
#Banner                                 /etc/issue.net
#PrintMotd                              yes

# 거절할 User 나 Group 을 지정 (* 사용가능)
#
#DenyUser
#DenyGroup
-----------------------------------------------------------------

vi /etc/openssh/sshusers

dir
vi /etc/pam.d/opensshd
------------------------------------------------------------------------
#%PAM-1.0
auth       required     /lib/security/pam_listfile.so item=user sense=allow \
                         file=/etc/openssh/sshusers onerr=succeed
auth       required     /lib/security/pam_stack.so service=system-auth
auth       required     /lib/security/pam_nologin.so
account    required     /lib/security/pam_stack.so service=system-auth
password   required     /lib/security/pam_stack.so service=system-auth
session    required     /lib/security/pam_stack.so service=system-auth
session    required     /lib/security/pam_limits.so
session    optional     /lib/security/pam_console.so
-------------------------------------------------------------------------------
df
reboot
adduser -M mysql
cd mysql-4.0.20/
./configure --prefix=/usr/local/mysql --with-unix-soket-path=/usr/local/mysql/tmp --with-charset=latin1 --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --without-debug --with-innodb --with-berkeley-db --without-bench --with-extra-charsets=complex --with-charset=euc_kr --localstatedir=/free/mysql_data
make; make install
cd /usr/local/mysql/bin;./mysql_install_db;cd /usr/local/mysql/share/mysql;vi mysql.server
chmod 700 mysql.server;cp -p ./mysql.server /usr/bin;cp -a /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysql;ln -s /etc/rc.d/init.d/mysql /etc/rc.d/rc3.d/S97mysql
chown -R root /usr/local/mysql;chown -R mysql /free/mysql_data;chgrp -R mysql /usr/local/mysql
cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf;vi /etc/my.cnf
w
ps -ef
mysql.server start
cd apache_1.3.31/
./configure --prefix=/usr/local/apache --enable-module=so --enable-module=all
cd ../libiconv-1.9.2
./configure --prefix=/usr/local
make;make install
cd ../mod_perl-1.29/
perl Makefile.PL APACHE_SRC=../apache_1.3.31/src DO_HTTPD=1 USE_APACI=1 PREP_HTTPD=1 EVERYTHING=1;make;make install
################################################
#php-4.3.3에서는 할 필요없음.
#cd ../gd-2.0.15/
#./configure --prefix=/usr/local/gd-2.0.15
#make;make install
################################################
cd libidn-0.5.4
ll
./configure --prefix=/usr/local --with-libidn=/usr/local --with-libidn --enable-idn
make;make install
################################################
cd ../php-4.3.7/
./configure --with-mcrypt --with-mhash --with-mysql=/usr/local/mysql --enable-modules=so --with-apache=../apache_1.3.31 --with-png-dir=/usr/lib --with-zlib-dir=/usr/lib --with-iconv=/usr/local --with-gettext --with-ldap --with-ttf --with-kerberos --with-imap-ssl --with-libidn=/usr/local --with-curl --enable-idn --enable-exif --enable-trans-sid --enable-wddx --with-imap --with-gdbm=/usr/lib --with-db --enable-dbx --enable-dbase --with-gd --with-gif-dir=/usr/local/lib --with-freetype-dir=/usr --with-jpeg-dir=/usr --with-png --with-zlib --with-config-file-path=/usr/local/apache/conf --with-mod-charset --with-language=korean --with-charset=euc_kr --with-xml --enable-mbstr-enc-trans --enable-mbregex --enable-mbstring --enable-magic-quotes --enable-calendar --enable-sockets --enable-ftp --enable-gd-imgstrttf --enable-track-vars --enable-bcmath --enable-force-cgi-redirect --disable-debug --enable-sigchild --with-idn --with-openssl=/usr/local/ssl
./configure --with-mysql=/usr/local/mysql --enable-modules=so --with-apache=../apache_1.3.31 --with-png-dir=/usr/lib --with-zlib-dir=/usr/lib --with-iconv=/usr/local --with-gettext --with-ldap --with-ttf --with-kerberos --with-imap-ssl --with-libidn=/usr/local --with-curl=Shared,/usr/local --enable-idn --enable-exif --enable-trans-sid --enable-wddx --with-imap --with-gdbm=/usr/lib --with-db --enable-dbx --enable-dbase --with-gd --with-gif-dir=/usr/local/lib --with-freetype-dir=/usr --with-jpeg-dir=/usr --with-png --with-zlib --with-config-file-path=/usr/local/apache/conf --with-mod-charset --with-language=korean --with-charset=euc_kr --with-xml --enable-mbstr-enc-trans --enable-mbregex --enable-mbstring --enable-magic-quotes --enable-calendar --enable-sockets --enable-ftp --enable-gd-imgstrttf --enable-track-vars --enable-bcmath --enable-force-cgi-redirect --disable-debug --enable-sigchild --with-idn
./configure --with-mysql --with-pgsql --with-apxs --with-gd=/usr/local --with-png-dir=/usr/local --with-zlib-dir=/usr --with-jpeg-dir=/usr/local --with-freetype-dir=/usr/local --enable-trans-sid --enable-exif --with-xml  --with-curl=/usr/local --with-pdflib=/usr/local --with-t1lib=/usr/local --enable-ftp --enable-bcmath --enable-mbstring --enable-mbstr-enc-trans --with-ldap --with-iconv=/usr/local --enable-xslt --with-xslt-sablot=/usr/local --with-imap=../imap-2001a --enable-dbx --enable-dbase --with-gettext=/usr/local < /dev/null
make;make install
cd ../apache_1.3.31/
./configure --prefix=/usr/local/apache --add-module=src/modules/extra/mod_become.c --add-module=src/modules/extra/mod_dosevasive.c --add-module=src/modules/extra/mod_throttle.c --add-module=src/modules/extra/mod_bandwidth.c --add-module=src/modules/extra/mod_url.c --add-module=src/modules/extra/mod_gzip.c --activate-module=src/modules/perl/libperl.a --activate-module=src/modules/php4/libphp4.a --enable-suexec --suexec-caller=nobody --suexec-docroot=/free/home --suexec-logfile=/usr/local/apache/logs/suexec_log --suexec-userdir=html --suexec-uidmin=500 --suexec-gidmin=500 --suexec-safepath=/usr/local/bin:/usr/bin:/bin --enable-module=all
make;make install
cd ../php-4.3.7/
vi php.ini-dist
cp php.ini-dist /usr/local/apache/conf/php.ini
cd ../ZendOptimizer-2.1.0a-Linux_glibc21-i386/
./install
ps -ef
vi /etc/rc.d/rc.local
---------------------------------------------------------------------------------------------#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

/usr/bin/rdate -s time.bora.net
/usr/local/apache/bin/apachectl start
---------------------------------------------------------------------------------------------cd /usr/local/apache/bin/
mv suexec suexec.old
cd
vi sec
chmod 755 sec
./sec
ps -ef

crontab -e
------------------------------------------------------
0 6 * * 0 /usr/bin/rdate -s time.bora.net
0 10 * * 6 /shell/server_userdir_check
------------------------------------------------------

mysql test 계정삭제
halt


새로운거 컴파일(gd2-0), nawow.net, www8.icomis.com
---------------------------------------------------------------------------------------------tar xvfz apm.09.16.tar.gz
cd
################################################
# php-4.3.3에서는 할 필요없음.
#cd ../gd-2.0.15/
#./configure --prefix=/usr/local/gd-2.0.15
#make;make install
################################################
cd ../apache_1.3.28/
./configure --prefix=/usr/local/apache --enable-module=so --enable-module=all
cd ../libiconv-1.9.1
./configure --prefix=/usr/local
make;make install
cd ../mod_perl-1.27/
perl Makefile.PL APACHE_SRC=../apache_1.3.28/src DO_HTTPD=1 USE_APACI=1 PREP_HTTPD=1 EVERYTHING=1;make;make install

#################################
# ssl 설치
cd ../openssl-0.9.7a
./config
make;make install
cd ../mm-1.2.2
./configure --prefix=/usr/local/mm-1.1.3
make;make install
cd ../mod_ssl-2.8.15-1.3.28
./configure --with-apache=../apache_1.3.28 --with-ssl=/usr/local/ssl --enable-shared=ssl --with-mm=/usr/local/mm-1.1.3
apache
./configure --prefix=/usr/local/apache --enable-module=ssl --add-module=src/modules/extra/mod_become.c --add-module=src/modules/extra/mod_dosevasive.c --add-module=src/modules/extra/mod_throttle.c --add-module=src/modules/extra/mod_bandwidth.c --add-module=src/modules/extra/mod_url.c --add-module=src/modules/extra/mod_gzip.c --activate-module=src/modules/perl/libperl.a --activate-module=src/modules/php4/libphp4.a --enable-suexec --suexec-caller=nobody --suexec-docroot=/free/home --suexec-logfile=/usr/local/apache/logs/suexec_log --suexec-userdir=html --suexec-uidmin=500 --suexec-gidmin=500 --suexec-safepath=/usr/local/bin:/usr/bin:/bin --enable-module=all
###################################

cd ../php-4.3.3/
./configure --with-mysql=/usr/local/mysql --with-apache=../apache_1.3.28 --with-png-dir=/usr/lib --with-zlib-dir=/usr/lib --with-gettext --with-ldap --with-ttf --with-kerberos --with-imap-ssl --with-imap --with-gdbm=/usr/lib --with-db --enable-dbx --enable-dbase --with-gd --with-gif-dir=/usr/local/lib --with-freetype-dir=/usr/include/freetype2 --with-jpeg-dir=/usr --with-png --with-zlib --with-config-file-path=/usr/local/apache/conf --with-mod-charset --with-language=korean --with-charset=euc_kr --with-xml --enable-mbstr-enc-trans --enable-mbregex --enable-mbstring --enable-magic-quotes --enable-calendar --enable-sockets --enable-exif --enable-ftp --enable-gd-imgstrttf --enable-track-vars --enable-force-cgi-redirect --enable-bcmath --disable-debug --with-iconv=/usr/local
make;make install
cd ../apache_1.3.28/
./configure --prefix=/usr/local/apache --add-module=src/modules/extra/mod_become.c --add-module=src/modules/extra/mod_dosevasive.c --add-module=src/modules/extra/mod_throttle.c --add-module=src/modules/extra/mod_bandwidth.c --add-module=src/modules/extra/mod_url.c --add-module=src/modules/extra/mod_gzip.c --activate-module=src/modules/perl/libperl.a --activate-module=src/modules/php4/libphp4.a --enable-suexec --suexec-caller=nobody --suexec-docroot=/free/home --suexec-logfile=/usr/local/apache/logs/suexec_log --suexec-userdir=html --suexec-uidmin=500 --suexec-gidmin=500 --suexec-safepath=/usr/local/bin:/usr/bin:/bin --enable-module=all
make
cd /usr/local/
mv apache apache.old;mv Zend Zend.old
cd -
make install
cd ../php-4.3.3
cp php.ini-dist /usr/local/apache/conf/php.ini
cd ../ZendOptimizer-2.1.0b-Linux_glibc21-i386/
./install   #아파치 재시작 하지말것
cd /usr/local/apache/conf/
vi php.ini  # allow_url_fopen = Off =====  register_globals = on          
dir
mv httpd.conf httpd.conf.old
cp -a ../../apache.old/conf/httpd.conf ./
cp -a ../../apache.old/conf/tm.conf ./
cd ../logs/
mv ../../apache.old/logs/* ./
cd ../bin/
mv suexec suexec.ols
apachectl stop
apachectl start

 

▶▷ linux, apm, mssql connect 설정◁◀
# tar zxvf freetds-0.61.tgz
# cd freetds-0.61
# ./configure --prefix=설치할 경로(/usr/local/freetds) --with-tdsver=8.0 --enable-msdblib --enable-dbmfix --with-gnu-ld --enable-shared --enable-static

--with-tdsver=8.0 --> 연결할 mssql server가 mssql 2000 일때 8.0, mssql 7 은 7.0 이다
# make; make install
# cd /usr/local/freetds
# cp ./lib/* /usr/lib   라이브러리 파일을 복사한다
# vi ./etc/freetds.conf  설정파일 수정

이부분을 주석을 제거
[MyServer70]
        host = mssql server ip
        port = 1433
        tds version = 8.0 --à mssql 7 은 7.0

2. apache 설치

기존 설치상의 변경할 내용 없다. 그냥 기존 대로 설치하면 된다

3. php설치

소스 컴파일 시
#./configure --with-sybase=/usr/local/freetds 옵션을 추가해서 컴파일 한다.

4. apache 재시작
apachectl restart --------> 사용하지 않는다. 이전 설정이 그대로 적용
# apachectl stop
# apachectl start

※ NT 2003 SQL2000 서버 세팅 :
Using MSSQL 2000 and Windows Server 2003 Enterprise running on a separate machine from the web server, I was unable to get PHP to connect to MSSQL with default Windows Server 2003 settings.  I got it working the following way:

From the Windows Server 2003 machine:
Control Panel -> Local Security Settings -> Security Settings -> Local Policies -> Security Options
Set "Network access: Let Everyone permissions apply to anonymous users" to Enabled

There is probably a better way, but this works


<?
    $conn=mssql_connect("MyServer70","joungjo",'alaldlsgud');
        if ($conn) {
        echo "Yeah i'm the best";
        mssql_select_db("joungjo");
        $query = "select * from urim_member_table";

        $result = mssql_query( $query );

        $imsi = mssql_num_rows( $result );
        echo "$imsi";
        }
?>

 

▶▷ 파일 복구  ext2 file system◁◀

리눅스 화일시스템의 성격상 일단 삭제한 화일을 복구한다는 건
굉장히 어려운 것으로 알려져 있습니다. 최근에 와서는 삭제복구
유틸리티들이 여러가지 나오고 있지만 막상 시스템에서 작업을
하다가 중요한 화일을 자기도 모르게 삭제했을 때 당장 쓸 수
있는 방법은 거의 없는 것이 사실이죠. 아마 많은 분들이 이미
당하신 일일 겁니다. 저도 실제로 곤경에 처해서 황당해 하다가
이 팁을 발견하게 되었습니다. 알고보면 아주 간단합니다. 저도
외국사람이 알려준 방법을 그대로 쓴 것인데 아래 그 요령을
기술합니다.

1) /sbin/debugfs /dev/hda7
2) debug: lsdel
1 deleted inodes found.
Inode Owner Mode Size Blocks Time deleted
25 0 100644 5 1/ 1 Fri Mar 30 19:37:53 2001

3) debug: dump <25> /root/testing.dump

1) 우선 슈퍼유저가 되어야 debugfs 를 쓸 수 있습니다.
2) 지금 어떤 화일을 삭제했는데 그것이 /dev/hda7 파티션상에 있던
화일이라고 하면 1번과 같은 명령을 내립니다.
3) 그럼 "debug : " 프롬프트가 나타나는데 거기에서 lsdel이라는 명령을
내립니다. (이것은 delete한 것을 ls하라는 것입니다.)
4) 그러면 그 아래 나오는 것과 같은 결과값이 나오는데 만일 삭제한
화일이 여럿이라면 이를 추정해서 살리는 것 외에는 다른 방법이
없습니다. 대충 화일의 사이즈를 알 수 있다면 살리는 데 큰 문제는
없습니다.
5) 어떤 inode 번호에 해당하는 것을 살려야 겠다고 결정하면
3번과 같은 명령을 내려 덤프시킵니다. 이 때 덤프해서 저장할 화일은
반드시 원래 삭제된 화일이 있던 곳과는 다른 파티션으로 옮겨서
저장해야 합니다. 혹시 다른 화일을 복구한 것이라면 자칫하면 원래
복구해야 할 화일을 덮어쓰는 경우가 있을 수 있으니까요.

제 경우는 아주 중요한 화일을 다른 것들과 함께 삭제해 버리고 나서
그 중요한 화일이 사라진 것을 알게 되어 바로 이 방법을 써서 성공적으로
복구할 수 있었습니다. 다행히 문제의 화일 사이즈가 삭제한 화일중에서
가장 컸기 때문에 쉽게 복구할 수 있었지요. 혹시 비슷한 어려움에 빠진
분들에게 도움이 되기 바랍니다.

우연히 알게되어 나름대로 제 방식대로 글을 쓰고 혹시나 해서 kltp.kldp.org 에서
찾아보니 있더군요.. 에고 팔 아퍼... ^^;;

 

▶▷ 파일 복구  ext3 file system◁◀

아래는 제 방식대로의 Tip&Tech 입니다.
----------------------------------------------------------------------
리눅스에서의 파일 삭제는 신중을 기해야 한다. 왜냐면 삭제된 파일은 복구 할 수
없기 때문이다. 이것이 정석이였습니다.

물론 rm 의 소프트링크나 다른 삭제 프로그램으로 대체하는 프로그램들도 있습니다
만 rm 자체의 복구는 없다고 알고 있으신 분들이 대부분 일 겁니다.

해답은

debugfs 라는 명령어 입니다. (man page 참조)

실제 사용예를 들어 설명하겠습니다.

가정1) /home/pds/portsentry.tar.gz 라는 파일이 있음.
가정2) /home 파티션은 hda8 입니다. (df -h 로 확인)
가정3) rm -f /home/pds/portsentry.tar.gz 명령으로 지웠음.
가정4) root 로 작업.

복구 절차.

1. #debugfs /dev/hda8

=> 설명 : hda8 파티션에 대해서 검사를 한다.

2. debugfs:

=> 대기상태를 뜻함. 이곳에서 lsdel 을 입력하고 엔터.
계속...

debugfs: lsdel
99 deleted inodes found.
 Inode  Owner  Mode    Size    Blocks    Time deleted
108123      0 100644    239    1/   1 Thu Jan  3 01:25:33 2002
 18417      0 100644 426625  420/ 420 Thu Jan  3 01:26:34 2002
 45007      0 100644    343    1/   1 Thu Jan  3 01:29:59 2002
 28691      0 100400    879    1/   1 Thu Jan  3 01:38:29 2002
 18394      0  40755      0    1/   1 Thu Jan  3 01:58:54 2002
  ..
  .
 14356      0 100644   2325    3/   3 Fri Jan 25 16:13:24 2002
 61239      0 100644  43034   44/  44 Fri Jan 25 16:13:31 2002
debugfs: 

위와 같은 상태로 나오고 다시 대기상태로 됩니다. 실제로는 너무 많이 나오더군
요.. (내가 그렇게 많이 지웠었나? '.'a)

이제 이 목록중에서 하나를 선택해서 살려야 합니다. 다행히도 살리고자 하는 파일
은 가장 최근에 지운 파일이므로 가장 아래쪽에 있는 것이겠죠.

debugfs: dump <61239> /home/debugfs/portsentry.tar.gz

=> Inode 값을 <> 안에 적어줍니다. 뒤에는 복구할 파일 이름을 적어주시면 됩니다.
=> 복구할 파일은 다른 디렉토리로 지정해 주시는게 좋습니다. 별 상관은 없지만...

#cd /home/debugfs
#tar -zxvf portsentry.tar.gz  // 정상적으로 압축이 풀리더군요.

=> 아주 훌륭하게 복구가 되었더군요. ^^v

임의로 portsentry.tar.gz 를 지워서 테스트를 한 것입니다.

debugfs:  상태에서 사용할 수 있는 명령어는 help 를 쳐보면 알 수 있습니다.
끝내는 것은 q, quit 입니다.

 

아래는 debugfs: 에서 사용가능한 명령어들 입니다.
---------------------------------------------------------------------

Available debugfs requests:

show_debugfs_params, params
                         Show debugfs parameters
open_filesys, open       Open a filesystem
close_filesys, close     Close the filesystem
feature, features        Set/print superblock features
dirty_filesys, dirty     Mark the filesystem as dirty
init_filesys             Initalize a filesystem (DESTROYS DATA)
show_super_stats, stats  Show superblock statistics
ncheck                   Do inode->name translation
icheck                   Do block->inode translation
change_root_directory, chroot
                         Change root directory
change_working_directory, cd
                         Change working directory
list_directory, ls       List directory
show_inode_info, stat    Show inode information
link, ln                 Create directory link
unlink                   Delete a directory link
mkdir                    Create a directory
rmdir                    Remove a directory
rm                       Remove a file (unlink and kill_file, if appropriate)
kill_file                Deallocate an inode and its blocks
clri                     Clear an inode's contents
freei                    Clear an inode's in-use flag
seti                     Set an inode's in-use flag
testi                    Test an inode's in-use flag
freeb                    Clear a block's in-use flag
setb                     Set a block's in-use flag
testb                    Test a block's in-use flag
modify_inode, mi         Modify an inode by structure
find_free_block, ffb     Find free block(s)
find_free_inode, ffi     Find free inode(s)
print_working_directory, pwd
                         Print current working directory
expand_dir, expand       Expand directory
mknod                    Create a special file
list_deleted_inodes, lsdel
                         List deleted inodes
write                    Copy a file from your native filesystem
dump_inode, dump         Dump an inode out to a file
cat                      Dump an inode out to stdout
lcd                      Change the current directory on your native
filesystem
rdump                    Recursively dump a directory to the native filesystem
help                     Display info on command or topic.
list_requests, lr, ?     List available commands.
quit, q                  Leave the subsystem.


▶▷ 씨디로 비번 복구/ lilo 복구 ◁◀
1. LILO 프로프트 상태에서
#boot :linux single (run level1 부팅)
* bash #
    - #etc/passwd
      #passwd root  변경

2부팅시디 를 이용하여 루트 패스워드 복구

1. CD-ROM 을 넣고 부팅

2. F5 키를 누르거나 LILO 프폼프트에서 "linux rescue" 입력

3. 언어설정 , 키보드 설정

4. #chroot /mnt/sysimage

5. #passwd 재설정

6. #reboot

 

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

기본적인 명령어
#ls (-l,-a):각 루트상에서 디렉토리 및 파일을 출력한다. 도스의 dir과 같은 명령..
#pwd 현재 디렉토리에서 최상위 폴더로 이동
#df :리눅스파티션을 보고자할 때 사용.
#cd ..상위디렉토리로 이동
#cd 폴더/해당디렉토리로 이동
#vi 편집명령어
#cat 내용출력
#du -sh 남은 용량확인법
#chmod 권한설정
#tar :압축명령(옵션)
#gzip :이중압축명령(옵션)

 


디렉토리 이동명령

일반적으로 디렉토리나 파일이 많을 경우 자신이 어디에 위치에 있는지 그리고 직접적으로 디렉토리로 다이렉트로 이동해야 하는경우가 많아진다... 디렉토리 이동명령을 통해 바로이동할수있는 것이 숙제
예) # cd /home 홈디렉토리로 바로이동하기.....
# ls -l 홈디렉토리 내용살피기
# cd master1 마스터1의 디렉토리안으로 이동하기...

 


목록보기

목록보기에는 대부분 ls를 사용하는데 여기에도 다양한 옵션으로 다양한 결과물을 볼수가 있다....가장많이 쓰는 명령이니만큼 다양한 특징을 안다면 작업하는데 굉장히 편리할 것이다.

#ls -l 세로배열로 결과물을 출력해준다....
#ls -al 가능모든 파일을 결과물로 통해 세로배열로 보여준다.
#ls -al |more:파일의 내용이 많을 때 한단계씩 보여준다(dos:dir/p)와 같은 효과이다.
스페이스바를 누르면 다음결과물을 보여주고 Q를 누르면 빠져나간다.
#ls -l /etc/group:특정파일을 다음과 같은 명령으로 찾아볼 수 있다.
#ls -F :이명령은 실일파일여부를 확인하는 명령이다. 실행파일일 경우 *이붙어서 나온다
그밖에 많은 옵션이 있지만 생략한다.(#ls --help)를 보면 여러 가지 옵션을 볼 수 있다.

 


디렉토리생성과 삭제

디렉토리를 생성과 또 삭제하는데 필요한 명령을 알아보자
대체적으로 생성하는 명령은 mkdir명령을 쓴다.
특정디렉토리에서 #mkdir kkk라치면 그특정디렉토리하위에 kkk라는 디렉토리가 생성이 된다. ls로 확인을 하여보자.
또한 특정한 곳에 디렉토리를 생성하고싶은면 이렇게 하면된다.
#mkdir /home/webmaster/kkk라치면 홈밑에 웹마스터란 방밑에 kkk를 생성한다는 뜻이다.
디렉토리를 삭제하는 명령또한 동일하다.
홈디렉토리밑에 kkk란 디렉토리가 있다면 이디렉토리를 삭제하는 방법이다.
#rmdir kkk라치면 kkk란 디렉토리가 삭제된다.
#rmdir /home/webmaster/kkk라치면 홈밑에 웹마스터란 방밑에 kkk를 삭제한다는 뜻이다.
하지만 하위디렉토리에 내용이나 또다른 디렉토리가 있다면 삭제가 되질않는다...
이때는 rm이란 명령으로 삭제를 한다....옵션 또한 여러 가지가 있지만....
가장많이 쓰는 명령만 간단히 소개한다.
#rm -r kkk라치면 먼저 하위디렉토리로 들어가서 지울지여부를 물어본다....삭제하고자한다면 y(yes)를치면 그해당파일은 삭제가 된다.
하지만 이과정을 모두 생략하기를 원한다면 다음과 같이 입력하면 삭제가 된다.
#rm -rf kkk이렇게 치면 깨끗이 삭제가 된다....
하지만 지우면 복귀할수 없으므로 정말 신중에 신중을 기하여 삭제하길 바란다.

 


복사명령과 이동명령

리눅스에서 도 파일을 복사하는 명령이 있다.....통상적으로 도스에서는 copy,diskcopy명령으로 복사를 했지만 리눅스에서는 cp로 사용한다...별반 다를게 없으므로 작업을 해보면 쉽게 이해할수 있다...
임의의 디렉토리를 하나 생성한다. 여기서는 webmaster밑에 webm01이란 디렉토리를 예로 한다.
#cd ~webm01이라 입력을 하면 바로 특정디렉토리로 이동을 할 수 있다.
만약 이동을 하지않는다면 webm01이란 방이 없거나 경로가 잘못되어서 그러므로 경로를 바꾸어주면 된다.... 경로바꾸는 것은 위에서 설명하였으므로 생략한다.
#cd _webm01로 이동
#touch test1:테스트1이란 빈파일을 만든다는 뜻이다(touch:빈파일만들기)
#vi test1:vi 편집기를 통해 test1에 임의의 내용을 입력하고 저장하고 나온다.
#cp test1 test2:test1을 test2란 파일로 복사한다는 뜻이다.
#vi test2:이파일을 열어 test1안에 적힌 내용과 같은지 확인한다.(같다면 성공이다.)
이번엔 test란 디렉토리를 만들어 방법만든 test1,2파일을 디렉토리에 복사하여 넣어보자..
#mkdir test란 디렉토리생성한다.
#cp test1 test2 test/라 입력하면 test1,test2파일이 test디렉토리에 복사된다.확인하여보자(ls)
다음은 하위디렉토리에서 특정디렉토리로 복사하는 법을 알아보자
여기서는 하위디렉토리에서 홈디렉토리로 복사하는법을 설명한다.
#cp -r test /home:여기서 -r은 디렉토리째로 복사한다는 뜻이다. test란 디렉토리를 home에 복사를 한다. 확인하여보자.....

다음은 동시에 여러개의 빈파일을 만드는 방법이다.
#touch aaa bbb ccc ddd eee fff:여기서 나온 파일을 동시에 만든다는뜻이다. 당연히 더많이도 생성가능하다..... 파일이 만들어졌는지 확인하여보자.
다음은 특정파일만 삭제
#rm -r a*:이말은 a로 시작하는 모든 파일을 삭제한다는 뜻이다.

다음은 이동명령 mv를 알아보자 이명령은 디렉토리나 파일을 이동할때사용하면 파일의이름을 변경할때는 적용이된다.
#mv test test2:이말은 옮긴다는 뜻이아니라 test test2로 명명한다는 뜻이다.
#mv test /home/webmster:이말은 test란 디렉토리를 홈밑에 웹마스터방밑에 이동한다는 뜻이다. 자 한번 실습해보기 바란다.

 


일정한 자료찾기 명령
#find / -name skell -> 일정한 자료찾기를 할 수 있다.

 


간단한 vi편집기명령알기 (cat)동일

cat의 경우 수정,변경,저장할 수는 없다 단지출력명령.
vi 명령을 쓰면 일정텍스트상의 내용을 수정 변경 저장할 수 있다.
일반적인 명령을 예로 들어보자
예)
#vi /etc/group ->etc밑에 그룹의 내용을 보거나 수정한다는 내용이다.
텍스트가 출력이 되면 수정하고자하는 부분이 있을 경우 insert키를 눌려 수정하고자하는 셀로 이동을 한다.... 만약수정하였으면 esc키를 눌려 insert키를 해제시키고 콜론이누른다.(shift+:)그러면 하위에 콜론이 생성이되는데....저장하고자 한다면 qw(종료저장),저장하지않고 그냥종료시킨다면, q!를 누르면 된다...자 이제 활용을 해보자.

 


리눅스 설치에서 파티션나누기...

리눅스는 일반 윈도우와는 달리 각각에 대한 루트계정을 만들어 주어야 한다.
윈도우즈의 경우는 포맷과 운영체제설치와 동시에 모든 디렉토리생성 및 응용프로그램설치를 아무곳에서나 가능하나 리눅스는 이와는 다른다....
/:최상위 디렉토리로 운영자가 직접관리 및 운용할수있는공간
/boot:
/usr : 현재 시스템에서 사용하는 응용프로그램을 이곳에 설치를 한다.윈도우즈의 경우 programs files디렉토리에 설치를 하듯이곳에 리눅스 패키지가 설치된다.
/home : 이곳엔 일반인에게 계정을 부여하고 일정의 공간을 할당해주는 역할을 한다.
웹호스팅을 사용해본 유저라면 쉽게 이해하리라 생각이 든다.
/swap : 일반적으로 swap이란 가상메모리를 뜻하는데 리눅스에서 이렇게 램이 아닌 가상메모리지원해 줌으로써 램이 적더라도 swap메모리를 할당해주어 램과 같은 역할을 하여준다.
swap메모리를 활용을 하면 최상의 시스템구축이 가능하다. 일반적으로 자신의 램의 2배를 지정해주는 것이 좋다고 한다.

가상콘솔(ctrl+alt_f1) x-window에 들어가지 않고 바로 가상콘솔로접속
[root@note/root}#:#를 bash sell이라 함...
콘솔과 터미널:콘솔 :서버앞에서 직접작업을 하는 것을 콘솔이라하며, 터미널이란 멀리서 원격으로 접속을 하여 작업을 하는 것. 또한 가상콘솔작업은 root계정으로 작업을 하면 이것은 보안문제 때문에 다른계정으로 작업을 많이한다. 터미널의 경우 root작업은 치명적인 보안문제 때문에 일반계정으로 접속하여 작업을 많이함.....
단축키명령
(ctrl+alt_f1):가상콘솔 작업
(ctrl+alt_f2)
(ctrl+alt_f3):초기화 로그인
(ctrl+alt_f7):x-windows로 들어가기
콘솔상의 작업종료:exit,logout명령이 있으면 shutdown의 경우 시스템을 종료할 때 사용한다.
옵션명령 : -r 재부팅 -h 시스템종료 -c shutdown명령을 취소
시간타임 : now지금 즉시 지정된 shutdown명령실행
+m m분후에 지정된 shutdown명령을 실행
hh:mm hh시 mm분에 지정된 shutdown명령을 실행
메세지 :현재 접속되어 있는 로그인 사용자들에게 언제쯤 종료를 한다고 알리는 메시지 기능을 제공(중요사항)

예)shutdown -r now지금 즉시종료시행 shutdown +5 now 5분후 종료....

 


사용자 추가명령

새로운 사용자를 추가(계정)을 부여하기 위해 사용한다.
일반적으로 adduser/useradd 명령을 사용한다.(사용법은 완전히 동일하다.)
예)# adduser master1
# passwd master1
# 패스워드 입력
# 재입력.......
(패스워드의 경우 숫자와 일반글자를 조합하는 것이 좋으며 나쁜패스는 시스템에서 받아 들이지 않는다....)
등록을 성공하면 successfully메세지가 나온다....이메세지가 나오면 성공....
자 /home디렉토리로 이동을 하면 새롭게 추가된 계정을 확인할수 있다. 자 (ls -l)
(사용자이름을 생략하고 passwd를 실행하면 현재 로그인한 사용자의 패스워드를 변경할 수 있다.

 


패스

#vi /etc/passwd를 실행하면 리스트가 출력이 된다.
리스트중에 다음의 글이있을 것이다.
root : x : 0 : 0 : root: /root: /bin /bash(bash)란쉘을 뜻함.
root:사용자명
x:비밀번호
0:uid
0:gid(그룹아디)
root:선명(전화)comment
root:홈디렉토리

 


shadow :특정계정을 추가한후 패스파일을 암호화한 파일을 말한다.

#useradd mask1
#passwd mask1
암호를 준후
#vi /etc/passwd확인
#vi /etc/passwd확인후 암호화(shadow)를 확인.

 


일반계정부여와 함께 자동 홈페이지방 만들기...

리눅스상에서 방을 부여하면 홈페이지를 만들수 있는 방이 필요하다...
이것이 public_html이란것인데 이것을 계정부여와 동시에 만드는 방법을 배워본다.
#cd /etc/skel
#ls -l
#pwd
#mkdir mail
#mkdir public_html
#ls -l
이렇게해주면 계정부여와 동시에 자동으로 sand mail과 public_html이 자동으로 만들어진다.

 


그룹생성명령(group)

그룹이란 일정한 시스템에서 여러사람이 그사용자성격상 비슷한사람들이 그룹으로 나우어 관리를 하는 경우 사용한다. 그룹을 잘이용하면 여러모로 전문적성격을 지닌 시스템으로 활용을 할 수 있다.
예) 그룹생성과 일반계정으로 그룹에 등록시키는 내용
#groupadd wm --->그룹명을 wm으로 지정을 하였다.
#vi /etc/group --->vi편집기를 통해 group내용을 확인변경할수 있다.
#useradd --help -->옵션을 활용할 때 이렇게하면 옵션사항을 출력하여 볼 수 있다.

 


그룹에 등록시키는법

#useradd -g wm web1 : web1이란 아이디를 wm이란 그룹에 등록한다는 내용이다
#useradd -g wm web1 : web2역시 wm이란 그룹에 등록
#vi /etc/passwd --> 등록이 잘되었는지 확인할 수 있다.

 


모드설정변경

리눅스에서 모드설정이란 text모드 x-windows등등 이있는데 이기본모드를 수정할 때 사용한다.
먼저 #cat /etc/inittab : $more를 출력하면 리스트가 출력이 되는데...
출력에 보면 id (숫자):initdefault란곳에 숫자를 바꾸어주면 된다.
x-windows:5번
single :1번
text : 3번으로 구성이 되어있다.

 


특정그룹추가하기

일반계정을 그룹화하여 같은 폴더에서 관리하면 관리하기도 좋고 여러모로 편하다.
그러나 그룹추가는 추상적이기 때문에 폴더개념과는 다르다.
이점을 유의하기바란다. 그룹명을 지정해주고 그룹명과 같은 폴더를 만들어줄 때
비로서 그룹화 된다고 보면된다.
#groupadd (그룹명) :그룹은 만들어지었으나 폴더는 만들어지지않았다.
#mkdir 폴더(일반적으로 그룹명과 동일하면 좋다):그룹과 폴더가 모두만들어지었다
자 일반계정을 추가하여 방금만들어진 그룹에 추가하여보자
#useradd -D -b /home/wm:초기 디렉토리의 경로를 지정해준다.
#useradd -g wm wm01:-g는 그룹에 추가한다는 옵션명이고,wm은 그룹명이다
그리고 wm01은 일반계정자이다..즉 wm01은 wm에소속되도록 -g(그룹화)하여 준다는 뜻이다.
#passwd wm01 :이제 wm01의 패스워드를 추가하면 된다.

 


userdel(유저삭제명령)

일반계정을 추가하고 나면 나중에 삭제또한 하게 된다. 싶게 하위디렉토리까지 삭제하는법을 알아보자.
#userdel (지울계정명):이렇게 지정하면 모두삭제된다.
하위에 디렉토리가 없을 경우
#rm -rf 계정명:으로 깨끗이 삭제할 수가 있다.

 


usermod(일반생성 계정에 대한 편집명령),groupmod(그룹에 대한 편집명령)

적용예(uid,향,comment,home,shell)
#usermod -c bbb web02: (web02를 bbb로 바꾼다는 것이다. (단 폴더가 바뀌는 것이 아니라 .comment가 바뀐다는 것이다. 명령에 -c는 comment란 뜻이다.
확인할려면, vi /etc/passwd로 확인을 해보라....

#usermod -d /home/wm
#vi /etc/passwd

#usermod -n webm web:(web이란 그룹을 webm으로 변경하라...
#vi /etc/group:이곳으로 가면 바뀐내용을 확인할수 있다.
su명령의 아름다운반란(사용자 대체)
su란 여러 계정을 오고가며 작업을 하는 것이다.
리눅스의 묘미를 맛볼수 있는 것이기도 하다...또한 root가 어느정도로 막강한지를 쉽게 알수가 있다... 자 이제 실행하여보자

보통 터미널로 작업을 할때에는 root로 로그인이 불가능하는 하지만 su를 통해 가능하여진다 먼저 일반계정으로 접속을 하여 #su root로 변환하여주면 가능하다...
하지만 일반계정에서#su root를 실행하면 root의 패스워드를 묻게된다.패스를 모르면 끝장이다. 그냥 집에가야 될듯......흐흐흐
패스를알고있다면 입력. 성공메세지가 출력되고 root로 작업환경이 변환된다.
이번엔 root권한으로 일반계정으로 변환하여 작업을해보자
#su webm01이렇게 하면 패스워드를 묻지않고 바로작업에 들어갈수가 있다....요것이 root만의 권한.....

이번엔 일반계정에서 일반계정으로 변경작업하여보자
#su webm02라실행하면 역시 패스워드를 묻는다....모르면 찌그러지고 알면 들어가서 작업하면된다.
즉 정의하자면 root는 su명령을 통해 어떠 계정에도 접속하여 작업을 할수있으나 일반작업자의 경우 root로 작업을변환할 때 패스워드를 알아야 하며,역쉬 일반계정끼리의 작업또한 패스워드를 알아야 작업이 가능하다는 것이다. 이권한을 chmod로 뚫을수있을까...

 


에러발생시 대책법<

윈도우즈의 경우 에러가 발생하면 강제종료를 시키면 scandisk가 바로잡아준다.
리눅스의 경우도 그러하지만 이건 바람직하지가 않다. 에러가 발생하면 나름대로 에러를
잡는 법을 알아보자.
먼저 에러가 발생을 하면 read읽기 기능만으로 자동으로 변환이 된다.
이를 바꾸기위해선 다음과 같은 명령을 수행하면 된다.
먼저 readolny가 나오면 이건 읽기기능만이 수행된다는 뜻이다.
lilo에서 ctrl+x로 text모드로 들어간다. 아이디와 패스를 입력하고
#mount -n -0 remount , rw(읽고쓰기로 변환한다는 뜻이다.) /dev/hda5(리눅스가 깔린장치명)입력하면된다.

 

초기부팅화면 설정변경

멀티부팅시 dos모드나 linux모드중 어느것을 먼저택할건지 지정해주는 것이다.
역시 명령어는 다음과 같다.
#cat /etc/lilo.conf 엔터를 치면 리스트출력 하면 수정부분이 눈에 들어온다.
단 cat명령어는 출력명령어 이므로 vi로 바꾸어 출력을 하면된다. 역시 수정하고 저장하고 나오면 된다.)

 


로그인 패스워드변경법

lilo화면에서 ctrl+x키로 누르면 된다.
먼저 linux 1이나 single로 입력을 한후
passwd를 입력한다...암호를 임의로지정을 하고 반복암포를 누르고 빠져나온다.
자한번 테스트해보자.

ARTICLE

================================================================================

▶▷ 계정 만들기 ◁◀

◎ vi add,id ==> ./ad

 

▶▷ MySQL 계정 만들기 ◁◀

◎ mysqladmin -u아이디 -p비밀번호 create ID

로드 데이타 삽입
mysql -u user -p***** --local-infile DB

 

▶▷ MySQL 계정 유저 연결 하기 ◁◀

◎ my <Enter>
◎ GRANT ALL PRIVILEGES on 아이디.* TO
아이디@localhost IDENTIFIED by '비밀번호';
◎ myrelod

 

▶▷ - 가 있는 MySQL 계정 만들기 ◁◀

◎ my <enter>
◎ use mysql <enter>
◎ insert into user (host,user,password) values('localhost','아이디',password('비밀번호'));
◎ insert into db values('localhost','아이디','아이디','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
◎ myrelod

 

▶▷ mysql 루트 비번 바꾸기 ◁◀
[root@ns root]#                        // 루트로 접속한다.
[root@ns root]# /etc/rc.d/rc3.d/./S90mysqld stop  // mysql 프로세스를 죽인다.
[root@ns root]# /usr/local/mysql/bin/./mysqld_safe --skip-grant-tables&

// 임시모드로 mysql 실행
[root@ns root]# mysql             // mysql 접속
mysql> use mysql;
mysql> update user set password=password('newpw') where user = 'root';   

// 루트 암호를 변경한다.
mysql> flush privileges
[root@ns root]# /usr/local/mysql/bin/./S90mysqld start& // mysql 재실행

 

▶▷ mysql  ◁◀
mysql --local-infile=1 -u root -p 3.23.52 이상
load data infile 'post_num.txt' into table address fields terminated by '/t';

 

▶▷ 디비 체크하기/디비 복구 하기 ◁◀
myisamchk -r -q zetyx_division_freeboard
mysqlcheck -uroot -p55 --auto-repair -A

 

▶▷ 디비 체크후 정정/복구 하기 ◁◀
mysqlcheck -uroot -p55 --auto-repair -A

 

▶▷ 계정 삭제하기 ◁◀

◎ userdel -r 아이디

 

▶▷ MySQL 계정 삭제하기 ◁◀

◎ mysqladmin -u아이디 -p비밀번호 creat ID

 

▶▷ nalove.org 서버 셋팅하기 ◁◀

◎ ln -s /free3/아이디 /free/아이디

 

▶▷ 초기 인덱스 변경 ◁◀

◎ vi /etc/skel/html/home.htm   (무료)
◎ vi /etc/skel/html/index.htm  (유료)

 

▶▷ - 가 있는 파일 삭제하기 ◁◀

◎ rm ./-f

 

================================================================================

▶▷ 도메인 포워딩 하기 ◁◀

◎ vi /etc/named.conf  //-----  도메인 추가포워딩 해당서버
◎ /etc/rc.d/init.d/named restart  //-----  네임서버 재시작

◎ vi /usr/local/apache/conf/httpd.conf  //-----  도메인 셋팅하기
<VirtualHost 서버아이피>
DocumentRoot 절대경로
ServerName 도메인
ServerAlias www.도메인
CustomLog logs/access_log vcommon env=!CodeRed
</VirtualHost>
◎ apachectl restart  //----- 아파치 재시작

 

================================================================================

▶▷ 메일 셋팅 하기 ◁◀

◎ cd /etc/mail
◎ vi /local-host-names  //-----  도메인이 있는 경우 설정
◎ vi /virtusertable  //-----  메일포워딩 계정설정
◎ make all    //----- 저장하기
◎ /etc/rc.d/init.d/sendmail restart  //-----  센드메일 재시작

▶▷ 메일추가 셋팅법 ◁◀

◎ vi /etc/mail/virtusertable    //----- 메일포워딩 계정설정
◎ adduser -M 아이디 -s /bin/false -g free  //----- 메일 아이디 추가
◎ make all    //----- 저장하기
◎ /etc/rc.d/init.d/sendmail restart  //-----  센드메일 재시작

 

================================================================================

▶▷ jsp 계정 셋팅과 버추얼호스트 설정 ◁◀

html 폴더에 ROOT, webapps 생성
※ 반드시 폴더 먼저 생성할것
drwxr-xr-x    2 root     root         4096  8월 21 18:52 ROOT
drwxr-xr-x    2 root     root         4096  8월 21 18:52 WEB-INF
drwxr-xr-x    4 root     root         4096  8월 24 19:16 webapps
[root@jsp1 html]# cd webapps
drwxr-xr-x    4 root     root         4096  8월 22 10:18 WEB-INF
drwxrwxrwx    3 root     root         4096 12월 19  2002 manager/web.xml

- 아파치 설정

<VirtualHost 211.110.17.171>
DocumentRoot /free/home/seleven/html
ServerName s11.co.kr
ServerAlias
www.s11.co.kr
JkMount /*.jsp ajp13
JkMount /webapps/* ajp13
jkMount /ROOT/* ajp13
JkMount /servlet/* ajp13
JkMount /manager ajp13
JkMount /manager/* ajp13
CustomLog logs/access_log vcommon
</VirtualHost>

- 톰캣 설정
vi /usr/local/jakarta-tomcat/conf/server.xml

      <!--epnosamo.org-->
      <Host name="epnosamo.org" debug="0" appBase="/free/home/ryune/html" unpackWars="true">
        <Context path="/webapps" docBase="webapps" reloadable="true"/>
        <Context path="/ROOT" docBase="ROOT" reloadable="true"/>
        <Context path="/manager" docBase="/free/home/ryune/html/webapps/manager" debug="0" privileged="true"></Context>
        <Alias>www.epnosamo.org</Alias>
       </Host>  
                
      <!--fauction.co.kr-->
      <Host name="fauction.co.kr" debug="0" appBase="/free/home/winbass/html" unpackWars="true">
        <Context path="/webapps" docBase="webapps" reloadable="true"/>
        <Context path="/ROOT" docBase="ROOT" reloadable="true"/>
        <Context path="/manager" docBase="/free/home/winbass/html/webapps/manager" debug="0" privileged="true"></Context>
        <Alias>www.fauction.co.kr</Alias>
       </Host>

    </Engine>

  </Service>

- admin tools manager 설정
vi /usr/local/tomcat/conf/tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="manager"/>
  <role rolename="admin"/>
  <user username="nayana" password="xxxxxx" roles="admin"/>
  <user username="gn5066" password="xxxxx" roles="manager"/>
  <user username="ryune" password="xxxxxx" roles="manager"/>
  <user username="joungjo" password="xxxxx" roles="manager"/>
  <user username="winbass" password="xxxxxx" roles="manager"/>
</tomcat-users>

- admin tools manager 설정후 보안 설정
chmod 400 /usr/local/tomcat/conf/tomcat-users.xml
chown -R gn5066.free /free/home/gn5066/html/webapps/work/gnwater.net/webapps
chown -R ryune.free /free/home/ryune/html/webapps/work/epnosamo.org/webapps
chown -R winbass.free /free/home/winbass/html/webapps/work/fauction.co.kr/webapps

- 서블릿 설정
vi /etc/profile
JAVA_HOME=/usr/local/java
CATALINA_HOME=/usr/local/tomcat
PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
CLASSPATH=.:/usr/local/tomcat/common/lib/servlet.jar   <--- 추가
export JAVA_HOME CATALINA_HOME CLASSPATH

vi /usr/local/jakarta-tomcat/conf/web.xml
    <!-- The mapping for the invoker servlet -->

    <servlet-mapping>
        <servlet-name>invoker</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>


- 톰캣 정지/실행
[root@sph3 bin]# ./shutdown.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JAVA_HOME:       /usr/local/jdk
[root@sph3 bin]# ./startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JAVA_HOME:       /usr/local/jdk
[root@sph3 bin]# /etc/rc.d/init.d/tomcat restart|stop|start

 

▶▷ 자바톰켓 리스트 출력 막는 것과 에러 페이지 지정 ◀

conf/web.xml 에서요

<init-param>
       <param-name>listings</param-name>
       <param-value>false</param-value>
</init-param>

param-value 를 true 에서 false 로 바꾸고 http://okjsp.pe.kr/ 로 들어오면

404 not found 에러 메시지 페이지가 뜨게 됩니다.

그리고 이 404 페이지를 자신이 지정한 페이지로 가게 하려면

/conf/web.xml 에
<error-page>
     <error-code>404<error-code>
     <location>/error.jsp(지정한 페이지)</location>
</error-page>
위에 부분을 추가하시면 됩니다...

jsp 기타 환경설정.


===============================================================================

▶▷ 메일 호스팅을 받을 경우 메일 포워딩 설정 ◁◀

-> dainco.com

www6. 번의 네임서버에서 설정 /etc/named.conf

zone "dainco.com"{
        type master;
        file "maildainco.zone";
};
zone "scriptschool.co.kr"{
        type master;
        file "www14.icomis.com.zone";
};
zone "dogeshop.com"{
        type master;
        file "www14.icomis.com.zone";
};
zone "hebronj.com"{
        type master;
        file "www14.icomis.com.zone";
};

/var/named/

zone 파일 따로 하나 생성(www14. zone 복사 호스팅 받고 있는 서버)

-rw-r--r--    1 named    named         195  2월 14  2002 localhost.zone
-rw-r--r--    1 root     root          553  7월 11 12:18 lomo.sarang.net.zone
-rw-r--r--    1 root     root          527 11월 26 12:15 maildainco.zone   <----------

maildainco.zone 파일 내용
$TTL 86400
@               IN      SOA     xp.icomis.net. root.xp.icomis.net. (
                        2000122101 ; serial
                        28800 ; refresh
                        14400 ; retry
                        3600000 ; expire
                        86400 ; default_ttl
                        )
                IN      NS      xp.icomis.net.
                IN      MX 10   mail.dainco.com.

;
@               IN      A       211.110.17.159
www             IN      A       211.110.17.159
mail            IN      A       211.39.130.158   <-----

 

▶▷ jsp 자바메일러 중  spambot 인 경우 sendmail.cf 주석처리◁◀

###################################################
######### Headers to be checked ###################
###################################################

HSubject: $>check_subject
HContent-Type: $>check_ct
HDate: $>check_date
HX-Mailer: $>check_mailer
HX-MimeOLE: $>check_ole
#HMessage-Id: $>check_msgid     <--------------------이부분 처리
HErrors-To: $>check_errto

####  If any of these fields
####  shows up, It is bogus.

# it's virus
HX-Spanska: $>check_happy99
HContent-Disposition: $>check_sircam

# it's spam bot
HResent-Date: $>check_all
HX-PMFLAGS: $>check_all
HX-Reply-To: $>check_all
HX-AD2000-Serial: $>check_all
HX-AD2000-Register: $>check_all
HX-Topica-Id: $>check_all
HX-Company-Info: $>check_all
HX-EM-Registration: $>check_all
HX-User: $>check_all
HComments: $>check_all
HX-Library: $>check_all

## Error messages definition
## Error codes refer to RFC821.

D{Msg_mailer}"553 SPAMBOT is not allowed here."
D{Msg_adv}"553 ADV mail not accepted."
D{Msg_virus}"553 Your message may contain the"
D{Msg_master}"If you have questions, please email admin@$j."
D{Msg_date}"553 Bogus date format - SPAMMER - "
DMsg_to}"501 Bogus recipient address."
D{Msg_from}"553 Must exist sender mail address"
D{DENYPRON}"553 Deny Porno spam mail!!!"
[1]+  Killed                  sendmail -bt
[root@sph4 mail]# vi sendmail.cf


####  If any of these fields
####  shows up, It is bogus.

# it's virus
HX-Spanska: $>check_happy99
HContent-Disposition: $>check_sircam

# it's spam bot
HResent-Date: $>check_all
HX-PMFLAGS: $>check_all
HX-Reply-To: $>check_all
HX-AD2000-Serial: $>check_all
HX-AD2000-Register: $>check_all
HX-Topica-Id: $>check_all
HX-Company-Info: $>check_all
HX-EM-Registration: $>check_all
HX-User: $>check_all
HComments: $>check_all
HX-Library: $>check_all

## Error messages definition
## Error codes refer to RFC821.

D{Msg_mailer}"553 SPAMBOT is not allowed here."
D{Msg_adv}"553 ADV mail not accepted."
D{Msg_virus}"553 Your message may contain the"
D{Msg_master}"If you have questions, please email admin@$j."
D{Msg_date}"553 Bogus date format - SPAMMER - "
DMsg_to}"501 Bogus recipient address."
D{Msg_from}"553 Must exist sender mail address"
D{DENYPRON}"553 Deny Porno spam mail!!!"

##################################################################
#  Additional Rulesets for spam, virus mail
#  by JoungKyun Kim <
http://www.oops.org>
#  Original :
http://quanta.khu.ac.kr/~dacapo/sendmail/rulesets/
#  Modified : JoungKyun Kim <admin@oops.org>
##################################################################


▶▷ sendmail.cf 필터링 ◁◀

###################################################
######### REGEX MAP             ###################
###################################################

KAD2000check regex -aAD2000 ....._NextPart_000_0..._01C0F..A\.93A.....
Kadvkchk regex -aADKSUB .*(광고|홍보|광.고|홍.보|바스트메일|廣.*告).*
Kadvechk regex -aADESUB .*(ADV|성인|SEX|PORN|YOUNG|STAR|STRIP|NAMED|NUDE|CELEBRIT|casino|business|congratulation|see transcript).*
Kblankworm regex -aBLWORM \-\-VE.+

###################################################
######### Headers to be checked ###################
###################################################

HSubject: $>check_subject
HContent-Type: $>check_ct
HDate: $>check_date
HX-Mailer: $>check_mailer
HX-MimeOLE: $>check_ole
HMessage-Id: $>check_msgid
HErrors-To: $>check_errto

####  If any of these fields
####  shows up, It is bogus.


================================================================================

▶▷ zone 파일 만들기 ◁◀

◎ cd /var/named    //--- zone 파일이 있는 폴더로 가기
◎ cp -a www2.xp.zone sph1.icomis.zone  //--- zone 카피하기
◎ vi sph1.icomis.zone //--- 카피한 파일열기

$TTL    86400
@       IN      SOA     ns.yerocity.com. root.ns.yerocity.com.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS      ns.yerocity.com.
              IN      MX 10   sph1.icomis.com.
;
@             IN      A       211.189.18.102
www           IN      CNAME   @
ftp           IN      CNAME   @
*             IN      CNAME   @

================================================================================
▶▷ 네임서버 중복 체크하기 ◁◀
named-checkconf


================================================================================
▶▷  네임서버 리로딩 ◁◀
rndc reload

 

================================================================================
▶▷  랜카드에 여러 ip 할당 사용하기 ◁◀
ifconfig eth0:0 192.168.0.243 255.255.255.0 up
ifcfg-eth0:0 을 만드시든지 또는 /etc/rc.d/rc.local 에 해당 명령을기입하시면 됩니다.
네임서버와 아파치 네임서버에 해당 아이피 설정하면된다.

ifconfig eth1 up


================================================================================
▶▷  실시간 이상유무 로그 보기(네임서버 이상유무시 사용했음) ◁◀
tail -f /var/log/messages

 

================================================================================
▶▷  입출력 신호 보기 ◁◀
vmstat 1

 

================================================================================
▶▷  하드 디스크 이상유무 로그 보기 ◁◀
dmesg

 

================================================================================

▶▷ php 업로드 제한 설정하기 ◁◀

◎ vi /usr/local/apache/conf/php.ini
◎ upload_max_filesize = 5M

 

================================================================================

▶▷ 계정용량 설정하기 ◁◀

◎ repquota -a   //----- (모든 사용자 사용공간 알아보기)
◎ edquota -p 아이디 같게할 아이디    //----- ( 앞 사용자와 용량을 같게 적용 )
◎ quotacheck -avug   //----- (쿼터체크하기-구서버-)
◎ quotacheck -augm   //----- (쿼터체크하기-신서버-)
◎ edquota 아이디   //----- (수동으로 쿼터 설정하기)
◎ edquota -p 설정된아이디 `awk -F: '$3 > 513 {print $1}' /etc/passwd`
Quotas for user lanobia:
/dev/sdb1: blocks in use: 280000, limits (soft = 290000, hard = 290000)
        inodes in use: 1619, limits (soft = 200000, hard = 200000)

 

================================================================================

▶▷ 특정 파일 찾기 ◁◀

◎ 문서안에서 grep 찾을 거 -r 폴더
◎ ex) grep zboard.php -r /free/home

◎ 폴더안에서 find 경로 옵션 찾을거
◎ ex) find /free/home/ -name zboard.php

◎ 특정 사용자 소유의 모든 파일을 찾을때는?
◎ find / -user "사용자 ID" -print

 

▶▷ 서버 다운 원인제공자 찾기 ◁◀

◎ cd /proc        //------ 프로세서 ID 있는 폴더임
◎ ps aux | grep httpd
◎ ls -al 프로세서ID

 

▶▷ 현재 Mysql 사용자 확인 ◁◀

◎ my <Enter>
◎ show processlist;

 

▶▷ 파일 시스템 점검및 복원 ◁◀

◎ e2fsck /dev/hda0

 

▶▷ 실시간 로그보기 ◁◀

◎ tail -f /usr/local/apache/logs/access_log  //----- 실시간으로 보기
◎ tail -f /usr/local/apache/logs/access_log > 파일명  //----- 실시간으로 저장
◎ head --lines=20 access_log                          // 헤더부분에서 20줄 보기

 

▶▷ 아파치 이상유무 ◁◀

◎ httpd -t

 

================================================================================

▶▷ 특정파일 차단하기 ◁◀

<Files  "차단할 파일">
   Order allow,deny
   Deny from all
</Files>

 

================================================================================

▶▷ 결제시스템 500 오류시 서버에 데몬확인 ◁◀

◎ icomis(211.172.226.22 서버)로 접속
◎ cd /home/icom/html/unic/UniCredit
◎ ./start.sh [아이디 nayana 암호 na119]

 

================================================================================

▶▷ MySQL stop / start ◁◀

◎ mysql.server stop
◎ mysql.server start

 

▶▷ 아파치 stop / start ◁◀

◎ apachectl restart (재시작)
◎ apachectl stop    (중지)
◎ apachectl start   (시작)

 

▶▷ 센드메일 stop / start ◁◀

◎ /etc/rc.d/init.d/sendmail restart (재시작)
◎ /etc/rc.d/init.d/sendmail stop    (중지)
◎ /etc/rc.d/init.d/sendmail start   (시작)

 

▶▷ 네임서버 stop / start ◁◀

(www.icomis.com / www6,icomis,com / www7.icomis.com)
◎ /etc/rc.d/init.d/named restart (재시작)
◎ /etc/rc.d/init.d/named stop    (중지)
◎ /etc/rc.d/init.d/named start   (시작)

 

▶▷ SSH stop / start ◁◀

◎ 다른서버에서 해당서버로 telnet으로 접속
◎ /etc/rc.d/init.d/sshd2 restart (재시작)
◎ /etc/rc.d/init.d/sshd2 stop    (중지)
◎ /etc/rc.d/init.d/sshd2 start   (시작)

 

▶▷ 방화벽 stop / start ◁◀

◎ /etc/rc.d/init.d/oops_firewall stop  (정지)
◎ /etc/rc.d/init.d/oops_firewall start (시작)

 

================================================================================

▶▷ 도메인이 있는 경우 트래픽 볼수 있도록 셋팅 하기 ◁◀

<IfModule mod_throttle.c>
     ThrottlePolicy None
     <Location /throttle_status_nayana_of_korea>  //----- 서버 전체
     SetHandler throttle-status
     </Location>
     <Location /trafic_mysite>  //----- 개인
     SetHandler throttle-me
     </Location>
</IfModule>

어플리케이션 다운로드 URL
http://www.snert.com/Software/mod_throttle/
http://www.snert.com/Software/mod_throttle/mod_throttle312.tgz

설치
---------------------------------------------------------------------
STATIC (APACHE mod_throttle 부분)
---------------------------------------------------------------------

./configure --disable-shared=throttle \
--add-module=/usr/local/mod_throttle-3.1/mod_throttle.c

---------------------------------------------------------------------
DSO
---------------------------------------------------------------------
cd /usr/local/mod_throttle-3.1
make install
mod_throttle.so를 apache디렉토리 libexec안에 복사해줍니다.
그런후 httpd.conf에 mod_throttle부분을 수정.
(compile시 apxs에 위치를 Makefile안에 전체경로로 변경후 make하세요.)
LoadModule throttle_module libexec/mod_throttle.so
AddModule mod_throttle.c
---------------------------------------------------------------------

throttle에 대한 httpd설정.

   #[모듈 설정부분]
   <IfModule mod_throttle.c>
        ThrottlePolicy none
        <Location /throttle-status>
        SetHandler throttle-status
        </Location>
        <Location /throttle-me>
        SetHandler throttle-me
        </Location>
        <Location /~*/throttle-me>
        SetHandler throttle-me
        </Location>
   </IfModule>


   #[버츄얼 호스팅 부분]
    <VirtualHost xxx.xx.xxx.xxx>
       ServerName xxx.com
       DocumentRoot /home/xxx
       ThrottlePolicy Volume 1000M 1d    # 1일 1G
       ThrottlePolicy Request 1000 1d    # 1일  1000번
    </VirtualHost>

 

<IfModule mod_throttle.c>
        ThrottlePolicy Volume 300M 1d
        <Location /throttle-status>
        SetHandler throttle-status
        </Location>

        <Location /throttle-me>
        SetHandler throttle-me
        </Location>

        <Location /~*/throttle-me>
        SetHandler throttle-me
        </Location>
<Location /throttle-status>
Order deny,allow 
Deny from all
Allow from all
#원래 Allow가 가능 한지역만 설정 해야 함...
#로그 기록을 관리하는 IP...
</Location>
</IfModule>

Virtual 도메인 별로 다음과 같이 설정해 주세요.

        <VirtualHost www.domain.com>
        ServerAdmin root at
www.domain.com
        ServerName  www.domain.com
        DocumentRoot /usr/local/apache/www
        Options ExecCgi Includes
        ThrottlePolicy Volume 100M 1d //하루 100M
        ThrottlePolicy Request 1000 1d //하루 천번
        ThrottleClientIP 1100 volume 2 10   //로그 1100k
        ErrorLog /usr/local/apache/logs/error_log
        TransferLog /usr/local/apache/logs/access_log
        </VirtualHost>

mod_gzip과 같이 사용해 볼려고 했는대...
throttle_status에서 에러가 발생 했음.

로그기록은 http://www.domain.com/throttle-status
도메인당 로그기록 열람할수 있고, 리셋할수도 있어요....
그럼..

 

▶▷ Apache 에서 DoS 공격 막기 (apache 1.3x, 2.x 모두) ◁◀
=============================================================================

---------------------------------------------------------------------------------------
1. mod_dosevasive 설치
---------------------------------------------------------------------------------------
다운로드 :
http://www.rootman.co.kr/bbs/zboard.php?category=4&id=dataroom
http://www.nuclearelephant.com/projects/dosevasive/

[ root@rootman root]# tar xvfz mod_dosevasive.1.8.tar.gz
[
root@rootman root]# cd /usr/local/apache/bin
[
root@rootman bin]# ./apxs -iac ../mod_dosevasive/mod_dosevasive.c
[
root@rootman bin]# ./apxs -iac ../mod_dosevasive/mod_dosevasive.c
gcc -DLINUX=22 -DUSE_HSREGEX -fpic -DSHARED_CORE -DSHARED_MODULE -I/usr/local/apache/include -c ../mod_dosevasive/mod_dosevasive.c
gcc -shared -o ../mod_dosevasive/mod_dosevasive.so mod_dosevasive.o
[activating module `dosevasive' in /usr/local/apache/conf/httpd.conf]
cp ../mod_dosevasive/mod_dosevasive.so /usr/local/apache/libexec/mod_dosevasive.so
chmod 755 /usr/local/apache/libexec/mod_dosevasive.so
cp /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf.bak
cp /usr/local/apache/conf/httpd.conf.new /usr/local/apache/conf/httpd.conf
rm /usr/local/apache/conf/httpd.conf.new

[ root@rootman root]# vi /usr/local/apache/conf/httpd.conf <--- 아래두줄이 추가되었나 확인한다.
LoadModule dosevasive_module libexec/mod_dosevasive.so
AddModule mod_dosevasive.c

[ root@rootman /root]# /usr/local/apache/bin/apachectl graceful <--- 아파치재가동시킨다.

※ apache_1.3.28/src/modules/extra <---- 신규 설치시 mod_dosevasive.c 파일을 복사

---------------------------------------------------------------------------------------
2. httpd.conf에는 다음과 같이 설정을 추가한다.
---------------------------------------------------------------------------------------
<IfModule mod_dosevasive.c>
DOSHashTableSize 3097
DOSPageCount 3
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 3600
</IfModule>

----------------------------------------------
추가적으로 지시자를 추가하실 수 있습니다.
----------------------------------------------
DOSEmailNotify
master@rootman.co.kr
DOSSystemCommand "su - someuser -c '/sbin/... %s ...'"

- DOSHashTableSize 
각 자식 해쉬테이블 마다 탑레벨 노드의 수를 지정합니다.
수치가 높으면 높을수록 더 많은 퍼포먼스가 나타나지만 테이블스페이스에 메모리를 남기게 된다

접속량이 많으면 이 수치를 높혀도 된다.

- DOSPageCount
이것은 같은 페이지 또는 URI, 인터벌당 요청수에 대한 카운트 수이다.
지정된 값이 초과되면 클라이언트에 대한 IP 정보가 블러킹리스트에 추가된다.

- DOSSiteCount
지정된 시간동안 같은 페이지를 지정된 수 보다 초과될경우 IP 정보가 블러킹리스트에 추가된다.

- DOSPageInterval
페이지 카운트 시발점, 디폴트는 1초이다.

- DOSSiteInterval
사이트 카운트 시발점, 디폴트는 역시 1초이다.

- DOSBlockingPeriod
클라이언트가 블랙리스트에 추가되어 블러킹되는 총 시간.
이때 클라이언트는 403 (Forbidden) 에러를 출력하게 된다.

- DOSEmailNotify
이 값이 지정되면, IP가 블러킹될때마다 지정된 이메일로 발동된다.

주의 : 메일러는 mod_dosevasive.c 에 정확하게 지정되야 한다.
디폴트는 "/bin/mail -t %s" 이다.

- DOSSystemCommand
이 값이 지정되면, 시스템은 아이피가 블러킹될때마다 명령행을 실행한다.
이것은 아이피 필터링이나 다른 도구를 사용하도록 설계되었습니다.

---------------------------------------------------------------------------------------
3. 인가된 IP 주소 할당
---------------------------------------------------------------------------------------
버전 1.8에서는 아이피가 블러킹되더라도 인가된 클라이언트 아이피에 대해서는 적용되지 않습니다.
인가시키는 목적은 소프트웨어, 스크립트, 로컬서치로봇, 해당 서버로부터의 많은 요청인한 웹거부로 부터의 또다른 프로그램을 보호하는데 있습니다.

아파치에서 설정하는 방법은 다음과 같습니다.

DOSWhitelist 127.0.0.1
DOSWhitelist 127.0.0.*

와일드카드는(*) 필요하다면 최대 8진수(xxx.*.*.*)까지 사용할 수 있습니다.

 

================================================================================

▶▷ 시간조정하기 ◁◀

◎ cd /etc/cron.hourly
◎ ./time

 

================================================================================

▶▷ 리눅스버전확인 ◁◀

◎ cd /etc
◎ vi redhat-release

 

================================================================================

▶▷ vi에서 한번에 바꾸기 ◁◀

◎ .,$s/바꿀내용/바뀔내용/g

 

================================================================================
1073,2507d

▶▷ 패킷이 지나가는 경로추적 ◁◀

◎ traceroute nayana.com

 

▶▷ 도메인 검색 ◁◀

◎ nslookup nayana.com

 

▶▷ 현재 디렉토리 퍼미션 파일찾기 ◁◀
◎ find -type d -maxdepth 1 -perm 000

 

▶▷ ttmall 설치 전 서버 세팅 작업 ◁◀
[gjsuhyup@webhost8 ttmall]$ ./admin.cgi
./admin.cgi: error while loading shared libraries: libmysqlclient.so.10: cannot open shared object file: No such file or directory
[gjsuhyup@webhost8 ttmall]$

해결방법

시스템 관리자(root) 권한이 있을 경우

/etc/ld.so.conf 파일을 편집하여, mysql library의 경로를 추가.
쉘상에서 ldconfig 을 실행하여 변경된 ld.so.conf를 적용.

 

▶▷ 서버 계정 백업하기 ◁◀
cp -auvf /home/* /backup/home
이런식으로 하면 증가분 백업만 되고. 그리고 이 증가분 백업을 네트워크로 연결하여 똑같이 만드는게... cpbk 또는 mirrordir 이 있어..

 

▶▷ 퍼미션 100 가져온기 ◁◀
find  -type d -maxdepth 1 ! \( -perm 100 -or -perm 777 -or -perm 755 -or -perm 701 -or -user root -or -user icomis \) > you_dir.cgi
find / -user "nobody" -print

 

▶▷ 현재 디렉토리 퍼미션 파일찾기 ◁◀
◎ find -type d -maxdepth 1 -perm 000
find /free5/* -type d -maxdepth 1 -perm 000 -or -perm 100

 

▶▷ 현재 디렉토리 퍼미션 파일찾아와 삭제 ^^;◁◀
find /free4/* -type d -maxdepth 1 -perm 000 -or -perm 100 -exec rm -rf {} \;
find /free5/* -type d -maxdepth 1 -perm 000 -o -perm 100 -exec rm -rf {} \;

find /free5/* -type d -maxdepth 1 -perm 000 -exec rm -rf {} \; -perm 100 -exec rm -rf {} \;

 

▶▷ 현재 디렉토리 그룹권한이 root인것만 파일찾아와 삭제 ^^;◁◀
find -group root -type d -maxdepth 1 -exec rm -rf {} \;

 

▶▷ 몇일간 이전의 자료만 삭제 ◁◀
find /home -type f -maxdepth 1 ! \( -mtime -30 \) -exec rm -rf {} \;


▶▷ find 명령을 이용해서 하위 디렉토리까지 검색해서 특정파일의 내용을 replace하기   ◁◀
 
예를 들어 내 계정에서 확장자가 php인 파일에서 특정문자열을 교체하고 싶으시다면,

# find /home/myid/ -name *.php | awk '{ print "cat "$1" | sed \"s/찾을문자열/바꿀문자열/g\" >"$1 }' | sh
또는
# find /home/myid/ -name '*.php' -exec perl -pi -e 's/찾을문자열/바꿀문자열/g' {} \;
하시면 됩니다.

 

▶▷ 파일시스템 모두 복사하기 ◁◀
파일 시스템 전체나 디렉토리 트리 구조를 동일하게 복사하기
위해서는 다음의 명령어를 쓴다.
# mkdir /home/bc/destination
# cd /targetdir
# find . -depth -print | cpio -pmdvl home/bc/destination
이러면 /targetdir의 모든 것이 /home/bc/destination으로 복사된다.


▶▷ 그룹 유저에 추가 ◁◀
usermod -g free user-id

 

▶▷ 아파치 에러페이지 유저별 설정하기 ◁◀

계정에서
.htaccess
ErrorDocument 404 /경로명

 

▶▷ 아파치 디렉토리 인증 .htaccess ◁◀
설정파일에 httpd.conf 파일에 600라인쯤에 보면 AllowOverride none 이라는 구문이 있는데요..
그부분의 none을 All로 수정하세욤..그리고 아파치 제시작하시구..


#cat /home/httpd/html/member/.htaccess <-- 요기서 /home/httpd/html/member는 보호할 디렉토리이름
AuthType Basic   <----- 인증방식..기본값..
Authname "특정회원에게만 허락합니다?"
AuthUserFile /home/httpd/.htmemuser <---- .htmemuser(사용자정보가 들어있는 파일)가 있는 위치.
Require valid-user

#htpasswd -c /home/httpd/.htmemuser 인증할ID <--- -c 옵션은 처음에 .htmemuser 파일이 존해하지 않을때 파일을 만드는 옵션입니다.

#htpasswd .htmemuser 인증할ID <---- 추가 인증 아이디시 -c 옵션하지 말것


▶▷ 메일 여러개로 포워딩하기 다른 곳으로◀
/free/home/test/.forward
\getto
kohkoh@yumc.yonsei.ac.kr
tklee@coexkorea.co.kr
lee@coexkorea.co.kr
cmc@coexkorea.co.kr
sayme502@korea.com


▶▷ 젠드옵디마 설치 ◁◀
tar xvfz ZendOptimizer-2\[1\].1.0-Linux_glibc21-i386.tar.gz
dir
cd ZendOptimizer-2
cd ZendOptimizer-2.1.0-Linux_glibc21-i386/
dir
./install

php.ini
[Zend]
zend_optimizer.optimization_level=15
zend_extension=/usr/local/Zend/lib/ZendOptimizer.so

 

▶▷ netstat -na 각 상태 명칭 ◁◀
netstat -na 로 확인해 보면 Local Address,  Foreign Address,  State 등의 정보가 출력되는데,
이 중 State 부분에 보이는 메시지를 주목하면 된다.

### 참고 : State 부분에 가능한 연결상태 ###################################
LISTEN   : 서버의 데몬이 떠서 접속 요청을 기다리는 상태
SYS-SENT : 로컬의 클라이언트 어플리케이션이 원격 호스트에 연결을 요청한 상태
SYN_RECEIVED : 서버가 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게
    응답을 하였지만 아직 클라이언트에게 확인 메시지는 받지 않은 상태
ESTABLISHED : 3 Way-Handshaking 이 완료된 후 서로 연결된 상태
FIN-WAIT1 ,  CLOSE-WAIT , FIN-WAIT2 :
서버에서 연결을 종료하기 위해 클라이언트에게 종결을 요청하고
 회신을 받아 종료하는 과정의 상태
CLOSING  : 흔하지 않지만 주로 확인 메시지가 전송도중 분실된 상태
TIME-WAIT : 연결은 종료되었지만 분실되었을지 모를 느린 세그먼트를 위해
            당분간 소켓을 열어놓은 상태
CLOSED : 완전히 종료
################################################################################

 

▶▷ ip 포워딩 MASQUERADE◁◀
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE


▶▷ 열려 있는 포트 확인 ◁◀
netstat -anp | grep LISTEN

 

▶▷ 웹서버 사용자 측정 ◁◀
Unix / Linux :
netstat -n | grep 80 | grep EST | wc -l

 

▶▷ 네트워크 싱그 공격 보기 ◁◀
netstat -a -n|grep SYN

 

▶▷ 외부로부터 ping 막기 ◁◀
/proc/sys/net/ipv4/icmp_echo_ignore_all

 

▶▷ 도스 ping 으로 라이터 경로 알기 ◁◀
ping ntsql1.icomis.com -t -i 9

 

▶▷ 섹터 에러시 파티션 정보보기 ◁◀
cat /proc/partitions

 

▶▷ 서버 포트 스캔 ◁◀
nmap  -v -sS -O 220.95.232.25

 

▶▷ 설정된 크론 보기 ◁◀
crontab -l


▶▷ rpm 실행 경로 ◁◀
/var/lib/rpm

 

▶▷ 표준 시간 설정 ◁◀
rdate -s time.bora.net
rdate -s time.kriss.re.kr

 

▶▷ 쉘 ftp 전송 ◁◀
 /usr/bin/ftp -n 111.222.333.444 <<EOF
 user account password
 cd /home/logs/
 ascii
 hash
 get logfile
 bye
 EOF

 

▶▷ rpm 설처프로그램 퍼미션 재 조정 ◁◀
/etc/rc.d/init.d/network restart
ifconfig
rpm --setperms -a
/etc/rc.d/init.d/network restart
cd
dir
rm -f *
df
ps -ef
vi sec
chmod 700 sec
./sec
rm sec

 

▶▷ 아무문제 없는 컴파일 에러날때 ◁◀
configure: error: C preprocessor "/lib/cpp" fails sanity check
/usr/src 커널이 없을때임..

 

▶▷ etc 복구시 복사할 파일들 ◁◀
vi /etc/hosts
vi /etc/sysconfig/network
vi /etc/passwd
vi /etc/shadow
vi /etc/group
vi /etc/gshadow
vi /etc/named.conf
vi /etc/named/*
vi /etc/mail/local-host-name
vi /etc/mail/virtable---
vi /usr/local/apache/conf
vi /etc/rsyncd.conf
crontab -e
/shell/*
vi /etc/oops-firewall/filter.conf
/etc/rc.local
/var/mail
vi /etc/fstab
chmod 400 /etc/shadow
chmod 400 /etc/gshadow