Linuxユーザの立場から、役立つ情報や困ったときの解決方法を分かりやすく、かつ簡潔に記事にまとめています。主に、Ubuntu 8.04(→9.04)やCentOS 5.2(→5.3)で確認したことですが、他のディストリビューションでも応用できると思います。内容は(1)設定ファイルの書き方(2)役立つソフトウェア紹介やインストール方法(3)便利なコマンドの使い方や活用例(4)困ったときの解決方法です。このページの末尾にキーワード別で記事を分類してあります。また、真上の「ブログ検索」フォームからブログ内の記事を検索できます。

2009年9月28日月曜日

ワークグループ名の変更 このエントリーを含むはてなブックマーク

Windowsでワークグループ名を変更できなかった。コントロールパネル→システム→コンピュータ名→変更、できるはずなのだが、ワークグループ名の欄が編集できなくなっていた。調べてみると、ローカルエリア接続→プロパティ、でWindowsネットワーク用クライアントをインストールすると解決した。

2009年9月24日木曜日

FTP over HTTP Proxy このエントリーを含むはてなブックマーク

本記事では、lftpというFTPクライアントで、HTTP Proxyのsquidを経由でファイル転送をする方法を説明します。GUIのFTPクライアントでは、FileZillaがHTTP Proxy経由でファイル転送できたと記憶しています。

まず、プロキシを設定します。HTTP_PROXY環境変数をエクスポートしていたのですが、私の環境ではこれは反映されていませんでしたから、lftpの設定ファイルに以下の記述しました。この設定ファイルは~/.lftp直下にrcという名前で作成します。

set hftp:proxy プロキシサーバ

次に、以下のコマンドを打ちます。

$ lftp -d -u FTPサーバのアカウント名  hftp://FTPサーバ

後は、パスワードに答えてログインできると思います。

WebサーバでDigeset認証をつかってアクセス制御する。 このエントリーを含むはてなブックマーク

本記事では、Webサイトのとあるディレクトリ以下をパスワードで保護したいときに、認証によりアクセス制御する方法をまとめる。

認証方式にはいろいろある。おそらく最も基本的なのはBasic認証だが、パスワードを平文のまま送信するので、盗聴の危険性がある。そこで、今回は、MD5でハッシュ化してパスワードとユーザ名を送信するDigest認証を使ったアクセス制御をまとめる。参考URL:「Digest 認証の仕組み」。

まず、Webサーバで公開しているディレクトリで、パスワードで保護したいディレクトリを作成する(既にある場合はもちろん作成不要)。ここでは、ユーザ(hoge)のpublic_html以下をWebに公開しており、その直下のprivateをパスワード保護する場合を説明する。

$ cd 
$ pwd
$ /home/hoge
$ cd public_html
$ mkdir private

次に、apacheの設定ファイル/etc/httpd/conf/httpd.confでDigest認証をどこそこで利用するといった設定を記述する。保護したいディレクトリ毎にhtaccessファイルを配置してもよいが、大元のhttpd.confに記述しておくの良いとどこかに書いてあった(保守性?)。

