2010년 8월 25일 수요일

리눅스 - 소유권과 허가권 알아보기

참조 : http://wiki.linuxstudy.pe.kr/wiki.php/linuxstudy8

소유권과 허가권
리눅스 시스템은 앞에서도 말했지만 다중 사용자 시스템이다.
즉 혼자만이 아닌 여러사람이 동시에 같이 사용이 가능한 시스템이라는 이야기다.
따라서 지금 배울 허가권은 유닉스 계열의 시스템에서는 아주 중요한 개념이다.
잘못된 허가권은 시스템에 큰 보안홀을 만들 수 있으므로 잘 사용해야 한다. 

허가권(퍼미션) 이해하기

앞에서 배운 ls 명령을 이용해서 파일 하나를 살펴보도록 하자.
linuxstudy ~ # ls -al /etc/inittab 
-rw-r--r-- 1 root root 1645 Oct 28 13:13 /etc/inittab
linuxstudy ~ #
리눅스의 모든 파일과 디렉토리는 위와 같이 되어 있다.
위의 파일을 풀어서 설명하자면 이렇다.
/etc/inittab 파일은 root사용자와 root그룹의 것이며 root사용자는 읽고 쓸수 있으며
root그룹은 읽기만 되고 root사용자와 root그룹을 제외한 나머지 사용자는 읽기만 되며
파일의 그기는 1645byte 이며 최종적으로 10월28일 13시13분에 수정이 되었다.
뭔가 복잡하게 들릴지 모르겠지만 하나씩 한번 살펴보도록 하자.
리눅스의 기본적인 권한은 세가지로 나눠져 있다.읽기권한(read),쓰기권한(write),실행권한(excute)
-r w xr w xr w x
파일타입소유자소유그룹others

ugo

맨 처음 나오는 - 은 파일타입에 대한 것이다.
참고. 파일 타입
-일반 파일
b블럭형 장치파일(보통 하드 디스크등등)
ccharacter device(보통 장치 파일들,마우스나,콘솔등등)
d디렉토리
p파이프 파일
s소켓파일

컴퓨터는 단순한 기계다.0과1만 이해하는..^^;
이제 rwx 가 숫자로 변경되는 과정을 이해해 보도록 하자. 허가권이 있다면 1 없다면 0이다.
표기r--
비트(2진수)100
8진수2의2승2의1승2의0승
10진수400
읽기 권한만 준다면 숫자는 4로 나온다.

표기rw-
비트(2진수)110
8진수2의2승2의1승2의0승
10진수420
읽고 쓰는 경우에는 4+2가 되서 6

표기rwx
비트(2진수)111
8진수2의2승2의1승2의0승
10진수421
읽고 쓰고 실행하는 권한을 부여하면 4+2+1 해서 7 이 된다.

대충 이해가 되는가? 즉 모든 권한을 다 부여하면 7 이라는 숫자로 되는것이다.
편하게 이해하려면 다음을 보도록 하자.
rwx
421
무조건 4,2,1 이렇게 이해하자.
이제 앞으로 가서 우리가 봤던 /etc/inittab 파일의 퍼미션을 다시 한번 보도록 하자.
r w -(6), r - -(4),r - -(4)
즉 /etc/inittab 파일의 허가권은 644라고 하면 되는것이다.
rwxr-xr-x 는?
r(4),w(2),x(1)/r(4),w(0),x(1)/r(4),w(0),x(1)=7,5,5
자꾸 머리속으로 계산하는 습관을 들이도록 하자..^^;

chmod

이제 위에서 배운 허가권을 변경하는 방법에 대해서 알아보도록 하자.
chmod 명령은 허가권을 변경해 주는 명령으로 시스템 관리자가 되면 아주 많이 사용하게 될 명령어다.
허가권을 변경하는 방법은 두가지의 표현법이 있다.
위에서 배운 숫자로 변경하는 방법과 문자로 부여하는 방법이 있다.
하위 디렉토리까지 같이 변경하기 위해서는 -R 옵션을 사용하면 된다.
chmod 755 /etc/inittab(root에게 읽고 쓰고 실행,root그룹에게 읽고 실행,others에게 읽고 실행)
chmod u+rws,g+rx,o+rx /etc/inittab
위의 두가지는 표현만 다르지 똑같은 결과를 가져온다.
문자로 부여하는 방법은 u(소유자),g(소유그룹),o(others),a(all)과 +,-,= 을 조합해서 허가권을 부여할 수 있다.
+허가권 추가
-허가권 제거
=허가권 유지

