웹서버를 운영하면서 https 보안 서버를 사용하기 위해서는 인증기관에서 SSL 인증서를 발급받는다. 발급받은 개인키에 비밀번호가 걸려있을 경우에는 아파치 웹서버를 실행할 때마다 다음과 같은 메시지를 받게된다.

... waiting .Apache/2.2.14 mod_ssl/2.2.14 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.

Server www.test.local:443 (RSA)
Enter pass phrase: [비밀번호 입력]

OK: Pass Phrase Dialog successful.
[ OK ]
root@www:/#

메시지만 나오는 것이라면 별 상관없겠지만, 개인키에 걸려있는 비밀번호를 입력해야만 서버 시작을 진행하는 것이 문제이다. 서버를 운영하다보면 관리 목적에서 자동으로 서버를 재시작해야할 경우가 종종 있는데, 그때마다 수동으로 비밀번호를 입력해주고 있을 수는 없는 노릇이다. 따라서, 이런 경우에는 개인키에 걸린 비밀번호를 제거해줘야할 필요가 생긴다.

개인키에 걸린 비밀번호는 다음과 같이 제거할 수 있다.

root@www:/etc/apache2/ssl/ssl.key# openssl rsa -in key.pem.orig -out key.pem
Enter pass phrase for key.pem.orig: [비밀번호 입력]
writing RSA key
root@www:/etc/apache2/ssl/ssl.key# [완료]

위의 예에서는 "key.pem.orig"라는 파일이 비밀번호가 걸려있는 원래 개인키 파일이다. 이렇게 실행한 후에, "key.pem"이라는 새로 만들어진 개인키 파일을 사용하면 비밀번호를 물어보는 귀찮은 일이 발생하지 않는다. 다만, 보안키의 비밀번호가 사라진만큼 보안키 저장에 신경써야하지만, 보안키 저장 장소는 비밀번호가 있건 없건 접근 권한등 보안에 신경쓰자.


Redmine으로 소프트웨어 개발 프로젝트를 관리하고 있으면서 Subversion을 사용중이라면, Redmine 계정과 Subversion 계정이 별도로 관리하는 것이 꽤 번거로울 수 있다. 이런 번거로움을 덜수 있도록 Redmine 계정에 대해서 Subversion 접근권한을 부여하는 방법을 소개한다.

아래의 설정은 아파치 설정파일 내용으로 이와같이 설정하면 Redmine 계정으로 Subversion 접근이 가능하다. 7줄은 Subversion 저장소가 위치할 절대 경로인데, 이 설정으로는 이 디렉토리 하위 디렉토리에 Redmine에서 관리할 저장소를 만들면 된다. 11~14줄은 Redmine DB 접속 정보이다.

<VirtualHost *>
    ServerAdmin webmaster@test.net
    ServerName test.net

    <Location /svn>
        DAV svn
        SVNParentPath /svn

        Auth_MySQL On
        Auth_MySQL_Authoritative on
        Auth_MySQL_DB "redmine"
        Auth_MySQL_Host "localhost"
        Auth_MySQL_User "redmine"
        Auth_MySQL_Password "redmine"

        Auth_MySQL_Password_Table users
        Auth_MySQL_Username_Field login
        Auth_MySQL_Password_Field hashed_password
        AuthMySQL_Empty_Passwords off
        AuthMySQL_Encryption_Types SHA1Sum

        AuthType Basic
        AuthName "Authorization Realm"
        Require valid-user
        AuthUserFile /dev/null
        AuthBasicAuthoritative Off
    </Location>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined
</VirtualHost>

여러 프로젝트가 있고, 프로젝트별로 참여자에게만 접근 권한을 줘야하는 상황에는 위의 설정만으로는 부족하다. 그런 경우에는 아래의 설정을 추가하면 해당 프로젝트에 참가하는 계정만 저장소에 접근할 수 있게 할 수 있다. 아래 설정 중의 project_id는 Redmine의 해당 프로젝트 번호로 Redmine DB의 project 테이블을 참고하면 알 수 있다.

Auth_MySQL_Password_Clause " AND status = 1 AND id IN (select user_id from members where project_id = 1)"

또한, Subversion 경로도 아래와 같이 각 프로젝트별로 설정해줘야한다.

SVNPath /svn/project1

위와 같이 한다면, 반드시 프로젝트에 포함되어있는 계정을 Redmine에서 Subversion 저장소 설정 시에 넣어줘야한다는 문제가 남는다. 특정 계정을 사용하기가 번거롭다면 조회용 계정을 하나 만들어서 프로젝트에 포함시킨뒤에 잠궈두고, 다음과 같이 설정을 추가해도 된다. 아래에서 id는 조회용 계정의 번호로 Redmine DB의 members 테이블에서 확인할 수 있다.

Auth_MySQL_Password_Clause " AND (status = 1 OR id = 1) AND id IN (select user_id from members where project_id = 1)"

'Operating' 카테고리의 다른 글

