アーカイブ

‘Linux’ カテゴリーのアーカイブ

CentOS5 の Logwatch

CentOS5のLogwatchはバージョンがあがったせいか、メール内にContent-Type:で余計な文字コードの指定をいれてくるので、日本人のメーラでは、表示が英語モード?のフォントになってしまい見にくいので、メール内に日本語ないけど、日本語のContent-Typeに変更してみる。

CentOS4
logwatch-5.2.2-2.EL4
CentOS5
logwatch-7.3-5
変更点
/usr/sbin/logwatch  (/usr/share/logwatch/scripts/logwatch.pl への symlink)
1020c1020
< $out_mime .= "Content-Type: text/plain; charset=\\"iso-2022-jp\\"\\n\\n";
---
> $out_mime .= "Content-Type: text/plain; charset=\\"iso-8859-1\\"\\n\\n";
カテゴリー: Linux タグ:

PHPのSafeModeでmb_send_mail()

2007 年 4 月 23 日 コメント 3 件

PHPをSafeModeの検証してて気づいた事、SafeMode=Onだとmb_send_mailの第5パラメータが使用できないらしい(知らんかった(笑))、「-f$mailfrom」とかしてエラーメールの返り先の「Return-Path:」「Envelope-From:」とか設定する事が多いと思うのですが、使えないとなるとこまったなー

Warning: mb_send_mail() [function.mb-send-mail]: SAFE MODE Restriction in effect. The fifth parameter is disabled in SAFE MODE. in

ってmb_send_mailでエラーがでます。
mail()だけダメでmb_send_mail()なら大丈夫って事も書いてあるサイトもあるけど、今試してるCentOS5のPHP-5.1.6だとmail()もmb_send_mail()も両方ダメですね。
と思って、CentOS4のphp-4.3.9で試したらmail()はダメだけど、mb_send_mail()はOKでしたorz

セーフモード(PHPマニュアル)

mail()
セーフモードでは、5番目のパラメータが無効となります。(注意: PHP 4.2.3以降のみ適用)
mb_send_mail()
bool mb_send_mail ( string to, string subject, string message [, string additional_headers [, string additional_parameter]] )
カテゴリー: Linux タグ:

yumをプロキシ経由で

yum.confに指定

proxy=http://PROXYサーバ:port番号/
ex>
proxy=http://192.168.1.1:3128/

アカウント毎に設定(環境変数にセットしてしまう)

~/.bashrc
export http_proxy=http://192.168.1.1:3128/
export ftp_proxy=http://192.168.1.1:3128/
カテゴリー: Linux タグ:

CentOS5 ネットワークインストール

2007 年 4 月 17 日 コメント 4 件

ServerCD版がそのうちでるんでしょうけど(でるよね?)、CD6枚も焼くのはもったいねーって人や、サーバにはDVDついてないよーって時は、ネットワークからファイル引っ張ってきてインストールしてみましょう。
(ちなみにオプションで何も選ばずに最小でインストールしてもCDはしっかり6枚要求きちゃいます)

CD1枚目のファイル
/images/boot.iso

他には、ftp://ftp.riken.jp/Linux/centos/5/os/i386/images/boot.isoとかをCDとか、USBメモリとかに焼いて起動して(7Mぐらいあるので、FDDはだめですね、昔はFDDでインストールできたもんだ(^^;)HTTP,FTP,NFSとかでDVDのISOイメージをマウントさせておいて指定すれば、CD多数や、DVDがなくてもOKですね。
 
実は、社内とかからPROXY経由でHTTPインストールしたいのですが、PROXYの指定はできないのかな?知ってる人おしえてー(^^)

カテゴリー: Linux タグ:

MBRのバックアップ(DDコマンド)

めったに使うことはないですが、ユーザにイメージのフルリストアさせたときにMBRをどうしようか悩んだ末、ddを使わせることにしたときのメモ

バックアップ

dd if=/dev/sda of=/mbr.img bs=512 count=1

リストア

dd if=/mbr.img of=/dev/sda bs=446 count=1

MBR(マスターブートレコード)をバックアップするには(@IT)

とおもったけど、grubの場合はgrubで入れなおしたほうが簡単かな。

grub-install --root-directory=リストアしたフォルダ /dev/sda
カテゴリー: Linux タグ:

ISOイメージをループバックマウント

isoイメージをループバックデバイスとしてマウントする。
やろうと思った時はいつも忘れてるので、メモ。

mount -t iso9660 -o loop,ro image.iso /mnt/cdrom

カテゴリー: Linux タグ:

Apacheのリソース制限(CGI)

Apache内のCGIでCPU,メモリのリソース食いなプロセスを制限するために調査。。。設定値の目安がわからず、とりあえず適当に(^^;

RLimitCPU 90 120              Soft 90s  Hard 120s
RLimitMEM 10485760 20971520   Soft 10MB Hard 20MB
RLimitNPROC 10 15             Soft 10   Hard 15

RLimitCPU,RLimitMEM,RLimitNPROC

カテゴリー: Linux タグ:

Apache(SuExec)の状態確認

SuExecのコンパイル(設定状態)の確認

CentOS4の場合
# suexec -V
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="apache"
-D AP_LOG_EXEC="/var/log/httpd/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=500
-D AP_USERDIR_SUFFIX="public_html"

Debian(Sarge)のApacheの場合は「/usr/lib/apache2/suexec2 -V」かも

カテゴリー: Linux タグ:

Courier-IMAP(CentOS4)

2007 年 3 月 26 日 コメント 1 件

CentOS4はDovecotがあるので、そっちを使えばいいのですが、qmail+VpopmailでバーチャルドメインとかやっててIMAPはいらないんだけど、Webmail(SquirrelMail)したいので、IMAPいれないといかんみたいな(笑)ためのメモ

前提条件
・qmail + vpopmail での環境ができている
・開発用環境はインストールされている

このあたりから、Courier authentication library(courier-authlib)と、Courier-IMAPをダウンロードしておく。
Courier IMAP

◆RPM開発環境の整備
Courier-IMAPがrootでコンパイルできないので、一般ユーザでコンパイルできるように設定

mkdir -p $HOME/rpm/{SOURCES,SPECS,BUILD,SRPMS,RPMS/i386}
echo "%_topdir   $HOME/rpm" >> $HOME/.rpmmacros

◆courier-authlibのコンパイルとインストール

yum install expect mysql-devel postgresql-devel
authlibのコンパイルの際に一時的にvpopmailのフォルダが見えない
と失敗するので、chmodしておく。
chmod 755 /home/vpopmamil
cd ~/rpm/SOURCES/
rpmbuild -ta courier-authlib-0.59.1.tar.bz2
cd ~/rpm/RPMS/i386/
su
rpm -ihv courier-authlib-0.59.1-1.i386.rpm courier-authlib-devel-0.59.1-1.i386.rpm
chmod 700/home/vpopmamil

◆courier-imapのコンパイルとインストール
iso-2022-jpを有効にしてコンパイルしないと、IMAPでひらいたときにそんなコード読めねーと怒られて開けないので注意

yum install fam-devel openldap-servers
cd ~/rpm/SOURCES/
rpmbuild -ta --define 'xflags "--enable-unicode=iso-2022-jp,iso-8859-1"'  courier-imap-4.1.2.tar.bz2
cd ~/rpm/RPMS/i386/
su
rpm -ihv courier-imap-4.1.2-1.i386.rpm

◆各種設定

/etc/authlib/authdaemonrc
authmodulelist="authvchkpw"
接続可能アドレスをlocalhostのみにして外部からは接続させない
/usr/lib/courier-imap/etc/imapd
ADDRESS=127.0.0.1
imapd-ssl は起動しないようにする
/usr/lib/courier-imap/etc/imapd-ssl
IMAPDSSLSTART=NO
pop3d は起動しないようにする
/usr/lib/courier-imap/etc/pop3d
POP3DSTART=NO
pop3d-ssl は起動しないようにする
/usr/lib/courier-imap/etc/pop3d-ssl
POP3DSSLSTART=NO
マシン起動時に起動するようにしておく
chkconfig courier-authlib on
chkconfig courier-imap on

参考にさせていただいたサイト
POP3/IMAPサーバ(Courier-IMAP)の構築(CentOS編)
メールサーバー構築(qmail+Courier-IMAP)

カテゴリー: Linux タグ:

mod_rewriteでhttpsへリダイレクト

mod_rewriteを使ってhttpで接続してきたアクセスをhttps(SSL)へリダイレクトする。.htaccessなどに以下のように記述。

‹ifmodule mod_rewrite.c›
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*?)$ https://%{HTTP_HOST}/hoge/$1 [L,R]
‹/ifmodule›