특수 퍼미션
이제 설명할것은 기본적인 rwx 권한 이외의 특수한 목적으로 만들어진 퍼미션이다.
SetUID:파일을 실행하는 동안에는 소유자의 권한을 획득하는 허가권.
SetGID:파일을 실행하는 동안에는 소유그룹의 권한을 획득하는 허가권.
Stick Bit:아무나 읽고 쓰기가 가능하지만 생성한 소유자만이 파일을 지울 수 있는 허가권.

SetUID(4),SetGID(2),sticky bit(1) 를 부여하기 위해서는 기본 퍼미션 755 등등의 앞에 붙여주면 된다.
chmod 4755 실행파일(SetUID부여)
chmod 2755 실행파일(SetGID부여)
chmod 1777 디렉토리(Sticky bit부어)
문자 형태로 주고자 한다면 아래와 같다.
chmod u+s 파일
chmod g+s 파일
chod +t 디렉토리

SetUID,SetGID

단순한 설명으로는 이해가 어려울 수 있으니 예를 들어서 설명해 보겠다.
A라는 계정 사용자가 리눅스의 passwd 명령으로 패스워드를 변경한다고 생각해 보자.
당연히 변경된 패스워드는 저장이 될 것이다. 리눅스의 패스워드 파일은 /etc/shadow 라는 파일에 저장이 된다. 그렇지만 /etc/shadow 파일의 퍼미션은 다음과 같이 되어있다.
-rw------- 1 root root 24736 Oct 23 17:54 /etc/shadow
허가권을 알게 되었으니 충분히 이해하겠지만 /etc/shadow 파일은 root는 읽고쓰기,root그룹과others 는 아무 권한이 없는 상태이다.
그런데 어떻게 A라는 계정 사용자가 명령을 내려서 /etc/shadow 파일이 갱신이 될 수 있을까?
바로 여기에 SetUID의 비밀이 숨어있다.
ls -al /bin/passwd 명령을 내려보도록 하자.
-rws--x--x 1 root root 32888 Mar 11  2009 /bin/passwd
실행 권한(x)이 있어야 될 자리에 s 가 보일 것이다.
바로 이게 SetUID 다. 쉽게 설명하자면 시스템의 어떠한 계정이라도 /bin/passwd 파일을 실행하는 동안에는 소유주 즉 root의 권한을 갖는다는 것이다.
물론 실행이 종료되면 다시 A라는 계정의 권한으로 돌아온다..^^;
SetGID 권한은 위와는 동일하지만 소유그룹의 권한을 갖는다는 차이만 있다.
SetUID,SetGID권한은 이렇듯 일반 사용자가 특정사용자나 그룹의 권한을 갖을 수 있으므로
잘못 설정할 경우에는 아주 위험한 경우들이 생겨나므로 조심해야 된다.

나중에 보안 부분을 다루면서 예제를 보여주겠지만 보통 해킹당한 시스템에서 root권한으로 실행되는 백도어등을 많이 심어두고 언제라도 그 파일을 실행해서 root권한을 획득하는 경우가 많다.
그래서 root 비번을 변경하더라도 계속 크래킹이 이뤄지는 것이다.

sticky bit

sticky bit 란 위에서 설명했지만 누구나 읽고 쓸수있는 디렉토리지만 삭제는 생성한 유저만 가능하게 해주는 허가권이다.
보통 sticky bit가 설정되어 있는 대표적이 디렉토리가 있는데 바로 /tmp 디렉토리다.
예를 들어보겠다.리눅스 시스템을 이용해서 여러명의 개발자가 특정 디렉토리에서 프로그램을 개발한다고 가정해 보자.
같은 디렉토리를 공유하기 위해서 디렉토리의 퍼미션을 아래와 같이 설정했다.
chmod 777 /workspace 
즉 모든 사용자가 읽고 쓸수가 있을 것이다.그런데 문제가 생겼다.
A라는 사용자가 같이 작업하는 B의 파일도 역시 읽고 쓸수 있기 때문에 실수로 B사용자의 파일을 지워버렸다. 이런 경우가 발생하지 않기 위해서 sticky bit 를 설정해 주는 것이다.

소유권 이해하기

허가권과 더불어 리눅스 시스템에서 가장 중요한 소유권을 알아보도록 하자.
유닉스 계열의 시스템들은 정확하게 내가 사용할수있는 파일과 사용할 수 없는 파일들이 정확하게 나눠진다. 

chown

파일의 소유자와 소유그룹을 변경하는 명령으로
chown 소유자.소유그룹 파일 및 디렉토리 형태로 실행하면 된다.
하위 디렉토리까지 소유자와 소유그룹을 변경하려면 -R 옵션을 주면 된다.

chgrp

chgrp는 소유그룹만 변경하고자 할 경우에 사용한다. 
chgrp 그룹명 파일 및 디렉토리

앞에서도 설명했지만 시스템 관리자는 많은 사용자의 권한을 적절하게 잘 조정해줘야 한다.
잘못된 권한 설정은 원치않는 결과를 가져올 수 있으므로 주의해서 사용하기 바란다.
특히나 접근이 안된다고 무조건 777로 주는 실수는 범하지 않도록 하기 바란다. 

[CentOS 5.4] 설치 후 설정할것들


CentOS 설치 후 설정

  • 한글 설정
  • /etc/sysconfig/i18n 파일에서 다음을 설정 한다.
LANG="ko_KR.UTF-8"
  • 사용하는 터미널에서 "UTF-8"을 사용하도록 설정 한다.
  • PuTTY의 경우 : Window -> Translation 메뉴에서 "Character set translation on received data"를 "UTF-8"로 설정 한다.
  • 아래 명령을 사용하여 인터넷 접속 여부를 확인 한다.
ping -c3 google.com
  • 서버 시간 설정
echo "00 * * * * root /usr/bin/rdate -s time.bora.net" >> /etc/crontab
  • 기본 업데이트
yum -y update kernel
yum -y update kernel-PAE //--- 32 Bits 시스템에서 메모리가 4GB 이상일 경우
  • 가장 빠른 미러 사이트를 연결하는 yum 플러그인 설치
yum -y install yum-fastestmirror

CentOS Upgrade

  • Upgrade to CentOS 5.4 from 5.3
yum clean all
yum update glibc*
yum update yum* rpm* python*
yum clean all
yum update
shutdown -r now

#--- CentOS 버전 확인
lsb_release -a

CentOS Network 설정

VNC Server 설치

VNC (Virtual Network Computing)는 원격으로 Linux의 GUI 화면으로 접속할 수 있도록 한다.

  • VNC Server 설치
#--- CentOS에 root로 로그인 한다.
yum -y install vnc-server
  • vi /etc/sysconfig/vncservers
VNCSERVERS="1:root"    #--- 1번부터 5901 port를 사용 한다.
VNCSERVERARGS[1]="-geometry 1152x864" #--- 추가 옵션 : -nolisten -nohttpd -localhost
  • VNC Server 사용자 password 생성
cd
mkdir .vnc
cd .vnc
vncpasswd
#--- 여기서 암호를 입력 한다.
service vncserver restart
  • 방화벽에서 해당 사용자의 port를 오픈하여야 한다.
#--- /etc/sysconfig/vncservers에 등록된 1번부터 5901 port를 사용 한다.
  • VNC Client에서 접속 시
VNC Viewer로 접속시 "IP:5901"로 접속 한다.
TightVNC Viewer로 접속시 "IP:1"로 접속 한다.
  • 처음 접속이 완료되면 xstartup 파일이 생성된다. 이를 수정하여 예쁜화면을 사용하자.
cd
cd .vnc
vi xstartup
### twm & #--- 이 라인을 주석 처리(삭제) 한다.
gnome-session & #--- 이 라인을 추가 한다.
service vncserver restart
  • 설치 정보
  • 설치 폴더 :
  • 실행 파일 : /usr/bin/
  • 환경 설정 : /etc/sysconfig/vncservers
  • 기동 종료 : /etc/init.d/vncserver start, stop, restart
  • 서비스 확인 :
  • 참고 문헌

주요 SW 설치

CentOS용 프로그램

  • 시스템 라이브러리 설치