SSL 인증서 개인키 비밀번호 없애기  (2) 2012.07.29
VMWare에서 리부팅없이 새 하드디스크 추가하기  (0) 2010.11.11
LVM 설정  (0) 2010.04.01

vmware에서 리눅스를 Guest OS로 사용 중일때, 새 하드디스크를 추가하기 위해서는 리부팅을 해야한다. 하지만, 리부팅을 하지 않고도 디스크를 추가할 수 있는 방법이 있어 소개한다.

  1. 가상 머신의 설정에 들어가서 하드디스크를 추가한다.
  2. 리눅스 콘솔에서 관리자 권한으로 다음을 입력한다. 이때, #은 0,1,2 등의 번호가 되는데, vmware에서 하드디스크 정보에서 볼수 있는 ID값의 첫째자리(인 것으로 생각된)다. 이것을 통해서 OS가 SCSI로 연결된 장치를 재검색하게한다.
    echo "- - -" > /sys/class/scsi_host/host#/scan
  3. 나머지는 리부팅해서 하드디스크를 추가하는 과정과 동일하다.

만약, SCSI 장치 재검색 명령어가 제대로 동작하지 않는다면, 우분투 사용자일 경우 아래 방법으로 같은 결과를 얻을 수 있다.(다른 배포판도 해당 도구가 - rescan-scsi-bus.sh - 존재할지는 모르겠다)

sudo apt-get install scsitools
sudo rescan-scsi-bus.sh

'Operating' 카테고리의 다른 글

Redmine 계정으로 Subversion 인증 연동하기  (0) 2011.02.13
LVM 설정  (0) 2010.04.01
MySQL 대소문자 구분  (0) 2010.03.10
리눅스에서 제공하는 LVM을 이용하면, 파티션 용량 증설, 축소, 디스크 이전 등이 간편해진다. 특히, 계속 용량이 증가해야하는 곳에서는 유용할 텐데, 그 사용법을 간단히 정리해보았다.

설치 및 초기 설정 방법

  1. LVM 설정을 위해서 필요한 패키지 설치(우분투 기준)
    # apt-get install lvm2 dmsetup
    # modprobe dm-mod
  2. 파티션 준비
    fdisk에서 파티션을 만들때, 형식(type)을 8e(Linux LVM)으로 지정해준다.
  3. physical volume(PV) 준비

    # pvcreate <파티션 경로 (ex. /dev/sdb1)> => PV 만들기

    참고>

    # pvdisplay => PV 내역 보기 # pvremove <파티션 경로> => PV 삭제

  4. volume group(VG) 생성

    # vgcreate <새 VG 이름> <파티션 경로>

    참고>

    # vgdisplay => VG 정보 보기 # vgscan => VG 찾기 # vgrename <이전 볼륨 이름> <새 볼륨 이름> => VG 이름 변경 # vgremove <볼륨 이름> => VG 삭제

  5. logical volume(LV) 생성
    # lvcreate --name share --size 40G fileserver
    # lvcreate --name share -l100%VG fileserver
    참고>

    # lvdisplay => LV 확인 # lvscan => LV 확인 # lvrename <vg 이름> <이전 이름> <새 이름> => LV 이름 변경 # lvremove /dev/<vg 이름>/<lv 이름> => LV 삭제

기타 다른 작업들

  • 디스크 추가

    # vgextend <vg 이름> <파티션 경로>
    # lvextend -L1.5G /dev/<vg 이름>/<lv 이름>
    # lvreduce -L1G /dev/<vg 이름>/<lv 이름>
    만약 LV에서 XFS를 사용할 경우, 다음과 같이 파티션을 늘린다.

    # xfs_growfs /mnt/raid # xfs_growfs /mnt/raid -D <size>

  • 새 디스크에 기존 내용을 옮기는 경우, 즉 물리적인 디스크가 이전되는 경우
    # pvmove <이전 파티션 경로> <새 파티션 경로>
  • 사용 중인 디스크를 제외하기
    # vgreduce fileserver /dev/sdb1


'Operating' 카테고리의 다른 글

VMWare에서 리부팅없이 새 하드디스크 추가하기  (0) 2010.11.11
MySQL 대소문자 구분  (0) 2010.03.10
Flush DNS cache on Windows  (0) 2010.02.22

MySQL에서 Collation 설정에 따라서 영어 대소문자 구분을 하지 않는 경우가 있다. 예를 들어 다음과 같은 쿼리를 했을 경우, 결과로 "TRUE(1)"를 출력하는 경우가 바로 그런 경우이다.

SELECT 'A' = 'a';

이런 경우에 대소문자를 구분할 필요가 있을 경우에는 "="연산 대신에 "LIKE"연산을 사용하면 된다. 예를 들어 위의 쿼리는 다음과 같이 할 경우, 결과로 "FALSE(0)"를 얻게된다.

SELECT 'A' LIKE 'a';

'Operating' 카테고리의 다른 글