実は、このフォルダにBASIC認証もかけたかったのですが。
httpで接続→BASIC認証→httpsへリダイレクト となってしまい、SSLになる前にBASIC認証してしまうというマヌケなことになってしまいます。先にSSLにしてから、BASIC認証のダイヤログを出したいのだけど、なんかやりかたあるのかなー。

カテゴリー: Linux タグ:

クライアント証明書の失効とCRL(apache)

発行したクライアント証明書を失効させる

openssl ca -gencrl -revoke client.crt -out ssl.crl/cert.crl

「-out ssl.crl/cert.crl」はapacheでは、

SSLCARevocationFile   /hoge/ssl.crl/cert.crl

で指定したファイル、また、

SSLCARevocationPath   /hoge/ssl/ssl.crl

のFileとPathは同時に使用できないらしいことと、Pathの場合はCRLをハッシュする必要があります。(やりかたはどっかに書いてあったけど不明(^^;)

失効させるとindexファイルの1カラム目が「R」になります。有効なのは「V」です。(Revoke,Validかな)

/pathto/hogeCA/index.txt
R       350728073327Z   050804074628Z   01      unknown /C=JP/ST=hogehoge~~

このCRL(証明書失効リスト)ファイルについて注意点は、「-gencrl」した際に、
openssl.conf 内の「default_crl_days」の値か、opensslのオプションの「-crldays」の値で、次のCRLファイルの発行予定日がCRLファイル内にセットされます。この期限がくるまでに、CRLを更新しないと、クライアント証明書の機能が動かなくなってしまいます。ApacheのエラーログにCRL has expiredとかってなって、有効な証明書でもつながらなくなります。

[Thu Jan 11 16:12:12 2007] [warn] Found CRL is expired - revoking all certificates until you get updated CRL
[Thu Jan 11 16:12:12 2007] [error] Certificate Verification: Error (12): CRL has expired

破棄する証明書がなくても、次の更新日がきそうなら以下のようにしておけば更新日だけ更新されます。

openssl ca -gencrl  -out ssl.crl/cert.crl

中身の確認

openssl crl -in ./ssl.crl/cert.crl -text
Last Update: 最終更新日
Next Update: 次回更新日

もうひとつ、CRLファイルを更新しても、SSLCARevocationFile or Path はApacheを再起動しないと読み込まれないので、更新した際はApacheの再起動が必要になります。

<追記>
CentOS5の場合は、crlnumberを作成しておかないとダメかも

cd /var/www/ssl
echo '00' > hogeCA/crlnumber
カテゴリー: Linux タグ:

自己証明書

2006 年 11 月 27 日 コメントはありません

CentOSに限ったことではないですが、opensslで自己証明書をつくってapacheでオレオレ証明書をテストしてみる(CAは立てない)

CentOSであれば、

yum install httpd mod_ssl

あたりをインストールしておく。
また、CentOS(RHEL)系の場合は、

cd /etc/httpd/conf
make server.key
make server.crt

このあたりで、設定できそうですが、うまくいくかわからないので、下のコマンドラインでやります。(やってることは一緒です)

秘密鍵生成
openssl genrsa -des3 -out server.key 1024
パスフレーズ除去
openssl rsa -in server.key -out server.key
自己証明書を作成
openssl req -new -key server.key -x509 -out server.crt
Country Name (2 letter code) [AU]: 国
State or Province Name (full name) [Some-State]: 県
Locality Name (eg, city) []: 市町村名
Organization Name (eg, company) [Internet Widgits Pty Ltd]: 組織名
Organizational Unit Name (eg, section) []: 部署名
Common Name (eg, YOUR name) []:サーバ名(FQDN名)
Email Address []: メールアドレス
証明書の有効期限を30年とかで作っちゃう
openssl req -new -key server.key -x509 -days 10950 -out server.crt
ブラウザに証明書をインポートできるようにPEM形式→PKCS12形式へ変換
openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12
Enter Export Password:エクスポート用のパスワード
Verifying - Enter Export Password:パスワード確認

CentOSの場合は、上で作成した鍵を以下のところに配置すれば、/etc/httpd/conf.d/ssl.confに設定してあるファイルとなるので、なにも考えなくてもhttpsで接続可能となります。IPベースでバーチャルホストする場合は、ssl.confなどいろいろ書き換えてください。

/etc/httpd/conf/ssl.key/server.key
/etc/httpd/conf/ssl.crt/server.crt

クライアント側では、PKCS12形式のファイルをもってきて、IEの場合はダブルクリックして証明書のインポートウィザードがたちあがるので、上で入力したパスワードを入力してインポートします。(インターネットオプション→コンテンツのタブ→証明書のボタンでも可)、Firefox2の場合は、ツール→オプション→詳細タブ→証明書を表示→インポートでインポートできます、接続してから、警告のダイアログでインポートしちゃってもいいですが。

一応、お約束で、あくまでなんちゃって証明書なので、SSL通信はされますが、接続先が正しいかどうかなど本来のSSLの目的は満たされないことは理解しておきましょう。

カテゴリー: Linux タグ:

Postfixでスタティックルート(transport)

qmailでsmtproutesしてるのをPostfixに置き換えようと思ってメモ

qmailは/var/qmail/control/smtproutesに

.exsample.com:192.168.1.1
exsample.com:192.168.1.2
:192.168.1.2

とかってすればそれぞれルートをわけることができるわけですが、
Postfixの場合は、
/etc/postfix/main.cfに以下を追加

transport_maps = hash:/etc/postfix/transport

/etc/postfix/transportに

.exsample.com	smtp:[192.168.1.1]
exsample.com	smtp:[192.168.1.1]
*	smtp:[192.168.1.3]

と記述して、

postmap /etc/postfix/transport

とすると、/etc/postfix/transport.dbができます。dbなのでPostfixの再起動はいらないと思いますが、dbファイルを再生成する必要があるのでpostmapコマンドは忘れないようにしましょう。(main.cfにtransport_maps = を書いたときはservice postfix reloadしてね)

ちなみに、sendmailの場合は、mailertableですね。

実は、transportがtrasnportになってたの気づかず、半日ぐらい無駄にしましたorz

カテゴリー: Linux タグ:

CentOSでApache2.2(mod_proxy_ajp)

2006 年 10 月 29 日 コメントはありません

CentOS4で、apache2.2のmod_proxy_ajpを使ってTomcatとつないでみる。
しかし、CentOS4のapacheはhttpd-2.0.52なので、2.2系はソースからコンパイルする。がせっかくなのでソースRPMからRPMを作ってインストールしてみる

とりあえず、apache2がインストールされているならhttpd-*,apr-*あたりは消しておく。(aprも新しいバージョンが必要なので、rpmを作成してインストール)
開発環境も必要なので、なければ、yum groupinstall “Development Tools”でインストールしておく

apr
httpd
上記より、apr,apr-util,httpd-2.2のSRPMSをダウンロード(tar.gzでなくて、binaries/rpm/SRPMS/とかのフォルダにあるhttpd-2.2.3-1.src.rpmとかってやつです)

rpmbuild --rebuild apr-1.2.7-1.src.rpm
cd /usr/src/redhat/RPMS/i386
rpm -ihv apr-1.2.7-1.i386.rpm apr-devel-1.2.7-1.i386.rpm
rpmbuild --rebuild apr-util-1.2.7-1.src.rpm
cd /usr/src/redhat/RPMS/i386
rpm -ihv apr-util-1.2.7-1.i386.rpm apr-util-devel-1.2.7-1.i386.rpm
rpmbuild --rebuild httpd-2.2.3-1.src.rpm
cd /usr/src/redhat/RPMS/i386
rpm -ihv httpd-2.2.3-1.i386.rpm mod_ssl-2.2.3-1.i386.rpm
chkconfig --add httpd
chkconfig httpd on

/etc/httpd/conf/httpd.conf

最後の行ぐらいに追加
#Tomcat Connect Proxy
Include conf/extra/httpd-proxy.conf
他は必要に応じて修正

/etc/httpd/conf/extra/httpd-proxy.conf

‹Location /jsp-examples/›
ProxyPass ajp://TomcatのサーバIP:8009/jsp-examples/
‹/Location›

http://apache2.2のサーバ/jsp-examples/ とかでTomcatのページが見えればOK

余談、aprとかも作らないといけないので、tar.gzとかの普通のソースからコンパイルしてインストールしたほうが楽かもー、まぁ、ポリシーの問題なので、お好きなほうでどうぞ。

# ./configure --enable-proxy --enable-proxy-ajp
# make
# make install
カテゴリー: Linux タグ:

Samba3.0でActiveDirectoryへ参加

2006 年 10 月 29 日 コメント 1 件

Samba3.0でActiveDirectoryへ参加
開発用サーバをDebianからCentOSへ変更した。ついでにSambaでファイル共有しているのを「security=user」で設定していたのを「security=ADS」にしてみる。
まぁ、@ITの記事そのまんまなんですが、自分用にまとめときます。

DCのOS     :Windows Server 2003
DCのFQDN    :ad.home.sample.com
ADドメイン     :HOME.SAMPLE.COM
Sambaマシン :TESTSV(コンピュータ名)
Sambaマシンの/etc/resolv.confはADのDNSにしておく

/etc/krb5.conf

[realms]
HOME.EXSAMPLE.COM = {        ←ADドメイン名(大文字)
kdc = ad.home.exsample.com    ←DCのホスト名
}
[domain_realm]
.home.exsample.com = HOME.EXSAMPLE.COM
home.exsample.com = HOME.EXSAMPLE.COM

/etc/samba/smb.conf

workgroup = HOME
realm     = HOME.SAMPLE.COM
security  = ADS
unix charset = UTF-8      ←Windowsで共有するときは文字コードが違うので必要
dos charset = CP932       ←
display charset = UTF-8   ←CentOS4はUTF-8,EUCな人はEUCJP-MSとか。

ADへ参加

# kinit administrator@HOME.EXAMPLE.COM
Password for administrator@HOME.EXAMPLE.COM: administratorのパスワード
# net ads join
Using short domain name -- HOME
Joined 'TESTSV' to realm 'HOME.SAMPLE.COM'

administratorはドメインにコンピュータアカウントを作成できる権利があればそのユーザでも可
注意点としては、DCとSambaのサーバの時刻がいい感じにあっていないとエラーになるので、あらかじめ時間はあわせておきましょう。

あとは、Sambaサーバ上にADと同じユーザ(/etc/passwd)にあれば接続はできるはずです。

Samba 3.0の全貌 改訂版[後編](@IT)

カテゴリー: Linux タグ:

インストール後、GRUB起動失敗(edd=off)

2006 年 10 月 25 日 コメント 1 件

ちょっとあまってきた機種(FMV-6000SL)にCentOSをいれようとおもって、いつもどおりServerOSの1枚CDでインストール。。。。再起動したら起動しないorz、古いマシンなので、ハード的に悪いのか、HDD換えてみたりインストールしなおしたり、Windowsいれてみたり。。。。
あきらめかけたところで、Google様に聞いたところ、Fedoraで同じような症状発見、どうもi815系の一部のBIOS関係にバグ?のようなものがあって、Kernelパラメータにedd=offをいれて起動しないと、GRUBからKernelを呼び出したあと、ハングしてしまうらしい。。。
解決したのはよかったけど、半日ぐらい悩んだよ(__;

変更後サンプル(/etc/grub.conf)

title CentOS (2.6.9-42.0.3.EL)
root (hd0,0)
kernel /boot/vmlinuz-2.6.9-42.0.3.EL ro root=LABEL=/ edd=off  ←このへんにつけておく
initrd /boot/initrd-2.6.9-42.0.3.EL.img

該当しそうなのは以下の機種
FMV-7000TX, FMV-611GSL7e, FMV-6000SL, FMV-7000FL, FMV-6000CL, FMV-6000CLs, FMV-6000CX, FMV-6900ML8c
FMV-7000FL,FMV-7000CL2, FMV-6000CL2, FMV-6000CL2s, FMV-7000FL2, FMV-6000SL2, FMV-7000TX2, FMV-6000CX2

kernel 2.6.12-1.1381 アップデート後起動せず(Fedora JP BBS)

カテゴリー: Linux タグ:

centosplus

2006 年 10 月 16 日 コメントはありません

CentOS4ではPHP5ではなくphp-4.3.9なわけですが、centosplusのリポジトリを有効にすれば使えるようになります。centosplusはphp-5.0.4です。

/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=0           ←ここをenabled=1にすればOK
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

centosplusパッケージ一覧(rikenのサイト)

カテゴリー: Linux タグ:

仕事で使えるRed Hat Enterprise Linux 徹底入門

RHEL関連の本を見つけたので、ご紹介。
[ThinkIT] 仕事で使えるRed Hat Enterprise Linux徹底入門(ThinkIT)


仕事で使えるRed Hat Enterprise Linux 徹底入門
仕事で使えるRed Hat Enterprise Linux 徹底入門

古賀 政純, 入谷 光浩, 可知 豊, 上鍵 忠志
シンクイット / \ 1,890

カテゴリー: Linux タグ:

PostgreSQLで日本語で並び替え

PostgreSQLでフリガナなどの日本語でorder byしたときになんか変な並びになる際の対応、原因としては、initdbした際に–no-localeが付いていないとうまく並びかわらないらしい。


1.テーブルをバックアップ(必要な分すべて)
pg_dump TABLE名 > backup.dmp
2.PostgreSQL停止
/etc/init.d/postgresql stop
3.データベースのフォルダ退避
mv $PGDATA/data $PGDATA/data.old
4.データベース再作成
initdb --no-locale
5.パラメータファイル修正
postgresql.conf
pg_hba.conf
6.PostgreSQL開始
/etc/init.d/postgresql start
7.ユーザの作成(必要な分すべて)
createuser hoge
8.DBの作成(必要な分すべて)
createdb (-E EUC_JP,UNICODE) hoge
9.テーブルのリストア(必要な分すべて)
psql TABLE名 
カテゴリー: Linux タグ:

Postfix キュー削除

Docomo宛てにエラーメールを3,000通以上出した馬鹿者のせいでDocomo宛のメールが遅延してしまっているので調査
個別にキューの削除
mailq で表示される「Queue ID」を調べる


postsuper -d QueueID

全部消しちゃう!


postsuper -d ALL

<参考>
Postfix キューからメッセージを削除したい(Postfix Frequently Asked Questions)

カテゴリー: Linux タグ: