アーカイブ

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

vsftpd の ユーザ毎の個別設定

vsftpdでユーザ毎に個別で設定を変えたい場合の設定「user_config_dir」を使う。
基本は、vsftpd.confですが、一部設定を変更したい場合はその項目だけユーザのファイルに記入する。また、なんでもかんでも上書きできるわけではないと思うので、FTPサーバ自身にかかわる部分は当然設定の上書きできません。(ポート番号とか)

 
 
/etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/user_config

/etc/vsftpd/user_config のフォルダは作っておく。

たとえば、hogeユーザのみファイルのマスクをデフォルト「022」のところ「002」にしたい場合とか
/etc/vsftpd/user_config/hoge

local_umask=002
カテゴリー: Linux タグ:

CentOS6 MinimalCD

最少パッケージのみの1CD版がリリースされたようなのでメモ
従来のnetinstallと違ってネットワークは無しでもとりあえずインストールできるので、とりあえずいれておいて、後で必要なパッケージをネットから取ってくるって感じですね。

個人的にはレスキューモードも使えるようなのでこれ1枚あれば事足りるかと思ったり。

http://wiki.centos.org/Manuals/ReleaseNotes/CentOSMinimalCD6.0

カテゴリー: Linux タグ:

CentOS 6 リリース

やっとというか出ました(^^;
中の人に感謝しつつダウンロードしてみます。

とりあえず、VMWareにいれてみましたが、最少構成でいれるとかなりシンプルなので、perlすら入ってませんでした(^^;
vmware-tools入れるのにとりえあず「perl gcc kernel-devel」だけいれてインストールしてみた。
起動は早くなったかも。サーバで起動が速くてもあまり意味ないですが(^^;

 
んで
・mkinitrd が dracut になった
・/etc/modprobe.confはないので、udevを理解する必要あり
・initがUpstartになったので起動シーケンスが別物になっている
 
ということで、サーバ管理者としては、大幅に仕組み変わったところもあり、緊急時とか仮想サーバへもっていったりファイルを直接編集してごにょごにょするなどの時に今までと同じようにはできないと思われるので、再勉強が必要ですorz
 
http://wiki.centos.org/Manuals/ReleaseNotes/CentOS6.0/Japanese(CentOS 6.0 Release Notes)

 
 
 
RHEL6互換ということで、Scientific Linuxもあるので一応メモ
http://centos.org/(CentOS)
http://www.scientificlinux.org/(Scientific Linux)

カテゴリー: Linux タグ:

LinuxへRDP接続 (xrdp)

WindowsからLinuxへrdpでつながったらいいよねっと調査

xrdp(sourceforge)というのがあるのでこれを使うらしい。

クライアントがWindows7の場合は、0.5以上じゃないとつながらないらしい。rpmforgeは、0.4みたいです。EPELリポジトリのは0.5なのでつながるのですが、キーマップがダメな模様なので、先人の方に感謝しつつ以下より対応済みのものを使用させていただきました。

xrdp 0.5.0-5 rpm(Sceneries through the lenses)

#意外と早い、VNCでもいいのですが、rdpならインストールしなくていいよね?ってことで。

カテゴリー: Linux タグ:

Linuxで Wake on LAN (起動局)

LinuxからWindowsのマシンを起動したくなったので調査

wakeonlanというのがあるのでRPMパッケージをインストール

wget http://gsd.di.uminho.pt/jpo/software/wakeonlan/downloads/wakeonlan-0.41-0.fdr.1.noarch.rpm
rpm -ihv wakeonlan-0.41-0.fdr.1.noarch.rpm

WindowsマシンでBIOSなどでWake on LANの準備をして、以下のコマンドでMagic Packetを送信します。

wakeonlan -i 192.168.1.255 00:00:00:00:00:00

Magic Packetはセグメントを超えれないのですが、directed-broadcastが許可されているルータ・スイッチを経由すればセグメントも超えることができるようです。(未確認)

カテゴリー: Linux タグ:

sambaでシンボリックリンクの先へつながらない

CentOS5.6アップデートネタですが、samba3xパッケージ使っていると5.5→5.6で

samba3x-3.3.8
  ↓
samba3x-3.5.4

のようにバージョンアップします。
そこで、samba共有しているフォルダにシンボリックリンクがあるとその先に繋がらなくなります。
で、以下の2つをglobalセクションに記入する必要があります。

/etc/samba/smb.conf

unix extensions = no
wide links = yes

ググってみると、シンボリック関係の仕様変更が、3.4.6であったらしい。(セキュリティの関係なので上記対応はあまり望ましくないとは思われます)
Samba 3.4.6 Available for Download(samba.org)
Claimed Zero Day exploit in Samba

 
 
何故気が付いたかと言うと、検証用サーバで、自分のホーム以下にApacheのDocumentRoot「/var/www/html/」をシンボリックしてたからだ(笑)

カテゴリー: Linux タグ:

CentOS 5.6 リリース

5.6がリリースされました。

基本的にはアップデートですが、大きいところで「php53」と「bind97」が増えました。
bindは9.3.6→9.7.0 ですが、何がちがうんだっけな、そろそろDNSSECとかやらんといかんのだけど。
phpは5.1.6→5.3.3 ですが、こちらは結構大きいです、PHP5.1だと動かせないアプリケーションがちょこちょこ出てきているのでありがたいですね。

CentOS 5.6 リリースノート

 
 
RHEL5.6のリリースノートチェックしていなかったので、PHPとかアップグレードされるってことをCentOS5.6が出た今までしらなかったは内緒だ(笑)

カテゴリー: Linux タグ:

PostgreSQL8.4でcreatedb

CentOS5.5から「postgresql84」のパッケージで「8.4.5」が使えるようになっていますが、DBのエンコードを指定してDBを作成するときのメモ
標準のエンコード(たぶん、UTF8)以外ではtemplate0をを指定して作成しないとうまくいきません。

createdb  -E UTF8 -T template0 DB名
createdb  -E EUC_JP -T template0 DB名

 

<追記>
自分用メモ(LC_COLLATE=’C’ LC_CTYPE=’C’が必要)

CREATE USER "Username"  PASSWORD 'passwd' NOCREATEDB NOCREATEUSER;
CREATE DATABASE "DBName" WITH OWNER = "Username" TEMPLATE = template0 ENCODING = 'EUC_JP' LC_COLLATE='C' LC_CTYPE='C';

</追記>

カテゴリー: Linux タグ:

qmailの512バイトの件

前から何回か気が付いていたのですが、見て見ぬふりをしていたのですが(笑)、DNSSECやその他いろいろによりDNSの応答が512バイト超えてqmailから送信できないケースが頻発しそうです。

http://www.ckdhr.com/ckd/qmail-103.patchのパッチを当てれば解決といえば解決なのですが、運用中なやつはどうしようかなぁぁぁぁあぁ(T_T)

と思いつつメモだけしておきます。

qmail/netqmailにおける512バイトを超えるDNS応答の不適切な取り扱いについて(JPRS)

カテゴリー: Linux タグ:

qmailログメモ(matchup)

qmailのログを加工するのに、qmailanalogについてるmatchupつかって
1メール1行にしてみる。
ログのレイアウトが不明だったので、適当に検索
忘れないようにメモ。

Devilery Record (Description)
    id - always d
    birth - Timestamp when message started
    start - Timestamp when delivery started
    end - Timestamp when deilvery finished
    bytes - Size of the message sent (message size, not affected by qmail-remote)
    sender - Sender of message
    channel.recipient - Delivery Channel (local, remote) + “.” + adddress
    qp - messge queue process id (Qmail’s internal id)
    uid - The unix UID (user id number) of the sender (or SMTP UID)
    reason - response message from delivery (reason)

Message Record (Description)
    id - always m
    birth - Timestamp when message arrived
    done - Timestamp when message processeing finished
    bytes - Number of bytes in message
    numk - Number of successful deliveries
    numd - Number of failed deliveries
    numz - Number of deferred deliveries
    sender - Sender of message
    qp - messge queue process id (Qmail’s internal id)
    uid - The unix UID (user id number) of the sender (or SMTP UID)

Qmail Analog(cyberdesk.com)

カテゴリー: Linux タグ:

gzip Recovery Toolkit

2010 年 11 月 28 日 コメントはありません

毎日数千のファイルをtar.gzで固めてデイリーで保管しているのですが、解凍できないと言われたのでメモ。
Cronで処理して固めたときのログはエラーはでてないんだけど、たしかにこの日の分だけ解凍できない。

エラー内容

gzip: stdin: invalid compressed data--format violated
tar: アーカイブ中に予期せぬ EOF があります
tar: エラーを回復できません: 直ちに終了します
gzip: stdin: invalid compressed data--format violated
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now

どうもGZIPが壊れてるみたい・・・・

 
 
たしか、できるところまでリカバリするやつあったなと思いさがしてみる。
ということで、「gzip Recovery Toolkit」というのがあるのでつかってみる。

まず、インストール

yum install gzrt

壊れたGZIPファイルを修復

gzrecover aaa.tar.gz

そうすると、「aaa.tar.recovered」のようなGZIPをできるだけ解凍したファイルができます。

tar.gzの場合は、さらにtarをほどく必要があるので、cpioを使います。(paxでも可らしい)

cpio -ivdm < aaa.tar.recovered

今回は、必要なファイルが全部もどらなかったのですが、運がよければだいたい戻るかも。
ってか、そもそもの原因が不明てとても気になる。ファイルシステムのバグ?、gzipのバグ?

<参考>
UNIXの部屋 コマンド検索: gzrecover

カテゴリー: Linux タグ:

LinuxでVLAN(802.1Q)

2010 年 11 月 21 日 コメントはありません

LinuxでタグVLAN(802.1Q)したくなったのでメモ
vconfigのコマンドでインターフェースを作成したりできますが起動時にUPしないと意味がないので、そのへんの設定をメモ

◆/etc/sysconfig/network

VLAN=yes
VLAN_NAME_TYPE=DEV_PLUS_VID_NO_PAD

「VLAN_NAME_TYPE」は指定しなければCentOS5の場合は「DEV_PLUS_VID_NO_PAD」になるようなのであってもなくてもいいかも。

参考まで「VLAN_NAME_TYPE」

1.VLAN_PLUS_VID        → vlan005
2.VLAN_PLUS_VID_NO_PAD → vlan5
3.DEV_PLUS_VID         → eth0.0005
4.DEV_PLUS_VID_NO_PAD  → eth0.5

1,2の場合は、物理インターフェースがわからないので、各VLANインターフェイスに以下のパラメータも必要

PHYSDEV=eth0

 
 
んで、
◆/etc/sysconfig/network-scrpit/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
HWADDR=00:00:00:00:00:00

親になるeth0はIPADDRなどの設定を削除する。(インターフェースがあることだけ定義しておく)

◆/etc/sysconfig/network-scrpit/ifcfg-eth0.100

DEVICE=eth0.100
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.1
NETMASK=255.255.255.0

各VLANインターフェース、DEVICE名だけ気を付けて、あとは普通にIPADDRなどを定義する。

あとは、再起動するなり、service networkでアップするの確認。

カテゴリー: Linux タグ:

OOM Killer (Out of Memory Killer)

2010 年 11 月 12 日 コメントはありません

LinuxのKernelのメモリが足りなくなったときにプロセスを強制で落とす、ちょっと嫌なやつ、あまりお目にかかったことがなかったが、最近見かけるようになってきた、しまいには、OracleとかJavaが落ちるし、対処する方法はググるといろいろあるのだけど、どのプロセスが悪いかが分からないのだけど、なんか調べる方法ないかなぁ。

OOM-Killer停止

echo 0 > /proc/sys/vm/oom-kill

指定のプロセスをKillされないようにする(2.6.11以降)

# echo -17 > /proc/〈プロセスID〉/oom_adj

対策
原因となるメモリオーバーコミットを許可しない

sysctl -w vm.overcommit_memory=2
sysctl -w vm.overcommit_ratio=50

起動時に自動設定するには
/etc/sysctl.conf

vm.overcommit_memory = 2
vm.overcommit_ratio = 50
malloc_limit[MB] 
   = swap領域のサイズ[MB] + (物理メモリ量[MB] * overcommit_ratio / 100)

vm.overcommit_ratio はデフォルト50なので、物理とスワップがたとえば1G+1Gだったら50%のほうがいいのかな?、いろんなサイトは100%近くになっているけど、スワップ無しなら100%確保させてもいいような気がしますが、スワップあると、100%近くになるとスワップしちゃうよね?、物理メモリとスワップとの割合で設定したほうがいいと思われます。

<参考>
http://d.hatena.ne.jp/yupo5656/20040624/p1

カテゴリー: Linux タグ:

PHP5のfgetcsvで文字化け

2010 年 10 月 19 日 コメントはありません

PHP4で作ってあったCSVをDBに入れるプログラムをPHP5で動かそうとしたら文字化けしてありゃりゃと調査
CSVをUTF-8にしたりすればたぶん大丈夫なのですが、SJISだと文字化けするのだと思われる。

setlocale(LC_ALL, 'ja_JP');

を宣言すれば、多少改善するみたいなのですが、イマイチのようなので、調べていると。
yossy様がすばらしいコードを、正直、中身はよくわかりませんが(動いたので読みとる元気無しorz)解決です。感謝感謝。

PHP5でfgetcsvが正常に動作しない(::yossy.blog::)

    /**
     * ファイルポインタから行を取得し、CSVフィールドを処理する
     * @param resource handle
     * @param int length
     * @param string delimiter
     * @param string enclosure
     * @return ファイルの終端に達した場合を含み、エラー時にFALSEを返します。
     */
    function fgetcsv_reg (&$handle, $length = null, $d = ',', $e = '"') {
        $d = preg_quote($d);
        $e = preg_quote($e);
        $_line = "";
        while ($eof != true) {
            $_line .= (empty($length) ? fgets($handle) : fgets($handle, $length));
            $itemcnt = preg_match_all('/'.$e.'/', $_line, $dummy);
            if ($itemcnt % 2 == 0) $eof = true;
        }
        $_csv_line = preg_replace('/(?:\\r\\n|[\\r\\n])?$/', $d, trim($_line));
        $_csv_pattern = '/('.$e.'[^'.$e.']*(?:'.$e.$e.'[^'.$e.']*)*'.$e.'|[^'.$d.']*)'.$d.'/';
        preg_match_all($_csv_pattern, $_csv_line, $_csv_matches);
        $_csv_data = $_csv_matches[1];
        for($_csv_i=0;$_csv_i<count($_csv_data);$_csv_i++){
            $_csv_data[$_csv_i]=preg_replace('/^'.$e.'(.*)'.$e.'$/s','$1',$_csv_data[$_csv_i]);
            $_csv_data[$_csv_i]=str_replace($e.$e, $e, $_csv_data[$_csv_i]);
        }
        return empty($_line) ? false : $_csv_data;
    }
カテゴリー: Linux タグ:

SSLの名前ベースのバーチャルホスト

たまたま、探しものしてて見つけたので、いつかのためにメモ

SSL通信の場合は、IPアドレス1個で、ネームベースのバーチャルホストは基本的には使えんわけですが。
目ん玉おやじのグローバルサインのワイルドカードオプションとかであれば、Apacheの起動時にワーニングも出ますが一応できそうかな。あとは、昔Delegate使ってむりやりやったことあったな。

んで、SNI(Server Name Indication)ってのがあって、これを使うとIP1個で、ネームベースのバーチャルホストができそうです、携帯はまだダメな機種が多そうですが、PC向けは結構イケそうです。
ですが、Apacheが「2.2.12」以降対応なので、CentOS5の素のApacheだと未対応です、がっかし。

カテゴリー: Linux タグ:

mod_rpaf

リバースプロキシ先のアクセスログが全部リバースプロキシのIPになるのでどうにかならんけと言われて、どうにかなるだろうと調べたのでメモ。
ApacheなりPoundなりでリバースプロキシした時、バックエンド側で、実IPを参照して、ログ解析とかIP制限とかできるように。

mod_rpafというのがあるのでこれを使用。
ちなみにリバースプロキシでなく、バックエンドのWebサーバ(Apache)にインストールします。仕組みとしては、設定したプロキシサーバからのアクセスの場合は、X-Forwarded-For をリモートIPに上書きしてくれるモジュールです。

httpd-develは必要なのでインストール

yum install httpd-devel

ダウンロードして解凍

wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar xvzf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6

Makefileにapxsのパスをいれる

vi Makefile
>APXS2=/usr/sbin/apxs (編集)

コンパイルとインストール

make rpaf-2.0
make install-2.0

設定ファイル作成

/etc/httpd/conf.d/mod_rpaf.conf (新規作成)

LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips <プロキシサーバのIPアドレス>
カテゴリー: Linux タグ:

PostfixでSMTP Authクライアント

家サーバで、ダイナミックのIPだと、最近はOP25Bでメール送信ができなくなるので、PostfixでSMTP Authして上位(ISP)サーバへ送信する設定をしてみる。

/etc/postfix/main.cf

relayhost = [smtp.example.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/relay_password
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain, login  ← 必要に応じて

/etc/postfix/relay_passwordを作成

smtp.example.com:587  Username:Password

relay_password.dbを作成

cd /etc/postfix/
postmap relay_password 

<参考>
Postfix でメールリレーの設定 (SMTP クライアント + SMTP Auth)(maruko2 Note.)

カテゴリー: Linux タグ:

Atom330 で CentOS (ギ蟹)

Atom330のX27Dが安くなってきたので、サーバにでもしようかと買ってみた。

Shuttle ベアーボーンケース ブラック X27D

メーカー:Shuttle INC.
参考価格:¥ 17,780

で、買う前からある程度は調べてあったのですが、CentOSでギ蟹「Realtek 8111C」は問題があるらしく、自動で「r8169」がロードされてしまうがこれじゃちゃんと繋がらないらしい、おまけに「8111C」のモジュールは入ってない様子。で、先人の方々はというと、RealTekのサイトのSoftware: Drivers & Utilitiesあたりからドライバをダウンロードしてインストールする例が多いみたい。
でも、これって、カーネルアップデートしたらダメじゃんってことで、他に策はないかと調べてたら、
Realtek RTL8111B / RTL8168B NIC
ってのがありました。

DKMS (Dynamic Kernel Module Support) って仕組みがあるらしく、これに乗っかればカーネルがアップデートされても起動時に新しく組み込んでくれるものらしい。

作業としては、以下のパッケージをインストールしてあればOKです。設定もないので楽チンです。

Base
  binutils gcc glibc-devel glibc-headers kernel-headers kernel-devel make
RPMForge
  dkms dkms-r8168

DVDよりインストール
rpm -ihv gcc-4.1.2-48.el5.i386.rpm  glibc-devel-2.5-49.i386.rpm glibc-headers-2.5-49.i386.rpm kernel-headers-2.6.18-194.el5.i386.rpm kernel-devel-2.6.18-194.el5.i686.rpm cpp-4.1.2-48.el5.i386.rpm  libgomp-4.4.0-6.el5.i386.rpm

他のマシンでRPMForgeからファイルをとってきてCDなりUSBなどで持ってきてインストールします。(LANがつながらないので)
yum install yum-utils
yumdownloader dkms-r8168
yumdownloader dkms.noarch
rpm -ihv dkms-r8168 dkms.noarch

 
 
ちなみに、X27DでOpenVZ(CentOS5)+CentOS5のゲストを作成する予定

カテゴリー: Linux タグ:

CentOS 5.5 リリース

リリースされました。とりあえす、リリースノートも読まずに「yum update」だー(^^)/

Linux xxxx 2.6.18-194.3.1.el5 #1 SMP Thu May 13 13:09:10 EDT 2010 i686 i686 i386 GNU/Linux

ということで、このサーバは生還しました(笑)

[CentOS-announce] Release for CentOS-5.5 i386 and x86_64
リリースノート

x86_64 ってDVD、2枚なん?、と思ってRHELのほうみたらこっちは1枚ですね。CD8枚はもう焼く気はないけど、DVD1枚なら焼いてもいいかと思うけど2枚あるとヤだなぁ、まぁ、最近はnetinstallか、VMならISOマウントだし、たぶん焼かないだろうけど。(それ以前にi386しか使ってないね(笑))

RHEL5.5でも同じなんでしょうが(確認してなかった)、sambaとPostgreSQLとかは別パッケージで新しいバージョンが使えるようになってる様子(samba3xとpostgresql84)

Name       : samba3x
Arch       : i386
Version    : 3.3.8
Release    : 0.51.el5
Size       : 4.2 M
Repo       : base
Summary    : Server and Client software to interoperate with Windows machines
URL        : http://www.samba.org/
License    : GPLv3+ and LGPLv3+
Name       : samba
Arch       : i386
Version    : 3.0.33
Release    : 3.28.el5
Size       : 16 M
Repo       : base
Summary    : Samba SMB サーバー
URL        : http://www.samba.org/
License    : GNU GPL Version 2
Name       : postgresql84
Arch       : i386
Version    : 8.4.2
Release    : 5.el5
Size       : 3.3 M
Repo       : base
Summary    : PostgreSQL client programs
URL        : http://www.postgresql.org/
License    : MIT
Name       : postgresql
Arch       : i386
Version    : 8.1.18
Release    : 2.el5_4.1
Size       : 11 M
Repo       : installed
Summary    : PostgreSQL のクライアントプログラムとライブラリ
URL        : http://www.postgresql.org/
License    : BSD
カテゴリー: Linux タグ:

PRIMERGY RX300,RX200 にCentOSインストール(ちょっとハマり)

RX300,RX200(無印)、もう5年前ぐらいの機種ですが余ってきたので、CentOSをインストールしてみようとしてちょっとハマったのでメモ

素性としては、CPUはXeon 2.4GHz で、64ビットでもなく、当然VTも使用できず、おまけにRAIDがI2O(Adaptec-2010S)なので、VMware(ESXi)も使えず、普通にWindowsかLinuxで使うくらいかなと、Windows2003(無印)の機械なのでWindowsで使ってもいいのですがあまり使い道もないので、Linuxにしてみる。

◆RX200
CentOS5のインストーラーのバグなのかI2O(i2o_block)のRAIDのドライバがインストーラーで検出できなくインストール時のディスクが見えないので、

Boot: linux noprobe

で、デバイスの検出しないで起動して、

i2o_block
e1000

を読み込ませてインストール

あとは、普通にインストール、「readahead_early」が悪さをするという人もいるようなので必要であれば停止

◆RX300
こっちがかなり曲者で、linux noprobeすると、画面が固まって(キーボードがきかない?)しまい進まず、noprobeでないと進むが、当然I2Oのドライバがないのでインストールできず・・・・ということで、いい加減面倒になったので、RX300をKnoppixで起動して、RX200でインストールしたサーバのdumpを無理やりrestoreして、initrdのあたりの修正とgrubをインストールして起動して解決、わっはっは!
、もう最初からインストールすることはないだろう(笑)

#RX300のオンボードLANはBroadcomなのでtg3です。

カテゴリー: Linux タグ: