LazyDreamy

관리자 | 글쓰기

LazyDreamy » Search » Results » Articles

Linux와 관련된 글 11개

  1. 2009/09/23 SeLinux httpd use nfs files
  2. 2009/09/22 SeLinux 관련 펌
  3. 2009/09/22 php 외부 db 서버 (또는 기타 호스트) 접속 문제 (1)
  4. 2009/09/22 CentOS 5 vsftpd 500 OOPS: cannot change directory
  5. 2009/09/22 CentOS 5 with PHP5.3
  6. 2009/09/16 nfs mount
  7. 2009/09/16 umount : device is busy 대응법 (1)
  8. 2009/09/05 MySQL Performance Tuning Primer Script
  9. 2009/08/25 CentOS vsftpd
  10. 2009/08/25 CentOS 4.x with PHP5 ,MySQL5

LazyDreamy » Computer/Linux

SeLinux httpd use nfs files

드림 | 2009/09/23 12:02

selinux 설정 체크

[root@dev1 web]# /usr/sbin/getsebool -a | grep nfs
allow_ftpd_use_nfs --> off
allow_nfsd_anon_write --> off
httpd_use_nfs --> off
nfs_export_all_ro --> on
nfs_export_all_rw --> on
nfsd_disable_trans --> off
samba_share_nfs --> off
use_nfs_home_dirs --> off
virt_use_nfs –> off


httpd_use_nfs 를 on 으로 바꿔준다.

[root@dev1 web]# setsebool -P httpd_use_nfs 1

2009/09/23 12:02 2009/09/23 12:02


태그 , , ,

(go to top)

LazyDreamy » Computer/Linux

SeLinux 관련 펌

드림 | 2009/09/22 20:44

  • 끄고 켜기
    • 끄기

      # setenforce 0

    • 켜기

      # setenforce 1

    • 꺼버리면 대부분의 문제가 해결됩니다.. -_-;
  • 파일의 권한 보기
    • SELinux 아래에선 기존의 퍼미션과 별도로 security tag가 파일이나 디렉마다 설정됩니다. 이는 다음 명령어로 볼 수 있습니다.

      $ ls -Z
      (중략..)
      -rw-r--r--  root root  system_u:object_r:etc_t          csh.login
      drwxr-xr-x  root lp    system_u:object_r:cupsd_etc_t    cups
      drwxr-xr-x  root root  system_u:object_r:dbusd_etc_t    dbus-1
      (후략..)

  • 임의 디렉터리의 권한 설정하기
    • /etc/selinux/targeted/contexts/files/file_contexts.local 파일을 수정해 해당 디렉터리에 대해 설정해줍니다. 설정 방법은 /etc/selinux/targeted/contexts/files/file_contexts 을 참고하거나 메뉴얼 페이지를 참고하세요. 이 후에는 restorecon 이 이 설정 기준으로 먹습니다.
  • symbolic link 파일의 설정
    • chcon -h 를 해줘야 먹습니다. 링크의 경우..
  • apache (httpd)와 트러블
    • 기본 웹 디렉터리에서는 기본적으로 문제 없게 설정되어 있습니다. /var/www 쪽이나 유저의 홈디렉 아래에 public_html, www, web 등등 일반적인 경로 기준입니다.
    • OS 업그레이드 후 기본 웹 디렉에서 403 Permission error 가 떨어질때:
      • 보통 백업했던 해당 디렉을 복구하면서 태그가 붙지 않은 경우입니다.

        Forbidden

        You don't have permission to access / on this server.

      • /var/log/audit/audit.log 에 다음과 같이 에러가 뜹니다.

        type=AVC msg=audit(1177139220.333:330): avc:  denied  { getattr } for  pid=4337 comm="httpd" name="phpMyAdmin-2.9.1.1-all-languages" dev=dm-0 ino=6418532 scontext=root:system_r:httpd_t:s0 tcontext=root:object_r:user_home_t:s0 tclass=dir
        type=SYSCALL msg=audit(1177139220.333:330): arch=40000003 syscall=196 success=no exit=-13 a0=91d5f38 a1=bf90d63c a2=265ff4 a3=2008171 items=0 ppid=4332 pid=4337 auid=0 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) comm="httpd" exe="/usr/sbin/httpd" subj=root:system_r:httpd_t:s0 key=(null)
        type=AVC_PATH msg=audit(1177139220.333:330):  path="/var/www/html/somedir"

      • 이 때는 restorecon 명령어를 사용하면 원하는 파일과 디렉을 기본 설정값대로 만들 수 있습니다.

        # restorecon -rv /home

      • ~someuser/public_html 같은 디렉터리는 기본 설정이 문제 없는거니 관련 디렉을 restorecon 하면 되지만, 특이한 위치에 웹페이지가 있다면 다음 파일들을 수정하면 되지 않을까 싶습니다.

        /etc/selinux/targeted/contexts/files/homedir_template
        /etc/selinux/targeted/contexts/files/file_contexts.homedirs

      • template 을 수정하지 않고 웹 접근을 설정할 수도 있긴 합니다. root 가 아닌 일반 유저나 특별한 예외 상황에서는 이런 접근을 해야 하죠. 설정 전 설정은 다음과 같이 보입니다.

        $ ls -Z
        drwxrwxrwx  imo imo   root:object_r:user_home_t        pds
        drwxr-xr-x  imo imo   user_u:object_r:httpd_sys_content_t public_html

        여기서 public_html 은 httpd 접속이 가능하기 때문에 웹에서 보이지만, pds 는 403이 떨어집니다. chcon 명령어로 속성을 추가해줍니다.

        $ chcon -R -t httpd_sys_content_t pds

        그러면 해당 디렉의 설정이 바뀌게 되고 접속 가능해집니다.

        $ ls -Z
        drwxrwxrwx  imo imo   root:object_r:httpd_sys_content_t pds
        drwxr-xr-x  imo imo   user_u:object_r:httpd_sys_content_t public_html

    • php 에서 외부 데이터베이스 연결이 되지 않습니다. mysql_connect 로 다른 호스트 연결이 되지 않는다는가 하는 경우죠. 쉘에서 mysql 등으로는 연결이 잘 되기 때문에 원인 파악이 쉽지 않습니다.
      • 웹에서는 다음과 같은 에러 메시지를 확인할 수 있고,

        Can't connect to MySQL server on 'yyy.yyy.yyy.yyy' (13)

      • error_log 에는 다음과 같은 에러가 떨어지며..

        [Thu May 10 00:39:53 2007] [error] [client xxx.xxx.xxx.xxx] PHP Warning:  mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: Can't connect to MySQL server on 'yyy.yyy.yyy.yyy' (13) in /home/someuser/public_html/file.php on line 2

      • /var/log/message 에서 원인을 파악할 수 있습니다.

        May 10 00:39:53 server kernel: audit(1178725193.534:53): avc:  denied  { name_connect } for  pid=4178 comm="httpd" dest=3306 scontext=user_u:system_r:httpd_t:s0 tcontext=system_u:object_r:mysqld_port_t:s0 tclass=tcp_socket

      • 해결 방법은 다음의 bool 값을 켜주면 됩니다.
        -P (대문자) 옵션을 주면 설정이 저장되어서 리붓해도 이 설정이 적용됩니다.

        # setsebool -P httpd_can_network_connect_db on

        원인을 파악하기 힘들어 당황스러운 에러였습니다.


출처 : http://arcy.org/tc/entry/SELinux-%EC%84%A4%EC%A0%95

2009/09/22 20:44 2009/09/22 20:44


태그 ,

(go to top)

LazyDreamy » Computer/Linux

php 외부 db 서버 (또는 기타 호스트) 접속 문제

드림 | 2009/09/22 18:55

해결하고보니.. SeLinux 문제. 확 꺼버릴까 고민을 orz

[root@dev1 /]# setsebool -P httpd_can_network_connect=1


SeLinux 관련 참조 : http://arcy.org/tc/entry/SELinux-%EC%84%A4%EC%A0%95

2009/09/22 18:55 2009/09/22 18:55


태그 , ,

(go to top)

LazyDreamy » Computer/Linux

CentOS 5 vsftpd 500 OOPS: cannot change directory

드림 | 2009/09/22 15:42

권한문제가 대부분이다 selinux 활성화 문제일 확률이 높다.


[root@dev1 vsftpd]# setsebool -P ftp_home_dir 1

2009/09/22 15:42 2009/09/22 15:42


태그 , , ,

(go to top)

LazyDreamy » Computer/Linux

CentOS 5 with PHP5.3

드림 | 2009/09/22 10:55

centos 는 업데이트 반영이 좀 늦다. 그래서 php 5.3 은 따로 rpm 을 구하거나, 컴파일 해야 한다. 일단 컴파일을 안하고 패키지 관리를 방향으로 잡았으므로.. 다른 동네에서 제작된 것을 이용한다.

[root@dev1 /]# rpm --import http://repo.webtatic.com/yum/RPM-GPG-KEY-webtatic-andy
[root@dev1 /]# cd /etc/yum.repos.d/
[root@dev1 yum.repos.d]# wget http://repo.webtatic.com/yum/webtatic.repo
--06:08:43--  http://repo.webtatic.com/yum/webtatic.repo
Resolving repo.webtatic.com... 87.124.70.63
Connecting to repo.webtatic.com|87.124.70.63|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 210 [text/plain]
Saving to: `webtatic.repo'

100%[===================================================================>] 210         --.-K/s   in 0s

06:08:44 (20.0 MB/s) - `webtatic.repo' saved [210/210]