LVM 설정  (0) 2010.04.01
Flush DNS cache on Windows  (0) 2010.02.22
리눅스에서 디바이스의 UUID 확인하기  (0) 2010.02.18

윈도우 PC를 사용하다보면, 종종 DNS 정보가 변경된 후에도 이전 IP로 접속되는 경우가 있다. 이는 윈도우가 한번 얻은 DNS 정보를 캐쉬하기 때문인데, 이는 24시간동안 유지된다고 한다. 컴퓨터를 한번 껐다 켜는 것이 가장 간단한 방법일 수 있겠지만, 컴퓨터를 끌 수 없는 상황에서 캐쉬만 초기화 하기 위한 방법이 있어서 소개한다.

사실, 별로 복잡할 것은 없는데, 커맨드 창을 열고 아래와 같은 명령어를 입력하는 것이 전부이다.

c:\> ipconfig /flushdns

참고로, 현재 캐쉬되어있는 DNS 정보를 보는 명령은 아래와 같다.

c:\> ipconfig /displaydns

'Operating' 카테고리의 다른 글

MySQL 대소문자 구분  (0) 2010.03.10
리눅스에서 디바이스의 UUID 확인하기  (0) 2010.02.18
간단하게 SMTP 서버 테스트 하기  (0) 2009.11.10

최근의 리눅스 배포판들의 fstab파일에는 주로 디바이스 경로가 아니라 UUID값이 들어가 있는데, 이러한 디바이스의 UUID를 확인하기 위해서는 vol_id 명령을 사용한다. 사용법은 아래와 같다.

# vol_id [디바이스 경로]
ex> vol_id /dev/sda1

프로그램을 실행하면 다음과 같은 형식으로 내용이 출력되는데, 'ID_FS_UUID' 항목에 나오는 값이 바로 해당 디바이스의 UUID이다.

ID_FS_USAGE=filesystem
ID_FS_TYPE=xfs
ID_FS_VERSION=1.0
ID_FS_UUID=34694935-eca3-4c9c-85ab-b16ca1bd548b
ID_FS_UUID_ENC=34694935-eca3-4c9c-85ab-b16ca1bd548b
ID_FS_LABEL=
ID_FS_LABEL_ENC=
ID_FS_LABEL_SAFE=

반대로 UUID를 이용해서 디바이스 경로를 알아내기 위해서는 'findfs' 명령을 사용한다. 사용법은 다음과 같으며, 명령을 입력하면 바로 디바이스 경로를 출력한다.

# findfs UUID=[UUID값]
ex> findfs UUID=34694935-eca3-4c9c-85ab-b16ca1bd548b
[추가]

최근 우분투 배포판에서는 vol_id 명령이 빠졌다. 대신 blkid 명령을 사용할 수 있다. 사용법은 다음과 같다.

# blkid
# blkid [디바이스 경로]


'Operating' 카테고리의 다른 글

Flush DNS cache on Windows  (0) 2010.02.22
간단하게 SMTP 서버 테스트 하기  (0) 2009.11.10
리눅스에서 가상 메모리 공간 지정하기  (0) 2009.09.23

간단히 telnet 클라이언트를 사용해서 SMTP 서버를 테스트해보는 방법이다.

  1. "telnet < 서버 이름> 25" 엔터
  2. "ehlo < 서버 이름" 엔터
  3. (인증이 필요할 경우) "auth login" 엔터
  4. (인증이 필요할 경우) BASE 64 인코딩된 사용자이름 입력
  5. (인증이 필요할 경우) BASE 64 인코딩된 비밀번호 입력
  6. "mail from:< 보내는 메일 주소>" 엔터
  7. "rcpt to:< 받을 메일 주소>" 엔터
  8. "data" 엔터
  9. 메일 내용 작성후 엔터 두번을 연타하면 완료
  10. "quit" 엔터

BASE 64 인코딩은 여기를 비롯해서 구글링하면 쉽게 해볼수 있다.

리눅스에서는 스왑(가상 메모리) 공간으로 사용하기 위해서 파티션을 만드는 것이 일반적이지만, 다음과 같이 파일을 만들어 스왑 공간으로 사용하는 것도 가능하다.

# dd if=/dev/zero of=[스왑 파일 (예)/swapfile] bs=1024 count=2048 (kb단위, 이경우 2MB)
# mkswap -c [스왑 파일] 2048
# swapon [스왑 파일]

물론, 아래와 같이 파티션을 새로 만들어서 스왑으로 사용하는 것도 가능하다.

# fdisk 등을 사용해서 스왑 파티션을 잡는다.(type 82)
# mkswap -c [파티션 경로 (예)/dev/sda2]
# swapon [파티션 경로]

리눅스에서 파일 소유자를 한꺼번에 변경할때, 숨겨진 파일(.으로 시작하는)이 변경이 되지 않아 골치 아플때가 있다. 이런 경우 이렇게 해결한다.

# find . -type d -exec chown user:group {} ;
# find . -type f -exec chown user:group {} ;

+ Recent posts