<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>片っ端からメモってみる</title>
	<atom:link href="http://www.parlia.net/weblog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.parlia.net/weblog</link>
	<description>Linuxサーバ構築やその他もろもろの備忘録</description>
	<lastBuildDate>Mon, 20 Jul 2009 03:54:19 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>syslog-ngを使う</title>
		<link>http://www.parlia.net/weblog/post/723.html/</link>
		<comments>http://www.parlia.net/weblog/post/723.html/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 03:13:27 +0000</pubDate>
		<dc:creator>alte</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.parlia.net/weblog/?p=723</guid>
		<description><![CDATA[syslogよりも細かいログの制御ができるsyslog-ngを使ってみる。

インストール
aptでインストールする。
# apt-get install syslog-ng
設定はsyslog.confから引き継いでい [...]]]></description>
			<content:encoded><![CDATA[<p>syslogよりも細かいログの制御ができるsyslog-ngを使ってみる。<br />
<span id="more-723"></span></p>
<h2>インストール</h2>
<p>aptでインストールする。</p>
<pre># apt-get install syslog-ng</pre>
<p>設定はsyslog.confから引き継いでいるようなので修正はなし。</p>
<h2>リモートログを受信</h2>
<p>ルータなどのログをホスト毎に分ける。<br />
/var/log/remote/(IPアドレス).logに保存するように設定する。</p>
<pre># vi /etc/syslog-ng/syslog-ng.conf

# remote log
source s_remote { udp(ip("0.0.0.0") port(514)); };
destination d_remote { file("/var/log/remote/$HOST.log" perm(0640)); };
filter f_remote { level(info..emerg); };
log { source(s_remote); filter(f_remote); destination(d_remote); };</pre>
<p>設定ファイルの確認。エラーがあれば出力される。</p>
<pre># syslog-ng -s</pre>
<p>再起動して設定を反映させる。</p>
<pre># /etc/init.d/syslog-ng restart</pre>
<p>リモートログのlogrotate設定</p>
<pre># vi /etc/logrotate.d/syslog-ng

/var/log/remote/*.log {
   rotate 4
   missingok
   notifempty
   weekly
}</pre>
<h2>総当たり攻撃(Brute force attack)対策</h2>
<p>FTPやPOP3サーバに指定回数ログインに失敗するとiptablesでアクセスを拒否するようにする。</p>
<p>iptablesの設定スクリプトにチェーンを追加するように修正。</p>
<pre># チェーンの初期化
iptables -F

# ポリシーの設定 (デフォルトで拒否)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

<span style="color: #00ffff"># 新規チェーンの作成
iptables -N ATTACKCHEAK
iptables -N ATTACKDROP
# ATTACKDROPチェーンはログをとってDROP
iptables -A ATTACKDROP -j LOG --log-prefix 'iptables attack-drop: '
iptables -A ATTACKDROP -j DROP</span>

# LoopBack
iptables -A INPUT -i lo -j ACCEPT

# セッション確立後のパケット疎通は許可
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

<span style="color: #00ffff"># ATTACKCHEAKチェーンで評価
iptables -A INPUT -p tcp -m multiport --dports 21,110,995 -j ATTACKCHEAK</span>

# 公開ポート
iptables -A INPUT -p tcp -m state --state NEW --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --dport 443 -j ACCEPT

(以下公開ポートの設定)</pre>
<p>スクリプトの修正内容。</p>
<ul>
<li>ATTACKCHEAK、ATTACKDROPチェーンを作成。</li>
<li>ATTACKDROPチェーンではすべてDROPする。</li>
<li>公開ポートの前にATTACKCHEAKチェーンで評価する。</li>
</ul>
<p>アクセスを制限するIPを追加するとき</p>
<pre># iptables -A ATTACKCHEAK -p tcp --dport (ポート) -s (IPアドレス) -j ATTACKDROP</pre>
<p>解除するとき</p>
<pre># iptables -D ATTACKCHEAK -p tcp --dport (ポート) -s (IPアドレス) -j ATTACKDROP</pre>
<p>ログインに失敗したときに実行するスクリプトの作成。</p>
<pre># vi /usr/local/syslog-ng/filter_brute_force.pl

#!/usr/bin/perl

$subject = 'syslog-ng';
$mailto = 'root@parlia.net';
$mailfrom = 'root@parlia.net';
$sendmail = '/usr/sbin/sendmail';
$iptables = '/sbin/iptables';
$logfile = '/usr/local/syslog-ng/log.txt';

use Jcode;

while (&lt;STDIN&gt;) {
  if (/ proftpd\[\d*\]:.*\[(\d+\.\d+\.\d+\.\d+)\]/) {
    $port = '21';
    $ip = $1;
  } elsif (/ pop3d:.* ip=\[.*:(\d+\.\d+\.\d+\.\d+)\]/) {
    $port = '110';
    $ip = $1;
  } elsif (/ pop3d-ssl:.* ip=\[.*:(\d+\.\d+\.\d+\.\d+)\]/) {
    $port = '995';
    $ip = $1;
  } else {
    exit;
  }

  if ($ip =~ /^192\.168\./) { exit; }

  $count = 0;
  open(LOG, "+&lt;$logfile");
  while ($line = &lt;LOG&gt;) {
    if ($line =~ /IP=([\d\.]+) PORT=(\d+)/) {
      if ($ip eq $1 &amp;&amp; $port eq $2) {
        $count++;
      }
    }
  }
  print LOG &amp;get_time()." IP=$ip PORT=$port\n";
  close(LOG);

  $ret = `$iptables -n -L ATTACKCHEAK | grep -F '$ip' | grep -F 'dpt:$port'`;
  if ($count &gt;= 2 &amp;&amp; !$ret) {
    system("$iptables -A ATTACKCHEAK -p tcp --dport $port -s $ip -j ATTACKDROP");

    $message = "ATTACKCHEAKチェーンに追加\n";
    $message .= "ポート: $port\n";
    $message .= "IP: $ip\n";
    $message .= "\n$_";

    Jcode::convert(\$subject,jis);
    Jcode::convert(\$message,jis);

    open(MAIL,"| $sendmail -t");
    print MAIL "To: $mailto\n";
    print MAIL "From: $mailfrom\n";
    print MAIL "Subject: $subject\n";
    print MAIL "MIME-Version: 1.0\n";
    print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
    print MAIL "Content-Transfer-Encoding: 7bit\n";
    print MAIL "$message\n";
    close(MAIL);
  }
}

sub get_time {
  @time = localtime(time());
  return sprintf("%04d-%02d-%02d %02d:%02d:%02d", $time[5]+=1900, $time[4]+=1, $time[3], $time[2], $time[1], $time[0]);
}</pre>
<p>ログインに失敗したら/usr/local/syslog-ng/filter_brute_force.plを実行するように、/etc/syslog-ng/syslog-ng.confに設定を追加する。</p>
<pre># vi /etc/syslog-ng/syslog-ng.conf

# Brute force attack
destination d_attack { program("/usr/local/syslog-ng/filter_brute_force.pl"); };
filter f_ftp_attack { program("proftpd") and (match("Login failed") or match("no such user found")); };
filter f_pop3_attack { (program("pop3d") or program("pop3d-ssl")) and match("LOGIN FAILED"); };
log { source(s_all); filter(f_ftp_attack); destination(d_attack); };
log { source(s_all); filter(f_pop3_attack); destination(d_attack); };</pre>
<h2>参考サイト</h2>
<p><a href="http://www.aconus.com/~oyaji/security/syslog-ng.htm">syslog-ngの導入</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.parlia.net/weblog/post/723.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>suEXECのドキュメントルートを変更する</title>
		<link>http://www.parlia.net/weblog/post/729.html/</link>
		<comments>http://www.parlia.net/weblog/post/729.html/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 02:23:21 +0000</pubDate>
		<dc:creator>alte</dc:creator>
				<category><![CDATA[Apache]]></category>

		<guid isPermaLink="false">http://www.parlia.net/weblog/?p=729</guid>
		<description><![CDATA[Ubuntu8.04のApacheは、/var/www 以下でないとsuEXECが動かない。

# /usr/lib/apache2/suexec -V
 -D AP_DOC_ROOT="/var/www"
 -D AP [...]]]></description>
			<content:encoded><![CDATA[<p>Ubuntu8.04のApacheは、/var/www 以下でないとsuEXECが動かない。</p>
<pre>
# /usr/lib/apache2/suexec -V
 -D AP_DOC_ROOT="/var/www"
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER="www-data"
 -D AP_LOG_EXEC="/var/log/apache2/suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=100
 -D AP_USERDIR_SUFFIX="public_html"
</pre>
<p><span id="more-729"></span><br />
apache2-suexec-customパッケージがあれば、ドキュメントルートを簡単に変更できるが、Ubuntu8.04にはないので以下の方法を試す。</p>
<ul>
<li><a href="#hd1">apache2.2-commonのビルド</a></li>
<li><a href="#hd2">「--bind」オプションをつけてmount</a></li>
<li><a href="#hd3">バイナリエディタでsuexecを修正</a></li>
</ul>
<h2 id="hd1">apache2.2-commonのビルド</h2>
<p>suexecはapache2.2-commonパッケージに含まれている。</p>
<pre>
# dpkg -S /usr/lib/apache2/suexec
apache2.2-common: /usr/lib/apache2/suexec
</pre>
<p>ビルドの準備。</p>
<pre>
$ sudo apt-get build-dep apache2.2-common
$ apt-get source apache2.2-common
$ cd apache2-2.2.8/
</pre>
<p>fakerootがないと、ビルドでエラーが出るのでインストールする。</p>
<pre>$ sudo apt-get install fakeroot</pre>
<p>suexec-docrootを変更する。ここでは/homeとした。</p>
<pre>
$ vi debian/rules

              --with-suexec-docroot=<span style="color: #00ffff">/home</span> \
</pre>
<p>ビルドする。</p>
<pre>$ dpkg-buildpackage</pre>
<p>できたパッケージをインストールする。今回はファイルだけコピーすることにする。</p>
<pre>$ sudo cp debian/apache2.2-common/usr/lib/apache2/suexec /usr/lib/apache2/</pre>
<p>確認</p>
<pre>
# /usr/lib/apache2/suexec -V
 -D AP_DOC_ROOT="/home"
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER="www-data"
 -D AP_LOG_EXEC="/var/log/apache2/suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=100
 -D AP_USERDIR_SUFFIX="public_html"
</pre>
<p>バージョンアップ時に更新されないようにaptでholdする。</p>
<pre># echo apache2.2-common hold | dpkg --set-selections</pre>
<h2 id="hd2">「--bind」オプションをつけてmount</h2>
<p>「--bind 」オプションをつけて/homeを/var/www/homeにマウントする。</p>
<pre>
# mkdir /var/www/home
# mount --bind /home /var/www/home
</pre>
<p>apacheのDocumentRootを変更する。</p>
<pre>
# vi /etc/apache2/sites-available/default

&lt;Directory /var/www/home/user/public_html&gt;

    DocumentRoot /var/www/home/user/public_html
</pre>
<p>再起動時にmountされるようにfstabに記入する。</p>
<pre>
# vi /etc/fstab

/home /var/www/home         none    bind            0       0
</pre>
<h2 id="hd3">バイナリエディタでsuexecを修正</h2>
<p>バイナリエディタでsuexecのバイナリの値を変更する。</p>
<p>suexecをコピーする。</p>
<pre>
# cd /usr/lib/apache2/
# cp -p suexec suexec.test
</pre>
<p>バイナリエディタで「/var/www」を「/home...(nullを3つ)」に修正。<a href="http://www.parlia.net/weblog/post/728.html/">vimのバイナリモード</a>を使った。</p>
<pre>
# vi -b suexec.test
</pre>
<p>修正前</p>
<pre>
00019a0: 69 64 20 75 69 64 3a 20 28 25 6c 64 29 0a 00 2d  id uid: (%ld)..-
00019b0: 56 00 77 77 77 2d 64 61 74 61 00 2f <span style="color: #00ffff">76 61 72 2f</span>  V.www-data./var/
00019c0: <span style="color: #00ffff">77 77 77</span> 00 20 2d 44 20 41 50 5f 44 4f 43 5f 52  www. -D AP_DOC_R
00019d0: 4f 4f 54 3d 22 25 73 22 0a 00 20 2d 44 20 41 50  OOT="%s".. -D AP
</pre>
<p>修正後</p>
<pre>
00019a0: 69 64 20 75 69 64 3a 20 28 25 6c 64 29 0a 00 2d  id uid: (%ld)..-
00019b0: 56 00 77 77 77 2d 64 61 74 61 00 2f <span style="color: #00ffff">68 6f 6d 65</span>  V.www-data./home
00019c0: <span style="color: #00ffff">00 00 00</span> 00 20 2d 44 20 41 50 5f 44 4f 43 5f 52  .... -D AP_DOC_R
00019d0: 4f 4f 54 3d 22 25 73 22 0a 00 20 2d 44 20 41 50  OOT="%s".. -D AP
</pre>
<p>確認する。</p>
<pre>
# ./suexec.test -V
 -D AP_DOC_ROOT="/home"
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER="www-data"
 -D AP_LOG_EXEC="/var/log/apache2/suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=100
 -D AP_USERDIR_SUFFIX="public_html"
</pre>
<p>修正したsuexecと入れ替える。</p>
<pre>
# mv suexec suexec.orig
# mv suexec.test suexec
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.parlia.net/weblog/post/729.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vimでバイナリ編集できるようにする</title>
		<link>http://www.parlia.net/weblog/post/728.html/</link>
		<comments>http://www.parlia.net/weblog/post/728.html/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 07:52:29 +0000</pubDate>
		<dc:creator>alte</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.parlia.net/weblog/?p=728</guid>
		<description><![CDATA[vimに付属のxxdを使って、バイナリファイルを編集できるようにする。

ずんWiki - vim を参考に、.vimrc に以下を追加する。上書きがうまくいかなかったので、少し修正した。

"バイナリ編集(xxd)モー [...]]]></description>
			<content:encoded><![CDATA[<p>vimに付属のxxdを使って、バイナリファイルを編集できるようにする。<br />
<span id="more-728"></span><br />
<a href="http://www.kawaz.jp/pukiwiki/?vim#ib970976">ずんWiki - vim</a> を参考に、.vimrc に以下を追加する。上書きがうまくいかなかったので、少し修正した。</p>
<pre>
"バイナリ編集(xxd)モード（vim -b での起動、もしくは *.bin で発動します）
augroup BinaryXXD
        autocmd!
        autocmd BufReadPre  *.bin let &#038;binary =1
        autocmd BufReadPost * if &#038;binary | silent %!xxd -g 1
        autocmd BufReadPost * set ft=xxd | endif
        autocmd BufWritePre * if &#038;binary | %!xxd -r
        autocmd BufWritePre * endif
        autocmd BufWritePost * if &#038;binary | silent %!xxd -g 1
        autocmd BufWritePost * set nomod | endif
augroup END
</pre>
<p>-bオプションをつけてバイナリファイルを開く。</p>
<pre>
0000000: ff d8 ff e0 00 10 4a 46 49 46 00 01 01 01 00 48  ......JFIF.....H
0000010: 00 48 00 00 ff db 00 43 00 10 0b 0c 0e 0c 0a 10  .H.....C........
0000020: 0e 0d 0e 12 11 10 13 18 28 1a 18 16 16 18 31 23  ........(.....1#
0000030: 25 1d 28 3a 33 3d 3c 39 33 38 37 40 48 5c 4e 40  %.(:3=<9387@H\N@
0000040: 44 57 45 37 38 50 6d 51 57 5f 62 67 68 67 3e 4d  DWE78PmQW_bghg>M
0000050: 71 79 70 64 78 5c 65 67 63 ff db 00 43 01 11 12  qypdx\egc...C...
0000060: 12 18 15 18 2f 1a 1a 2f 63 42 38 42 63 63 63 63  ..../../cB8Bcccc
0000070: 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
0000080: 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63  cccccccccccccccc
0000090: 63 63 63 63 63 63 63 63 63 63 63 63 63 63 ff c2  cccccccccccccc..
00000a0: 00 11 08 00 60 00 80 03 01 22 00 02 11 01 03 11  ....`...."......
00000b0: 01 ff c4 00 19 00 00 03 01 01 01 00 00 00 00 00  ................
00000c0: 00 00 00 00 00 00 01 02 03 04 00 05 ff c4 00 17  ................
00000d0: 01 01 01 01 01 00 00 00 00 00 00 00 00 00 00 00  ................
00000e0: 00 00 01 02 03 ff da 00 0c 03 01 00 02 10 03 10  ................
00000f0: 00 00 01 d2 99 db a4 54 a3 d9 1e d6 b1 06 a7 2c  .......T.......,
0000100: 46 9b 47 9f da 06 a6 7e bf 10 ea 75 3d 43 42 2d  F.G....~...u=CB-
0000110: 78 9b d1 e5 99 d0 73 60 b7 42 42 82 93 98 52 87  x.....s`.BB...R.
</pre>
<p>編集するときは、16進数の部分を書き換える。右側のテキスト部分の変更は反映されない。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.parlia.net/weblog/post/728.html/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>cronからのメールが文字化けする問題</title>
		<link>http://www.parlia.net/weblog/post/727.html/</link>
		<comments>http://www.parlia.net/weblog/post/727.html/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 15:35:49 +0000</pubDate>
		<dc:creator>alte</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.parlia.net/weblog/?p=727</guid>
		<description><![CDATA[cronの実行結果のメールが文字化けをしないようにする。

crontabで環境変数"CONTENT_TYPE"を指定すると、その値がcronが送るメールの"Content-Type:"ヘッダの値に設定される。
cron [...]]]></description>
			<content:encoded><![CDATA[<p>cronの実行結果のメールが文字化けをしないようにする。<br />
<span id="more-727"></span><br />
crontabで環境変数"CONTENT_TYPE"を指定すると、その値がcronが送るメールの"Content-Type:"ヘッダの値に設定される。<br />
crontabに以下を追加して、iso-2022-jp(JISコード)に設定。</p>
<pre>
CONTENT_TYPE=text/plain; charset=iso-2022-jp
</pre>
<p>コマンドの出力をnkfにパイプして、JISコードにする。</p>
<pre>
* * * * * コマンド | nkf -j
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.parlia.net/weblog/post/727.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Courier-IMAPで専用パスワード(userdb)を使う</title>
		<link>http://www.parlia.net/weblog/post/725.html/</link>
		<comments>http://www.parlia.net/weblog/post/725.html/#comments</comments>
		<pubDate>Thu, 28 May 2009 15:50:21 +0000</pubDate>
		<dc:creator>alte</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.parlia.net/weblog/?p=725</guid>
		<description><![CDATA[Courier-IMAPでUNIXパスワードを使わずに、専用パスワードで認証する方法。

userdbを使うように設定を変更する。

# vi /etc/courier/authdaemonrc

#authmodule [...]]]></description>
			<content:encoded><![CDATA[<p>Courier-IMAPでUNIXパスワードを使わずに、専用パスワードで認証する方法。<br />
<span id="more-725"></span><br />
userdbを使うように設定を変更する。</p>
<pre>
# vi /etc/courier/authdaemonrc

#authmodulelist="authpam"
authmodulelist="authuserdb"
</pre>
<p>userdbにユーザを追加。</p>
<pre>
# userdb ユーザ名 set home=/home/ユーザ名 mail=/home/ユーザ名/Maildir uid=ユーザUID gid=グループUID
</pre>
<p>IMAP用パスワードを設定する。</p>
<pre>
# userdbpw -md5 | userdb ユーザ名 set imappw
</pre>
<p>POP3用。</p>
<pre>
# userdbpw -md5 | userdb ユーザ名 set pop3pw
</pre>
<p>Courier-IMAPから読めるようにuserdb.datを作成する。</p>
<pre>
# makeuserdb
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.parlia.net/weblog/post/725.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>文字コードの変換</title>
		<link>http://www.parlia.net/weblog/post/722.html/</link>
		<comments>http://www.parlia.net/weblog/post/722.html/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 16:11:40 +0000</pubDate>
		<dc:creator>alte</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.parlia.net/weblog/?p=722</guid>
		<description><![CDATA[Linuxでテキストファイルの文字コードを変換する方法のメモ。

nkfを使う
$ nkf [オプション] 入力ファイル &#62; 出力ファイル
オプション



-j (デフォルト)
JISコードを出力


-e
EU [...]]]></description>
			<content:encoded><![CDATA[<p>Linuxでテキストファイルの文字コードを変換する方法のメモ。<br />
<span id="more-722"></span></p>
<h2>nkfを使う</h2>
<pre>$ nkf [オプション] 入力ファイル &gt; 出力ファイル</pre>
<p>オプション</p>
<table border="0" cellspacing="1" cellpadding="1">
<tbody>
<tr>
<td>-j (デフォルト)</td>
<td>JISコードを出力</td>
</tr>
<tr>
<td>-e</td>
<td>EUCコードを出力</td>
</tr>
<tr>
<td>-s</td>
<td>Shift-JISコードを出力</td>
</tr>
<tr>
<td>-w</td>
<td>UTF-8コードを出力</td>
</tr>
<tr>
<td>-Lu</td>
<td>改行コードをunix形式(LF)に変換</td>
</tr>
<tr>
<td>-Lw</td>
<td>改行コードをwindows形式(CRLF)に変換</td>
</tr>
<tr>
<td>-Lm</td>
<td>改行コードをmac形式(CR)に変換</td>
</tr>
</tbody>
</table>
<p>UTF-8に変換。</p>
<pre>
$ nkf -w filename > filename.utf8
</pre>
<p>入力ファイルに上書きするときは、--overwrite オプションを使う。</p>
<pre>
$ nkf -w --overwrite filename
</pre>
<p>カレントディレクトリ以下のファイルを再帰的に変換する。(テキストファイル以外も変換されるので注意が必要)</p>
<pre>
$ find . -type f -exec nkf -w --overwrite {} \;
</pre>
<p>xargsを使う方法。</p>
<pre>
$ find . -type f | xargs nkf -w --overwrite
</pre>
<p>変換対象を「*.html」にする。</p>
<pre>
$ find . -name "*.html" | xargs nkf -w --overwrite
</pre>
<h2>perl(Jcode.pm)を使う</h2>
<pre>
$ perl -MJcode -i -lpe 'Jcode::convert(\$_, "文字コード")' 入力ファイル
</pre>
<p>再帰的に変換。</p>
<pre>
$ find . -type f | xargs perl -MJcode -i -lpe 'Jcode::convert(\$_, "utf8")'
$ find . -type f | xargs perl -MJcode -i -lpe 'Jcode::convert(\$_, "euc")'
</pre>
<h2>ファイル名の文字コード変換</h2>
<p>convmvを使う。カレントディレクトリにあるファイル名をEUC-JPからUTF-8に変換する場合。</p>
<pre>
$ convmv -f euc-jp -t utf8 *
</pre>
<p>上記のコマンドでは確認のみで実際に変換はしない。変換するときは、--notest オプションをつける。</p>
<pre>
$ convmv -f euc-jp -t utf8 * --notest
</pre>
<p>-r オプションで再帰的に変換できる。</p>
<pre>
$ convmv -r -f euc-jp -t utf8 * --notest
</pre>
<p>変換できる文字コードの確認。</p>
<pre>
$ convmv --list
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.parlia.net/weblog/post/722.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gavotte RAMDiskでRAMディスクを作成</title>
		<link>http://www.parlia.net/weblog/post/577.html/</link>
		<comments>http://www.parlia.net/weblog/post/577.html/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 14:08:22 +0000</pubDate>
		<dc:creator>alte</dc:creator>
				<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.parlia.net/weblog/?p=577</guid>
		<description><![CDATA[32bit版Windowsで認識されないメモリをRAMディスクとして使用する。

PCの構成



OS
Windows XP Home SP3


マザーボード
Intel DG33FBC


メモリ
DDR2 SDR [...]]]></description>
			<content:encoded><![CDATA[<p>32bit版Windowsで認識されないメモリをRAMディスクとして使用する。<br />
<span id="more-577"></span><br />
PCの構成</p>
<table border="0" cellspacing="1" cellpadding="1">
<tbody>
<tr>
<td>OS</td>
<td>Windows XP Home SP3</td>
</tr>
<tr>
<td>マザーボード</td>
<td>Intel DG33FBC</td>
</tr>
<tr>
<td>メモリ</td>
<td>DDR2 SDRAM 6GB</td>
</tr>
</tbody>
</table>
<p>メモリは6GBあるが、32bit版Windowsで認識されるのは3GB程度。<br />
<a href="http://www.parlia.net/weblog/wp-content/uploads/2009/03/memory_size.png" rel="lightbox[577]"><img src="http://www.parlia.net/weblog/wp-content/uploads/2009/03/memory_size.png" alt="memory_size" title="memory_size" width="487" height="428" class="alignnone size-full wp-image-718" /></a></p>
<h2>RAMディスクの作成</h2>
<p><a href="http://www10.atwiki.jp/gavotterd/pages/11.html">http://www10.atwiki.jp/gavotterd/pages/11.html</a> の「基本のやりかた」を参考にRAMディスクを作成する。ドライブレターはZとした。<br />
<a href="http://www.parlia.net/weblog/wp-content/uploads/2009/03/gavotte_ramdisk.png" rel="lightbox[577]"><img src="http://www.parlia.net/weblog/wp-content/uploads/2009/03/gavotte_ramdisk.png" alt="gavotte_ramdisk" title="gavotte_ramdisk" width="497" height="350" class="alignnone size-full wp-image-719" /></a></p>
<h2>RAMディスクの活用</h2>
<p>とりあえず、一般的な使い方を記載。</p>
<h3>Windowsのテンポラリフォルダに使う</h3>
<p>ユーザとシステムの環境変数を編集して、「TEMP」と「TMP」の値を「Z:\TEMP」とする。</p>
<h3>Internet Explorerのキャッシュ</h3>
<p>「Z:\Temporary Internet Files」に保存するように設定する。Cookieも同じフォルダに保存されるが、再起動してもCookieだけ復元される。</p>
<h3>Firefoxのキャッシュ</h3>
<p>user.jsに追加。</p>
<pre>
user_pref("browser.cache.disk.parent_directory", "Z:\\Firefox");
</pre>
<p>フォルダはFirefoxの起動時の作成される。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.parlia.net/weblog/post/577.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IETester - いろいろなバージョンのIEでの表示を確認</title>
		<link>http://www.parlia.net/weblog/post/692.html/</link>
		<comments>http://www.parlia.net/weblog/post/692.html/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 13:22:36 +0000</pubDate>
		<dc:creator>alte</dc:creator>
				<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.parlia.net/weblog/?p=692</guid>
		<description><![CDATA[このサイトはIE6(Sleipnir)とFirefoxで表示確認をしています。IE7での表示確認は別のパソコンを使わなければならない状態。

そこでいろいろなバージョンのIEでの表示を確認できる、IETesterを使って [...]]]></description>
			<content:encoded><![CDATA[<p>このサイトはIE6(Sleipnir)とFirefoxで表示確認をしています。IE7での表示確認は別のパソコンを使わなければならない状態。<br />
<span id="more-692"></span><br />
そこでいろいろなバージョンのIEでの表示を確認できる、<a href="http://www.my-debugbar.com/wiki/IETester/HomePage">IETester</a>を使ってみた。<br />
<a href="http://www.parlia.net/weblog/wp-content/uploads/2009/03/ietester.png" rel="lightbox[692]"><img src="http://www.parlia.net/weblog/wp-content/uploads/2009/03/ietester-600x521.png" alt="ietester" title="ietester" width="600" height="521" class="alignnone size-medium wp-image-695" /></a></p>
<p>インストールしたのは、v0.3。IE8 RC1、IE7、IE6、IE5.5に対応している。デフォルトで日本語化されていた。<br />
v0,2では<a href="http://coliss.com/articles/browser/ie/928.html">「XP + IE6の場合、IE7, IE8のモードが動作しません。」</a>とのことだが、v0.3では使えるようになっていた。</p>
<p>とても便利なソフトだが、どんな仕組みなのかが気になる。すべてのバージョンのレンダリングエンジンを持っているのか？</p>
<p>ちなみに、このサイトの訪問者の使用ブラウザの割合。(3/1から3/11)</p>
<table border="0" cellspacing="1" cellpadding="1">
<tbody>
<tr>
<td>Internet Explorer</td>
<td align="right">42.2 %</td>
</tr>
<tr>
<td>Firefox</td>
<td align="right">44.5 %</td>
</tr>
<tr>
<td>Safari</td>
<td align="right">5.6 %</td>
</tr>
<tr>
<td>Opera</td>
<td align="right">1.7 %</td>
</tr>
</tbody>
</table>
<p>バージョン別。</p>
<table border="0" cellspacing="1" cellpadding="1">
<tbody>
<tr>
<td>Internet Explorer 8.0</td>
<td align="right">0.3 %</td>
</tr>
<tr>
<td>Internet Explorer 7.0</td>
<td align="right">20.1 %</td>
</tr>
<tr>
<td>Internet Explorer 6.0</td>
<td align="right">21.7 %</td>
</tr>
<tr>
<td>Firefox 3.0.7</td>
<td align="right">21.7 %</td>
</tr>
<tr>
<td>Firefox 3.0.6</td>
<td align="right">18.5 %</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.parlia.net/weblog/post/692.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CUPSでプリントサーバを作る</title>
		<link>http://www.parlia.net/weblog/post/668.html/</link>
		<comments>http://www.parlia.net/weblog/post/668.html/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 05:20:39 +0000</pubDate>
		<dc:creator>alte</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.parlia.net/weblog/?p=668</guid>
		<description><![CDATA[Linux（Debian etch）に接続されたプリンタ（Canon BJ S700）をWindowsから使えるようにする。

usblpモジュールが必要。
# modprobe usblp
プリンタを接続して、認識する [...]]]></description>
			<content:encoded><![CDATA[<p>Linux（Debian etch）に接続されたプリンタ（Canon BJ S700）をWindowsから使えるようにする。<br />
<span id="more-668"></span></p>
<p>usblpモジュールが必要。</p>
<pre># modprobe usblp</pre>
<p>プリンタを接続して、認識するか確認する。</p>
<pre># dmesg

usb 1-1: new full speed USB device using ehci_platform and address 2
drivers/usb/class/usblp.c: usblp0: USB Bidirectional printer dev 2 if 0 alt 0 proto 2 vid 0x04A9 pid 0x106D</pre>
<h2>CUPSの設定</h2>
<p>cupsysをインストールする。</p>
<pre># apt-get install cupsys</pre>
<p>/etc/cups/cupsd.confを編集して、Web設定画面にLAN内からアクセスできるようにする。</p>
<pre># vi /etc/cups/cupsd.conf

Listen 631    <span style="color: #00ffff;"># 変更</span>

&lt;Location /&gt;
  Order allow,deny
  Allow localhost
  <span style="color: #00ffff;">Allow @LOCAL    # 追加</span>
&lt;/Location&gt;

&lt;Location /admin&gt;
  Encryption Required
  Order allow,deny
  Allow localhost
  <span style="color: #00ffff;">Allow @LOCAL    # 追加</span>
&lt;/Location&gt;

&lt;Location /admin/conf&gt;
  AuthType Basic
  Require user @SYSTEM
  Order allow,deny
  Allow localhost
  <span style="color: #00ffff;">Allow @LOCAL    # 追加</span>
&lt;/Location&gt;</pre>
<p>設定を反映させるために再起動しておく。</p>
<pre># /etc/init.d/cupsys restart</pre>
<h3>プリンタの設定</h3>
<p>Canon BJ S700の場合、foomatic-filters-ppdsに入っているドライバ（S700用は入ってないのでS630用のドライバを使う）を使うのでaptでインストール。</p>
<pre>
# apt-get install foomatic-filters-ppds
</pre>
<p>http://(サーバのIPアドレス):631/ にアクセスして「プリンタの追加」からプリンタの設定をする。<br />
<a href="http://www.parlia.net/weblog/wp-content/uploads/2009/02/cups_1.png" rel="lightbox[668]"><img src="http://www.parlia.net/weblog/wp-content/uploads/2009/02/cups_1-600x343.png" alt="cups_1" title="cups_1" width="600" height="343" class="alignnone size-medium wp-image-682" /></a></p>
<p>プリンタの名前を設定する。<br />
<a href="http://www.parlia.net/weblog/wp-content/uploads/2009/02/cups_2.png" rel="lightbox[668]"><img src="http://www.parlia.net/weblog/wp-content/uploads/2009/02/cups_2-600x225.png" alt="cups_2" title="cups_2" width="600" height="225" class="alignnone size-medium wp-image-683" /></a></p>
<p>デバイスを選択する。USB接続なので「USB #1」とした。<br />
<a href="http://www.parlia.net/weblog/wp-content/uploads/2009/02/cups_3.png" rel="lightbox[668]"><img src="http://www.parlia.net/weblog/wp-content/uploads/2009/02/cups_3-600x162.png" alt="cups_3" title="cups_3" width="600" height="162" class="alignnone size-medium wp-image-684" /></a></p>
<p>ドライバの選択。S700がないので、「Canon S630」を選択した。<br />
<a href="http://www.parlia.net/weblog/wp-content/uploads/2009/02/cups_4.png" rel="lightbox[668]"><img src="http://www.parlia.net/weblog/wp-content/uploads/2009/02/cups_4-600x265.png" alt="cups_4" title="cups_4" width="600" height="265" class="alignnone size-medium wp-image-685" /></a></p>
<h3>Epson CC-570Lの場合</h3>
<p>CUPSのドライバの「EPSON New Stylus Photo Series CUPS v1.2 (en)」で印刷できたのでfoomatic-filters-ppdsは必要なかった。</p>
<h2>クライアントでの設定</h2>
<p>Windowsでコントロールパネルからプリンタを追加する。<br />
<a href="http://www.parlia.net/weblog/wp-content/uploads/2009/02/printer_1.png" rel="lightbox[668]"><img src="http://www.parlia.net/weblog/wp-content/uploads/2009/02/printer_1.png" alt="printer_1" title="printer_1" width="586" height="362" class="alignnone size-full wp-image-686" /></a></p>
<p>「ネットワーク プリンタ、またはほかのコンピュータに接続されているプリンタ」を選択。<br />
<a href="http://www.parlia.net/weblog/wp-content/uploads/2009/02/printer_2.png" rel="lightbox[668]"><img src="http://www.parlia.net/weblog/wp-content/uploads/2009/02/printer_2.png" alt="printer_2" title="printer_2" width="586" height="362" class="alignnone size-full wp-image-687" /></a></p>
<p>「インターネット上または自宅/会社のネットワーク上のプリンタに接続する」を選択して、URLに「http://(サーバのIPアドレス):631/printers/(CUPSに登録したプリンタ名)」を入力する。<br />
<a href="http://www.parlia.net/weblog/wp-content/uploads/2009/02/printer_3.png" rel="lightbox[668]"><img src="http://www.parlia.net/weblog/wp-content/uploads/2009/02/printer_3.png" alt="printer_3" title="printer_3" width="586" height="362" class="alignnone size-full wp-image-688" /></a></p>
<p>ドライバを選択する。<br />
<a href="http://www.parlia.net/weblog/wp-content/uploads/2009/02/printer_4.png" rel="lightbox[668]"><img src="http://www.parlia.net/weblog/wp-content/uploads/2009/02/printer_4.png" alt="printer_4" title="printer_4" width="514" height="300" class="alignnone size-full wp-image-689" /></a></p>
<p>通常使うプリンタに設定する。<br />
<a href="http://www.parlia.net/weblog/wp-content/uploads/2009/02/printer_5.png" rel="lightbox[668]"><img src="http://www.parlia.net/weblog/wp-content/uploads/2009/02/printer_5.png" alt="printer_5" title="printer_5" width="586" height="362" class="alignnone size-full wp-image-690" /></a></p>
<p>設定が完了したら、印刷テストをしておく。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.parlia.net/weblog/post/668.html/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IPnutsでCF起動のルータを作る</title>
		<link>http://www.parlia.net/weblog/post/610.html/</link>
		<comments>http://www.parlia.net/weblog/post/610.html/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 15:25:35 +0000</pubDate>
		<dc:creator>alte</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.parlia.net/weblog/?p=610</guid>
		<description><![CDATA[IPnutsはルータやファイアウォールに特化したLinuxディストリビューション。
IPnuts 4.0r3 CD-ROM版(ダウンロードするのにエキストラメンバーキーを購入する必要がある)を使って、省電力化のためにコン [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ipnuts.net/">IPnuts</a>はルータやファイアウォールに特化したLinuxディストリビューション。<br />
IPnuts 4.0r3 CD-ROM版(ダウンロードするのにエキストラメンバーキーを購入する必要がある)を使って、省電力化のためにコンパクトフラッシュ(以下CF)から起動するようにする。<br />
<span id="more-610"></span><br />
ルータにするPCの構成。</p>
<table border="0" cellspacing="1" cellpadding="1">
<tbody>
<tr>
<td>マザーボード</td>
<td>VIA EPIA 5000</td>
</tr>
<tr>
<td>NIC1</td>
<td>オンボード(VT6103)</td>
</tr>
<tr>
<td>NIC2</td>
<td>ETX-PCI(RTL8139)</td>
</tr>
<tr>
<td>CF</td>
<td>A-DATA Speedy CF (CF-IDE変換基板で接続)</td>
</tr>
</tbody>
</table>
<h2>IPnutsのインストール</h2>
<h3>CFのフォーマット</h3>
<p>CFをFAT16でフォーマットする。アクティブにして、パーティションのサイズを512MB以下にする。</p>
<h3>パッケージのコピー</h3>
<p>IPnutsのCDのpackagesフォルダ以下のファイルをCFにコピー。アップデートしておくなら、<br />
<a href="http://www.ipnuts.net/IPnuts/4_0_r3/updates/">http://www.ipnuts.net/IPnuts/4_0_r3/updates/</a> のファイルもコピーする。</p>
<h3>syslinuxのインストール</h3>
<p>CFをルータにするPCに接続して、IPnutsのCDで起動。以下のコマンドを実行する。</p>
<pre>
syslinux -s /dev/hda1
</pre>
<h2>初期設定</h2>
<p>CFで起動して初期設定をする。</p>
<h3>NICの認識</h3>
<p>ETX-PCI(RTL8139)は8139tooでデフォルトで認識された。</p>
<p>オンボードNIC(VT6103)を認識させる。</p>
<pre>
# insmod via-rhine.o
</pre>
<p>確認</p>
<pre>
# ip link show
</pre>
<p>起動時にモジュールを読み込むように/etc/modulesに「via-rhine」を追加する。</p>
<pre>
# vi /etc/modules

8390
mii
ne2k-pci
8139too
e100
via-rhine
</pre>
<h3>rootのパスワードを変更</h3>
<p>デフォルトではパスワードなしなので、設定しておく。</p>
<pre>
# passwd
</pre>
<h3>設定を保存</h3>
<pre>
# save_conf
</pre>
<h2>Web設定画面で設定</h2>
<p>http://192.168.0.1/ にアクセスして設定する。(デフォルトユーザ: webadmin パスワード: free)</p>
<h2>その他の設定</h2>
<h3>USBメモリをリムーバブルディスクとして認識させる</h3>
<p>デフォルトではリムーバブルディスクはフロッピーだが、USBメモリを使うように、/etc/default/rcSを編集して「REMOVABLE=/dev/sda1」とする。</p>
<pre>
# vi /etc/default/rcS

REMOVABLE=/dev/sda1
</pre>
<h3>シェルをbashにする</h3>
<p>デフォルトのシェルをashからbashに変更する。<br />
<a href="http://sourceforge.jp/projects/ipnuts-ext/">http://sourceforge.jp/projects/ipnuts-ext/</a> のbash.lrpをUSBメモリに保存する。Web設定画面の[ブートディスク]からbash.lrpをブートディスクにコピーして有効化する。</p>
<h3>SSHでrootのログインを禁止する</h3>
<p>一般ユーザを追加。</p>
<pre>
# adduser user1
</pre>
<p>rootのログインを禁止する。</p>
<pre>
# vi /etc/ssh/sshd_config

PermitRootLogin no
</pre>
<h3>telnetを無効にする</h3>
<p>/etc/inetd.conf を編集してtelnetを無効にする。</p>
<pre>
# vi /etc/inetd.conf

#telnet         stream  tcp     nowait  root.telnetd    /usr/sbin/tcpd  /usr/sbin/in.telnetd
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.parlia.net/weblog/post/610.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.498 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-09-03 18:04:24 -->