yum -y install zlib curl   
yum -y install gcc g++ cpp gcc-c++ compat-gcc-34-g77
yum -y install libxml2 libxml2-devel
yum -y install gd gd-devel
yum -y install freetype freetype-devel
yum -y install libpng libpng-devel
yum -y install libjpeg libjpeg-devel
yum -y install fontconfig fontconfig-devel
yum -y install mhash mhash-devel
yum -y install libmcrypt libmcrypt-devel
yum -y install openssl openssl-devel
yum -y install gmp gmp-devel
yum -y install flex
yum -y install libtermcap-devel ncurses-devel libc-client-devel bzip2-devel
  • 필요한 경우 컴파일러를 설치 한다.
yum -y install gcc gcc-c++ termcap libtermcap libtermcap-devel gdbm-devel

vsftpd 설치

  • vsftpd 설치
yum -y install vsftpd
  • 아래 설치 정보에 정리된 블랙 리스트에서 ftp를 사용할 사용자를 빼준다.
  • 방화벽에서 20, 21 port를 개방 한다.
  • 설치 정보
  • 실행 파일 : /usr/sbin/
  • 환경 파일 : /etc/vsftpd/vsftpd.conf
  • 블랙 리스트 : /etc/vsftpd/ftpusers, /etc/vsftpd/user_list
  • 기동 종료 : /etc/init.d/vsftpd start, stop, restart, status
  • 서비스 확인 : ps -ef | grep vsftpd | grep -v grep

Java 설치


MySQL 설치

PostgreSQL 설치

Apache Http Server 설치

PHP 설치

Tomcat 설치

  • Linux의 심볼 링크를 사용하여 Tomcat의 Root 폴더를 변경 하는 방법
ln -s /var/www/html /usr/share/tomcat5/webapps/ROOT

Apache ANT 설치

yum -y install ant

부팅시 자동 실행 설정

  • ntsysv 명령어를 실행하고 자동 실행할 데몬을 선택 한다.

사용자 가이드

버전 확인

lsb_release -a
cat /etc/issue

SSH 접속 방법

yum 사용법

  • 관련 폴더
/etc/yum.conf
/etc/yum.repos.d/
/etc/yum/
  • 설치 가능한 package 목록 보기
yum list [all]
yum grouplist #--- package 그룹 보기
  • package 설치 및 삭제
yum install httpd          #--- 설치
yum install httpd.i386 #--- 아키텍처를 지정하여 설치
yum update httpd #--- 업데이트
yum remove httpd #--- 삭제

yum groupinstall "그룹명" #--- package 그룹 설치
yum groupupdate "그룹명" #--- package 그룹 업데이트
yum groupremove "그룹명" #--- package 그룹 삭제
  • 설치된 package 목록 보기
yum list installed [httpd]
  • 업데이트할 package 목록 보기 및 업데이트
yum list updates           #--- 목록 보기
yum update -y #--- 업데이트

RPM 사용법

Redhat Package Manager로 레드헷에서 만든 패키지 관리자 이다.

  • RPM 파일명 구조
패키지이름-버전-릴리즈번호.소스여부.시스템.확장자
  • RPM 명령어
  • rpmfind에서 PRM 패키지(~.rpm)를 찾을 수 있다.
rpm -Uvh gcc-2.96-98.i386.rpm  #--- 패키지 설치
rpm -Uvh ftp://ftp.rpmserver.com/gcc-2.96-98.i386.rpm #--- 네트워크로 패키지 설치
rpm -e gcc-2.96-98.i386 #--- 패키지 제거
rpm -qa | grep httpd #--- 패키지 조회
rpm -qi ~.rpm #--- 패키지 상세 정보 조회
rpm -ql gcc-2.96-98.i386 #--- 패키지 설치 경로 조회
  • RPM 옵션
-i       :기본 설치. 이전 버전이 존재하면 설치하지 않음
-U  : 이전 버전이 설치되어 있으면 업그레이드. (-i 보다 권장)
-F  : 이전 버전이 설치되어 있는 경우에만 설치
-v  : 설치 메시지를 보여 줌
-h  : 진행과정을 '#'으로 표시
-e  : 패키지를 제거
-q  : 패키지가 설치되어 있는 지 확인
-qa  : 현재 설치된 모든 패키지 목록을 출력
-qi  : 현재 설치된 패키지의 간략한 정보를 출력
-ql  : 현재 설치된 패키지의 내용(위치)을 출력
-Vf  : 현재 설치된 파일의 검증. 문제가 없으면 '.'으로 표시
-Va  : 한 패키지만 검증
--force  : 충돌 등을 무시하고 무조건 설치
--nodeps : 의존성 문제를 무시하고 설치

관리자 가이드

방화벽 설정

CentOS는 디폴트로 iptables를 방화벽으로 사용 한다.

  • 특정 IP의 서버 접근 차단 방법
iptables -A INPUT -s 61.247.209.81 -j DROP
iptables -A INPUT -s 61.247.209.0/24 -j DROP

KVM

  • 참고 문헌

VirtualBox 설치

RPM 제작

  • RPM 제작을 위한 패키지 설치
yum -y install rpm-build rpm-devel
yum -y install ~.rpm
  • 설정 파일 : /etc/rpmrc, /usr/lib/rpm/rpmc


  • RPM 소스 패키지(~.src.rpm) 다운로드
  • rpmfind에서 원하는 RPM 소스 패키지를 다운로드 한다.
wget ftp://rpmfind.net/linux/fedora/development/source/SRPMS/~.src.rpm


  • RPM 소스 패키지로 RPM 패키지(~.rpm) 만들기
rpmbuild --rebuild --target=i686 ~.src.rpm
rpmbuild --rebuild ~.src.rpm #--- target은 생략 가능


  • RPM 패키지 설치
rpm -Uvh ~.rpm


  • RPM 소스 패키지 내용 보기
mkdir /usr/src/redhat
rpm -ivh ~.src.rpm
  • /usr/src/redhat/SOURCES : 소스와 패치 파일 저장
  • /usr/src/redhat/SPECS  : 스팩 파일 저장


  • RPM 소스 패키지 다시 만들기
cd /usr/src/redhat/SPECS
rpm -ba ~.spec
  • /usr/src/redhat/SRPMS : RPM 소스 패키지가 생성됨
  • /usr/src/redhat/RPMS  : RPM 패키지가 생성됨


  • /usr/src/redhat/ 폴더의 구조
  • BUILD  : rpm에 의해서 빌드가 이루어지는 디렉토리
  • RPMS  : 아키텍처별 RPM 패키지 저장
  • 아키텍처별로 athlon, geode, i386, i486, i586, i686, noarch 하위 폴더가 있음
  • SOURCES : RPM 소스 저장
  • SPECS  : RPM Spec 저장
  • SRPMS  : SRPM 저장

[CentOS 5.4] PHP에서 파일업로드 않될때


기본적으로 PHP에서 파일 업로드가 않되는 이유는 두가지정도로 알고있다.

첫번째, httpd 서비스 실행자인 nobody에게 read/write 권한을 주었느냐이다.
두번째, php.ini 환경설정에서 file_uploads 옵션이 off로 되어있는지 확인하는것이다.

첫번째 문제라면은 웹 루트폴더 (DocumentRoot)에 가서 권한설정 명령어를 때려준다.
# chown -R nobody htdocs/

두번째 문제일때
# cd /usr/local/apache/conf/
# vi php.ini
여기서 [ : ]을 누르면 화면하단에 [ : ] 표시가 보일것이다~
이것이 vi 편집기 명령어를 사용할수 있게해준다.

[ :/file_uploads ] 라고치고 엔터!! ( 동일 패턴을 검색해주는것이다~ 찾기기능 )
file_uploads = ON 으로 되어있는지 확인하고 저장 [ :wq ] 하고 나온다.

마지막으로 httpd (아파치) 서비스를 다시시작해준다.

# /etc/init.d/httpd restart

2010년 8월 24일 화요일

CentOS 5.4(5.5 Updatede) APM 설치 방법 - 확인!!

TestServer - CentOS 5.5 APM 설치 스크립트 - 작성일 : 2010년 08월 24일

TestServer 사양
OS : CentOS 5.4 / CPU : P4 2.8Ghz / RAM : 1G / HDD : 250GB

Apache, MySQL, PHP 설치이후 Apache가 실행되지 않을때,
혹은 php5 modules 이 문제가 발생되었다고 할때는 제일 아래 하단을 봐주센~ ^^