[root@dev1 yum.repos.d]# yum --enablerepo=webtatic install php


php 에서 추가로 필요한 부분 설치

[root@dev1 yum.repos.d]# yum --enablerepo=webtatic install php-mcrypt php-pdo php-xml php-gd php-mysql php-mbstring


mysql 5 설치

[root@dev1 yum.repos.d]# yum install mysql-server


참조 : http://www.webtatic.com/blog/2009/06/php-530-on-centos-5/

2009/09/22 10:55 2009/09/22 10:55


태그 , , , ,

(go to top)

LazyDreamy » Computer/Linux

nfs mount

드림 | 2009/09/16 16:52

nfs service 시작 (ex> # service nfs start)


# mount nfserver_addr:/sharesource_dir /sharepoint_dir -t nfs -o rsize=8192,wsize=8192,hard,intr


기타 참고


16.2. NFS 파일 시스템 마운트하기

mount 명령을 사용하여 다른 컴퓨터의 공유 NFS 디렉토리를 로컬 컴퓨터 상에 마운트하실 수 있습니다. 예로 들면:

mount shadowman.example.com:/misc/export /misc/local


경고

로컬 컴퓨터 상에는 마운트할 지점인 디렉토리 (위의 예시에서는 /misc/local디렉토리)가 반드시 존재해야 합니다.

위의 명령에서 shadowman.example.com 부분은 NFS 파일서버의 호스트명이고, /misc/exportshadowman 상에서 내보낼 디렉토리이며, 마지막으로 /misc/local은 로컬 컴퓨터 상에서 파일 시스템이 마운트될 위치입니다. mount 명령을 실행 후 (그리고 클라이언트가 shadowman.example.com NFS 서버로부터 적절한 권한을 가지고 있다면), 클라이언트 사용자는 ls /misc/local 명령을 입력하여 shadowman.example.com 컴퓨터에 있는 /misc/export 디렉토리에 저장된 파일 목록을 볼 수 있습니다.

16.2.1. /etc/fstab를 사용하여 NFS 파일 시스템 마운트하기

다른 컴퓨터로부터 NFS 공유를 마운트할 수 있는 또 다른 방법은 /etc/fstab 파일에 새로운 줄을 첨가하는 것입니다. NFS 서버의 호스트명, 보내질 디렉토리명, NFS 공유가 마운트될 로컬 컴퓨터 상의 디렉토리명이 언급되어야 합니다. /etc/fstab 파일을 수정하시려면, 루트로 로그인하셔야 합니다.

/etc/fstab에 첨가될 줄은 다음과 같은 형식으로 작성됩니다:

server:/usr/local/pub    /pub   nfs    rsize=8192,wsize=8192,timeo=14,intr

마운트 지점인 /pub 은 반드시 클라이언트 컴퓨터 상에 위치해야 합니다. 클라이언트 시스템에서 /etc/fstab 파일에 위의 줄을 첨가하신 후, 쉘 프롬프트에서 mount /pub 명령을 입력하시면, /pub 디렉토리가 마운트됩니다.

16.2.2. autofs를 사용하여 NFS 파일 시스템 마운트하기

NFS 공유를 마운트하기 위한 세번째 옵션은 autofs를 사용하는 것입니다. Autofs는 자동마운트 데몬을 사용하여 필요한 경우에만 마운트하는 동적 마운트 방식입니다.

Autofs는 마스터 맵(map) 설정 파일인 /etc/auto.master를 참고하여 이미 정의된 마운트 지점을 알아냅니다. 그 후 각 마운트 지점에 사용되는 적절한 매개 변수를 가지고 자동 마운트 과정을 시작합니다. 마스터 맵 파일은 한 줄마다 마운트 지점과 이 마운트 지점 아래에 마운트된 파일 시스템을 정의하는 별개의 맵 파일을 정의합니다. 예를 들어, /etc/auto.misc 파일은 /misc 디렉토리 내의 마운트 지점들을 정의하는 맵 파일입니다; 이러한 관계는 /etc/auto.master 파일에 정의되어 있습니다.

auto.master 파일에 포함된 각 항목들은 3가지 부분으로 나뉘어 있습니다. 첫번재 부분은 마운트 지점이고, 두번째 부분은 맵 파일의 위치이며 세번째 부분은 있어도 되고 없어도 되는 선택 사항으로서 제한시간 (timeout) 값과 같은 정보가 포함됩니다.

예를 들어, 원격 컴퓨터 penguin.host.net 상의 /proj52 디렉토리를 여러분 컴퓨터 상의 /misc/myproject 디렉토리로 마운트하시려면, auto.master 파일에 다음과 같은 줄을 첨가해 주십시오:

/misc   /etc/auto.misc --timeout 60

다음 줄을 /etc/auto.misc 파일에 추가하십시오:

myproject  -rw,soft,intr,rsize=8192,wsize=8192 penguin.example.net:/proj52

/etc/auto.misc의 첫번째 부분은 /misc 하부 디렉토리 이름입니다. 이 디렉토리는 자동 마운트 기능을 사용하여 동적으로 생성되었기 때문에 클라이언트 컴퓨터 상에 실제로 존재하지는 않습니다. 두번째 영역에는 읽기 쓰기 권한에 사용되는 rw와 같은 마운트 옵션이 포함됩니다. 세번째 부분에는 NFS 내보내기되는 호스트명과 디렉토리의 위치입니다.


알림

로컬 파일 시스템 상에 /misc 디렉토리가 있어야 하며, 이 /misc 디렉토리에는 어떠한 하부 디렉토리도 존재해서는 안됩니다.

Autofs는 서비스입니다. 이 서비스를 시작하기 위해서는 쉘 프롬프트에서 다음 명령을 입력하십시오:

/sbin/service autofs restart

사용 중인 마운트 지점을 보시려면, 쉘 프롬프트에서 다음 명령을 입력하시면 됩니다:

/sbin/service autofs status

autofs가 실행되는 동안 /etc/auto.master 설정 파일을 수정하신다면, 쉘 프롬프트에서 다음 명령을 입력하여 자동 마운트 데몬이 다시 읽혀지도록 하셔야 합니다:

/sbin/service autofs reload

부팅시 autofs가 시작되도록 설정하시려면, 서비스 관리 방법에 대한 자세한 사항을 14 장에서 찾아보시기 바랍니다.



http://www.linux.org.uk/pub/distributions/redhat/9/en/doc/RH-DOCS/rhl-cg-ko-9/s1-nfs-mount.html

2009/09/16 16:52 2009/09/16 16:52


태그 ,

(go to top)

LazyDreamy » Computer/Linux

umount : device is busy 대응법

드림 | 2009/09/16 16:27

# fuser –cu 디렉토리

해당 디렉토리 사용자 또는 프로세스 확인


# fuser –ck 디렉토리

강제로 죽이기


이후 umount 실행

2009/09/16 16:27 2009/09/16 16:27


태그

(go to top)

LazyDreamy » Computer/Linux

MySQL Performance Tuning Primer Script

드림 | 2009/09/05 00:15

http://day32.com/MySQL/


http://day32.com/MySQL/tuning-primer.sh


MySQL 서버의 상태 값들을 확인하여 설정 값과 간단한 권고를 해준다.
상태 파악등에 유용.


참고 : http://truefeel.tistory.com/156

2009/09/05 00:15 2009/09/05 00:15


태그 ,

(go to top)

LazyDreamy » Computer/Linux

CentOS vsftpd

드림 | 2009/08/25 21:55

설치는 rpm 으로 일괄 관리하기 위해 yum 을 사용

# yum install vsftpd


설정 파일 수정

/etc/vsftpd/vsftpd.conf


anonymous_enable=NO


local_enable=YES
write_enable=YES


pasv_enable=YES
pasv_min_port=30000
pasv_max_port=32000


chroot_local_user=YES


방화벽 수정

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 30000:32000 -j ACCEPT


참조 : http://vsftpd.beasts.org/vsftpd_conf.html , http://blueb.net/blog/1403


원래 vsftpd + pam-mysql + mysql 형태로 가려고하였으나, pam-mysql 이 아직 애매해보여서 패스;

2009/08/25 21:55 2009/08/25 21:55


태그 , ,

(go to top)

LazyDreamy » Computer/Linux

CentOS 4.x with PHP5 ,MySQL5

드림 | 2009/08/25 21:48

기존 yum 설정에서 저장소 사용 추가

# vi /etc/yum.repos.d/CentOS-Base.repo

파일 하단의 저장소 설정 수정 및 추가

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
priority=2
protect=1


#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
priority=2
protect=1


[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=
http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1


dag 의 RPM 들을 검사하기위한 gpg-key 추가 설치

# rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt


설정된 저장소를 이용해서 apm 설치

# yum install httpd
# yum install php
# yum install php-gd php-mysql php-xml php-mbstring
# yum install mysql mysql-server mysql-libs


방화벽 수정

# vi /etc/sysconfig/iptables


원하는 포트 추가

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT


방화벽 재시작

# service iptables restart


리붓 후 자동 시작 설정

# chkconfig httpd on
# chkconfig mysqld on



참조 : http://lifeij.tistory.com/6

2009/08/25 21:48 2009/08/25 21:48


태그 , , , ,

(go to top)