<Directory /home/*/public_html/private>    <--- 念のためhogeユーザだけでなく任意のユーザに対してルールを設定
    AuthType Digest
    AuthName "Secret Zone"
    AuthDigestDomain /private/
    AuthUserFile /etc/httpd/conf/.htdigest   <--- 後で作成するパスワードファイル
    Require user ユーザ名
</Directory>

次に、パスワードファイルを作成する。既にパスワードファイルがある場合は、cオプションは不要。cオプションを付けないと、新規ユーザの情報を書き込むことになる。レルムは、httpd.confでAuthNameに設定した文字列"Secret Zone"を指定する。パスワードファイル名も、上の設定ファイルで指定した名前とする。

# cd /etc/httpd/conf
# htdigest -c パスワードファイル レルム ユーザー名

最後に、apacheをリロードする。

#/etc/rc.d/init.d/httpd reload

試しに動かしてみる。うまく動かないときは、AllowOverride all になっていないか確認する。

参考URL:Apacheでユーザー認証を行うには(Digest認証編)WebDAV時代のセキュリティ対策[後編]

2009年9月22日火曜日

プロバイダのメールサーバにメールをリレーしてもらう。 このエントリーを含むはてなブックマーク

本記事では、自宅のメールサーバからポストしたメールを、プロバイダのメールサーバにリレーしてもらうための方法をまとめる。最近は、スパムメールが横行しているため、メールサーバはSASL認証などによりアクセス制御している。以下の説明では、自宅のメールサーバ=postfix、プロバイダ=eoと仮定し、メールサーバの(SASL認証以外の)設定は済んでいるものとする。

設定方法

まず、/etc/postfix/main.cfに利用するプロバイダのリレーホストを記述する。

relayhost = smtpauth.eonet.ne.jp:587

次に、同じ設定ファイルでSASL認証のための設定を記述する。

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain, login, cram-md5

ここで、smtp_sasl_...となっていることに注意する。というのは、smtpd_sasl_...という設定パラメータも存在するから。前者は、クライアントとして(サーバの提供する)SASL認証を利用する場合の設定パラメータを意味し、後者は、サーバとしてSASL認証を提供する場合の設定パラメータを意味する。

次に、SASLパスワードを記述したパスワードファイルを作成する。以下で作成するパスワードファイルは、/etc/postfix/sasl_passwdとする。

smtpauth.eonet.ne.jp:587 アカウント%キーワード.eonet.ne.jp:パスワード

作成したらpostmapを実行し、ルックアップでーブルを作成し、パスワードファイルを消去する。

# pwd
/etc/postfix
# postmap sasl_passwd
# rm sasl_passwd

最後に、postfixをリロードしておく。

# /etc/rc.d/init.d/postfix reload

参考URL:PostfixをSMTPクライアントとしてSASL認証

Postfix+saslでOP25B対策

Vine3.2のPostfixでSMTP認証

2009年9月14日月曜日

今更ながらchangelogメモ このエントリーを含むはてなブックマーク

本記事では、普段のメモを効率的に記録、管理、活用するための方法で、changelog+chalowを使う方法をまとめる。新しいネタではないが、新しい環境でセットアップすることがあったので、そのときに調べたことなどをまとめる。

ChangeLogの概要

ソフトウェア開発で変更履歴(changelog)を1つのファイルにまとめて書いておくことがある。emacsでは、changelogを簡単に書くための機能が備わっている。Ctrl-x4aでchangelogのバッファがオープンされ、すぐに新規事項を記入できるようになっている。

デフォルトでは、ホームディレクトリに下にChangeLogというファイルが作成され、追加したメモはそこに蓄えられていく。1つのファイルに、日記やTodoリスト、覚書などすべてのメモが蓄えられるので、管理が楽である。普段からemacsを使う人には、思いついた側から即座にメモることができる。メモした内容を検索するための機能もemacsには備わっている。詳細は、横着プログラミング第1回参照

Chalowについて

chalowは、changelogをhtmlに変換するためのスクリプトである。aptでインストールできる。apt-cacheでパッケージを調べてみると以下の通り。

# apt-cache search chalow
chalow - weblog tool that converts ChangeLog to HTML

インストールするには、お決まりのapt-getで次の通り。

# apt-get install chalow

chalowの使い方は、helpによると次の通り。詳しくは、chalow on the webを参照。

$ chalow 
usage: chalow [options]  [file]...
    -n, --top-n=NUM             write NUM days to "index.html"
    -o, --output-dir=DIR        directory to output
    -c, --configure-file=FILE   configure file
    -s, --stop-date=DATE        date to stop processing
    -u, --update-by-size        overwrite only if sizes are different
    -C, --css=FILE              css file
    -q, --quiet                 quiet mode
    -8, --utf8                  utf8 mode
    -d, --debug                 debug mode

基本的には、変換するChangeLogの場所を指定して、それをhtmlに変換したものを出力するディレクトリ、および、変換時に使用する設定ファイルを指定している。以下に、例を示す。

$chalow -o ~/html -c ~/etc/cl.conf  ~/ChangeLog

ちなみに、cl.confは以下の場所にある(と思う)サンプル設定ファイルcl.conf.gzを解凍し、それを自分用にカスタマイズして使っている。

# cd /usr/share/doc/chalow/examples
# ls
cl-en.conf.gz  cl.conf.gz  conf
# cp cl.conf.gz ~/       
# cd
# gunzip cl.conf.gz           <--- サンプルのcl.confが得られる。

基本的にカスタマイズした箇所は、README(ChangeLog on the web参照)に書かれていた以下の箇所ぐらい。

※7 tDiary のテーマ (CSS ファイル) をそのまま使うために必要。
tDiary のテーマを使うには以下のような設定を行うと良い。
- $item_header_style = 1 or 2 (イメージアンカーを使うとき)
- $use_h3_for_item_header = 1
- $css_file = "tDiaryのテーマのCSSファイル.css"
- $item_template で h3 で header を囲む。

tDiaryのテーマが使えるらしいので、テーマをtDiary.orgからダウンロードする。

$ wget http://www.tdiary.org/download/tdiary-theme-2.2.2.tar.gz
$ tar zxvf tdiary-theme-2.2.2.tar.gz
$ cd tdiary-theme-2.2.2
$ ls 
3minutes            dice               hatena-white          nahanaha        savanna
3pink               digital_gadgets    hatena_cinnamon       nande-ya-nen    scarlet
90                  dog                hatena_japanese       narrow          seam-line
README              dot                hatena_leaf           natrium         sepia
alfa                dot-lime           hatena_rainyseason    natural_gray    shirakaba
などなど

大量のテーマが入っているので、自分の好きなものを選んで、そのフォルダ毎webサーバにアップロードする。

そして、先ほどのcl.confに書き込む。例えば、webサーバ上のcssディレクトリにkaeruディレクトリを置いた場合は次のようにする。

# ----------------------
# CSS ファイル
#$css_file = "diary.css";
$css_file = "css/kaeru/kaeru.css"; <---相対URLで指定しているが、ここは各自の環境に合わせて適宜変更。

後は、chalowでhtmlに変換すれば良い。上の例では、~/html以下にファイル一式が生成されるので、これら一式をWebサーバにアップする。

以下のようなスクリプトを書いておくと、次からは楽で良い。

#!/bin/sh

chalog=${HOME}/ChangeLog           <--- 適宜変更
conf_dir=${HOME}/etc/cl.conf       <--- 適宜変更
out_dir=${HOME}/html               <--- 適宜変更

chalow -o $out_dir -c $conf_dir  $chalog
echo "$chalog ---> $outdir/index.html... fin"

私は、ssh接続の可能なwebサーバを利用しているので、rsync (over ssh)を使って~/htmlディレクトリ以下をwebサーバ上のディレクトリと同期させるスクリプトも使って、コマンド1つで簡単にアップロードも済ませている。プライベートな内容も含まれるので、htaccessなどによりアクセス制御をしている。

2009年9月4日金曜日

(第1回)asymptoteを使ってみる。インストール編 このエントリーを含むはてなブックマーク

「asymptote」というベクタグラフィックス記述言語を試しに使ってみたので、まとめてみる。

ことの始まり

latex文書中に、球面や放物線などの数学的な図形を挿入するための図形描画ソフトで、以下のようなイメージにあうものを探していた。

  • ベクター画像として描画。
  • 手書きでない。
  • 手軽に描画できる。

ネットで調べると、例えばTexWiki(の「関連ツールなど」のところ)に、かなり詳しい情報がまとめられていた。latex文書に挿入する画像は、「tgif」や「Inkscape」で作成することが多かったのだけど、手書きで描画したくなかったので却下した。また、「gnuplot」や「OpenGL」など他の選択肢もあったのだけど、今回はasymptoteが合ってそうなので、試しに使ってみた。

Asymptoteは、sourceforgegnuなどのサイトに詳しい説明が書いてある。

aptでインストール

ubuntu 9.04へのインストールは極めて簡単で、以下のようにコマンドラインからapt-getで入れるか、synapticを使ってインストールします。ちなみに、ポストスクリプトビューアの「gv」が入っていないならば、これもインストールしておきます(他のポストスクリプトビューアでも良いのかもしれないけれど、試していないので不明)。

# apt-get install asymptote

インストールして少し使ってみたら、3次元図形を描画するときにエラーが出てうまくいかないことが分かった(理由不明)。インストールされていたバージョンは1.43-1だったので、最新のに比べて古いようだ。よって、アンインストールして、最新のソースをダウンロードし、インストールすることにした。

# apt-get remove asymptote

ソースからインストール

公式サイトから最新のソースファイルをダウンロードする。私は、バージョン1.85のもの(asymptote-1.85.src.tgz)を入れた。Document->Installation->2.6 Compiling from UNIX sourceに書いてあるように、garbage collectorが必要なようです。
# wget http://downloads.sourceforge.net/asymptote/asymptote-1.85.src.tgz
# gunzip asymptote-1.85.src.tgz
# tar -xf asymptote-1.85.src.tgz
# cd asymptote-1.85
# wget http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.1.tar.gz
# ./configure
# make all
# make install

最初にapt-getでインストールしたときに、実行ファイルasyが/usr/binにあったけど、ソースからインストールした方は/usr/local/binに配置される。これを通知するためにリハッシュしておく。

# hash -r

動作確認

詳しい使い方は、sourceforgeにある公式サイトにDocumentが置いてあります。また、wikiもあって、分かりやすく書かれています。まず、次のようにターミナルからasyで起動します。後は、描画コマンドを順次発行して、対話式に描画していきます。以下では、原点から(100,100)に向けて線を引くように命令しています。

$ asy
Welcome to Asymptote version 1.43 (to view the manual, type help)
> draw((0,0)--(100,100));

すると、gvが起動して、きちんと線が描かれていることが確認されました。

対話モードを終了するには、次のようにする。

> quit
$

また、graph3を使って3次元図形を描画するコードを動かしてみました。このコードは、Documentに書いてあるものを使っています。エディタで、次のコードを書いてtest.asyで保存します。

import graph3;

size(0,200);
size3(200, IgnoreAspect);

currentprojection=orthographic(4,6,3);


real x(real t) {return cos(2pi*t);}
real y(real t) {return sin(2pi*t);}
real z(real t) {return t;}

path3 p=graph(x,y,z,0,2.7,operator ..);

draw(p,Arrow3);
scale(true);

xaxis3(XZ()*"$x$", Bounds, red, InTicks(Label, 2,2));
yaxis3(YZ()*"$x$", Bounds, red, InTicks(beginlabel=false, Label, 2,2));
zaxis3(XZ()*"$x$", Bounds, red, InTicks);

そして、実行して、epsファイルが生成されていることを確認します。

$ asy test.asy
$ ls 
test.asy test.eps
$ gv test.eps &

参考サイト:「TexWiki」のAsymptoteの説明ページ結城浩のはてな日記

キーワード

キーワード別に記事を分類してあります。クリックすると各キーワードに該当する記事たちが表示されます。

筆者について

自分の写真
趣味はコンピュータ、音楽、写真などです。