### APM 다운로드
- 섭군이는 필요한 소스를 다음 디렉토리에 저장하기로 했음~ 각자에 맞게 바꾸면 됩니다~
# /usr/local/src/
- apache 다운로드 : http://www.apache.org/
# wget http://mirror.tw/pub/apache/httpd/httpd-2.2.14.tar.gz
- php 다운로드 : http://www.php.net/
# wget http://kr.php.net/get/php-5.3.1.tar.gz/from/this/mirror
- mysql 다운로드 : http://www.mysql.org/
# wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.41.tar.gz/from/http://mirror.khlug.org/mysql/

 
1. MySQL 설치

 1) 다운로드한 파일 압축 해제
# tar -zvxf mysql-5.1.41.tar.gz
# cd mysql-5.1.41
 
 2) mysql 계정 생성
# useradd -M -s /bin/false mysql
 
 3) ./configure 실행
# ./configure \
--prefix=/usr/local/mysql \
--with-charset=utf8 \
--with-extra-charsets=all
 
 4) make && make install(설치경로 -> /usr/local/mysql)
# make && make install
 
 5) 환경설정파일 복사(support-files/ -> /etc/my.cnf)
# cp /usr/local/apm/mysql-5.1.41/support-files/my-large.cnf /etc/my.cnf
 
 6) 기본 DB 생성
# cd /usr/local/mysql
# bin/mysql_install_db --user=mysql
 
 7) 디렉토리 권한 설정
# chown -R root .
# chown -R mysql var
# chgrp -R mysql .
 
 8) 환경변수 등록(경로 추가)
# vi /root/.bash_profile
# PATH=$PATH:$HOME/bin:/usr/local/mysql/bin <- 수정
# source ~/.bash_profile
 
 9) 자동실행 설정
# cp share/mysql/mysql.server /etc/init.d/mysqld
# chkconfig --add mysqld
# chkconfig --list|grep mysqld
 
 10) root 암호 등록 및 테스트
   - mysql을 처음 설치하고나면 생성되는 root 계정에는 기본적으로 암호가 없다. 그러므로 암호설정을 반드시 해준다.
# /etc/init.d/mysql start
# Start MySQL          [ OK ]
# mysqladmin -u root password 1q2w3e4r
# mysql -u root -p
 
 
==========================================================================================================================
 
2. Apache 설치

 1) 소스를 받은 위치로 이동한다.
        기본경로1 : /usr/local/apm
# cd /usr/local/apm
 
 2) 다운로드한 파일 압축을 풀어준다.
# tar -zxf httpd-2.2.14.tar.gz
# cd httpd-2.2.14

 3) 압축이 풀린 디렉토리로 이동한다.
       기본경로2 : /usr/local/apm/httpd-2.2.14
# cd httpd-2.2.14
 
 4) 컴파일 환경설정을 한다. 5분가량 소요된다.
# ./configure \
--prefix=/usr/local/apache \
--enable-mods-shared=all \
--enable-so \
--enable-rewrite
 
 5) 설치를 진행한다. make 와 make install 두 과정을 합해서 15분~20분 가량 시간이 소요된다.
       기본경로3 : /usr/local/apache/
# make && make install
 
 6) 서버를 재부팅할경우 apache 데몬이 자동실행이 되도록 설정한다.
# cp bin/apachectl /etc/init.d/httpd
# vi /etc/init.d/httpd  <- vi로 httpd파일을 열고 아래내용을 맨 밑에 추가한다.
# chkconfig: 2345 90 90
# description: init file for Apache server daemon
# processname: /usr/local/server/apache/bin/apachectl
# config: /usr/local/server/apache/conf/httpd.conf
# pidfile: /usr/local/server/apache/logs/httpd.pid

# chkconfig --add httpd        ntsysv에 httpd 항목 추가
# chkconfig --list|grep httpd       ntsysv에 httpd 항목이 제대로 추가됐는지 확인
 
 7) 환경설정은 conf/httpd.conf 를 수정하면 된다.
# vi conf/httpd.conf
 
<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or#number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User nobody <- daemon=>nobody
Group nobody <- daemon=>nobody

</IfModule>
</IfModule>

 8) 테스트를 위해 아파치 데몬 실행 및 웹브라우저로 접속을 해본다.
 # /etc/init.d/httpd start      아파치 데몬 시작

 
==========================================================================================================================
 
 
3. PHP 설치

 1) 소스를 다운로드한 위치를 각자 확인한다.
     기본경로1 : /usr/local/apm/
 
 2) 다운로드한 파일의 압축을 해제 한 후 압축풀린 디렉토리로 이동한다.

# tar -zxf php-5.3.1.tar.gz
# cd php-5.3.1
 
 3) 기본경로2 : /usr/local/apm/php-5.3.1
      컴파일하기 위한 환경변수 설정을 해준다.
 
# ./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-config-file-path=/usr/local/apache/conf \
--disable-debug \
--enable-safe-mode \
--enable-track-vars \
--enable-sockets \
--with-mod_charset \
--with-charset=utf8 \
--with-xml \
--with-language=korean \
--enable-mailparse \
--enable-calender \
--enable-sysvsem=yes \
--enable-sysvshm=yes \
--enable-ftp \
--enable-magic-quotes \
--enable-gd-native-ttf \
--enable-url-include \
--enable-trans-id \
--enable-inline-optimization \
--enable-bcmath \
--with-jpeg \
--with-png \
--with-zlib \
--with-jpeg-dir=/usr \
--with-png-dir=/usr/lib \
--with-freetype-dir=/usr \
--with-libxml-dir=/usr \
--enable-exif \
--with-gd \
--with-ttf \
--with-gettext \
--enable-sigchild \
--enable-mbstring

 4) 컴파일 및 인스톨을 진행한다. 20분 가량 걸린다. 담배나 한대 피자..

# make && make install

 5) 환경설정
# cp php.ini-production /usr/local/apache/conf/php.ini    php 설정파일을 아파치가 설치된 디렉토리의 conf 디렉토리로 복사
# vi /usr/local/apache/conf/httpd.conf    아파치 환경설정파일을 열어 아래의 내용을 추가/수정 한다.
 
# 수정
<IfModule dir_module>
 DirectoryIndex index.html index.htm index.php
</IfModule>
 
# AddType 지시어 추가
<IfModule mime_module>

  AddType application/x-compress .Z
  AddType application/x-gzip .gz .tgz

  밑에부분에 추가

  AddType application/x-httpd-php .php .htm .html .inc .php4 .php3
  AddType application/x-httpd-php-cource .phps

</IfModule>

 6) php 설치가 제대로 됐는지 테스트 해본다.

# /etc/init.d/httpd restart    바뀐 환경설정 적용을 위해 아파치데몬 재시작

[참고] 아파치 가동시 아래와 같은 에러가 발생할 경우
Syntax error on line 232 of /usr/local/apache/conf/httpd.conf:
Cannot load /usr/local/apache/modules/libphp5.so into server: cal/apache/modules/libphp5.so: cannot restore segment prot after reloc: Permission

###############################################
오류에 대한 해결 방법
# vi /etc/sysconfig/selinux
SELINUX=disable   <<== disable로 변경하고 재부팅한다
###############################################

# vi /usr/local/server/apache/htdocs/phpinfo.php
phpinfo.php 파일 생성 및 내용 입력후 저장
<? phpinfo(); ?>
 => http://localhost/phpinfo.php 각자의 환경에 맞는 주소입력 요망.
    phpinfo.php가 웹브라우저에서 제대로 표시되면 정상적으로 설치된것이다.
 

아이폰 테마 ms6620님 요청



ms6620님 요청 테마

Wallpaper.html , Wallpaper 삭제 ==> Wallpaper.png 파일로 교체

Private/Background.png ==> Private/Background.jpg 파일로 교체

LockBackground.html 파일 소스 일부 수정 ==> 배경화면부분

Bundles/com.apple.chatkit/Balloon_1.png, Balloon_2.png ==> 파일교체

락스크린 시간 부분 ==> 새벽시간 PM, 밤11시이후 AM 이라고 뜨는것을 수정하였습니다.

크게 변형할것도 없었는데 일때문에 일찍이 못해드렸네요~ 죄송합니다 ㅠㅠ

압축파일은 WinRAR 최신버젼을 사용하였습니다.

2010년 8월 20일 금요일

[클래스] 자리수 지정한 문자로 채우기 str_pad()

출처 : http://www.saybox.co.kr/bbs/board.php?bo_table=board02&wr_id=137


PHP에서 특정 자리수 만큼 지정된 문자로 변경하고자 할 때 간단하게 str_pad() 함수를 이용하면 편리 합니다.
예를들어 1~20까지의 숫자가 있는데 1~9까지는 2자리수로 맞혀 주기 위해 앞에 "0"을 붙이고자 할 경우

str_pad($a, 2, "0", STR_PAD_LEFT);

라고 하면 간단하게 1~9 인경우 앞에 "0"이 붙게 됩니다.
기타 옵션에 따른 결과를 간단히 설명하겠습니다.

<?
$input = "test";
echo "<br>1:".str_pad($input, 8)."s";
echo "<br>2:".str_pad($input, 8, "*", STR_PAD_LEFT)."s";
echo "<br>3:".str_pad($input, 8, "*", STR_PAD_BOTH)."s";
echo "<br>4:".str_pad($input, 5 , "***")."s";
?>

결과 :
1:test    s
2:****tests
3:**test**s
4:test*s

1번은 변경할 문자를 입력하지 않을 경우 " " 부족한 자릿수 만큼 우측에 공백으로 추가합니다.
2번의 경우는 LEFT 부족한 자리수 만큼 왼쪽부터 채우며,
3번 BOTH는 좌,우 모두 균등하게 배치합니다.
만약 남은 공백이 5칸인경우 좌측에 2칸, 우측에 3칸을 추가 합니다.
4번은 변경할 값이 *** 3자리 이지만 자리수를 5칸으로 지정 했기에 * 하나만 적용되었습니다.

다양한 옵션으로 상황에 맞게 적용 하시면 됩니다.

2010년 8월 19일 목요일

짜집기 테마 - 신민아

최근 수정일 : 2010년 8월 25일 10시 10분

오랜만에 들어와서는 느닷없이 아이폰 테마부터 올려주는 쎈쓔 ㅋㅋ;;

안녕하세요~ 섭군입니다 ^^
너무 오랜만이죠??
제가 그동안 너무 소홀했었네요... 근데 또 소홀해질꺼 같아요 ㅎㅎㅎㅎ
아차차!!

이번에 포스팅할글은 아이폰 3GS iSO 4.0.1 테마입니다.
네이버 카페 [ 아사모 ] 에서 많은분들이 올려주신 테마를 기초로 하였구요~
간단하게 소개만해 드리도록하겠습니다.

테마명 : Theme_sinminah

준비물
1 - 해킹된 아이폰
2 - 윈터보드
3 - 하이드클럭락스크린 (맞나?ㅋㅋ)
4 - iBlank
기타 개인적인 어플들 ㅋㅋ

말그대로 완전 짜집기 집대성한 테마입니다.
어떤분의 요청도 있었고 저도 테마를 쓰다보니 테마 만들고 하는것에 빠지게 되었어요 ㅋㅋ

테마 적용법
1. //private/var/stash/Themes.******/ 폴더에 테마 폴더를 넣어준다.
    폴더에는 반드시 [ .theme ] 라는 확장명이 붙어줘야한다
2. 윈터보드로 가서 Theme_sinminah.theme 를 선택한다
3. 리스프링(적용)해준다

- 압축파일은 7zip을 이용하였습니다. (압축률이 뛰어나서요 ㅋㅋ)
-  기존에 락스크린을 보시면 전체적으로 글씨들이 커서 화면 밖으로 튀어나가있었는데 그놈들을 잡아주었습니다.

- 아이콘들을 이쁜것들로 구해보려고 했지만 만들지는 못하고 여기저기서 줏었어요 ㅡㅡ;;
- 위젯 아래사진을 보시면 로딩중이라고 나오는데... 사실 폰이 정지가되서리 ㅋㅋㅋㅋㅋㅋ (아놔 ㅠ)

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

수정2
- 락스크린의 날짜에 25일 파일이 없어서 않떠버리네요;; 그놈 만들었습니다.
- 락스크린의 수요일이 튀어나가는거 수정하였습니다.
- 홈스크린 볼륨조절할때 없어지는놈 기본 디폴트로 변경하였습니다.

이상 간단한 소개를 마치고 적용하는부분에 있어서 궁금하신분은 리플을 달아주시거나
네이트 xdream3817@nate.com 로 쪽찌 날려주세요 ^^



=== 테마 다운로드 ===
http://www.7-zip.org/ << 요기 가셔서 7zip 다운 받고 압축푸세요~
다른걸로 압축풀면 당근 에러가 뜹니다.