CentOSの最近のブログ記事

昨日、友人からvsftpdでのchrootの方法を聞かれた。確かにいつもchrootの設定をしているけど、いざ聞かれるとあんまり覚えていないので、すでに設定してあるサーバを見ながら答える羽目に。

ってなわけで、ここらでひとつchroot設定についてまとめておくことにする。

 

1.ユーザーのホームディレクトリを設定する

 ProFTPdでは、設定ファイル内でchrootさせるディレクトリを指定していたんだけど、今回はFTP専用ユーザーだということなので、CentOSのローカルユーザーにホームディレクトリを設定し、そこにchrootさせる方法を採用する。

 まずはusermod、あるいはvipwで、ユーザーのホームディレクトリを設定する。ここで具体的なディレクトリ名を考えるのが面倒なので、各自頭の中で名前をつけちゃってください。

 

2.vsftpd.confでchrootを有効にする

 次に/etc/vsftpd/vsftpd.confにてchrootを有効にするのだけど、ここで二通りのルートに分岐する。一つ目は、chrootしたいユーザーを登録するルート。基本はchrootさせず、特定のユーザーのみchrootしてしまう設定となる。

もうひとつは、すべてのユーザーをchrootさせるが、特定のユーザーはchrootしないように指定するルート。

 

2.1.chrootしたいユーザーを指定する方法

 /etc/vsftpd/vsftpd.confを開き、下記の二箇所のコメントをはずして設定を有効にする。

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

 つぎに、/etc/vsftpd/chroot_listというファイルを新規作成し、chrootしたいユーザーの名前を記述する。(一行に一ユーザーです)

 

2.2.chrootしないユーザーを指定する方法

 /etc/vsftpd/vsftpd.confを編集する。上の方法に加えて「chroot_local_user=YES」を設定する。

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
chroot_local_user=YES

 これで、ローカルユーザーはすべてchrootするようになり、chroot_listには、chrootさせたくないユーザーの名前を書くことになる。

 ユーザーがどんどん増えるので、その都度ユーザー名をchroot_listに追記するのが面倒な場合はこっちを選択したほうがよいです。

 

3.vsftpdを起動する

 上記どちらかの設定が完了したら、chkconfigでvsftpdを有効にして起動する。

 ftpでログインして確認すると、chrootしている場合はホームディレクトリの下にしかアクセスできないようになっているはず。 

 個人的には、サーバの管理ユーザー(=自分)以外はchrootしてしまいたいので、2.2の方法を採ったほうが良いんじゃないかなと思う。

昨日の夜、IRCで友人とチャットをしていたら「CentOS5にVNC Serverってどうやってインストールと設定したらいいの?」って話題になったので自分でもためしてみた。

ISOは前にダウンロードしてあったので、マウントしてVirutalPCを起動したんだけど、GUIが起動した瞬間に忌まわしい記憶がよみがえる、"解像度1600*600で妙にカラフルな画像が表示されて操作しようにもわけがわからない状態"に。

とりあえずテキストモードのインストーラから導入してみたんだけど案の定Xの設定は出来ず。

普段LinuxのGUIなんて使わないんだけど、今回はVNCを試すためにどうしてもGUIが必要なのであきらめてGUIインストールの方法を探すことに。(注:テキストモードでもインストール後にXの設定はできます。単に自分がめんどくさかっただけです)

確か昔から、インストーラのXが立ち上がらないときのためにVESA標準のVGA仕様のみでXを動かすオプションがあったよな~?とおもってぐぐったら、インストーラの最初の画面で「linux vesa」でいいみたい。

とりあえずGUIの画面はでたので、インストール開始まで進んで今日は寝よう。

8/28追記

このままだと、Xが起動したときにマウスが働きません。VirtualPCにCentOS(Linux)を入れるときは、ブートローダにもう少しおまじないが必要です。

CDからブートし、GRUBのプロンプトが表示されたら起動をいったん止めて下記の起動オプションを指定します。

> linux vesa i8042.noloop psmouse.proto=imps clock=pit

さらに、通常起動時にはこの設定は反映されないので、/etc/grub.confを編集して「i8042.noloop psmouse.proto=imps clock=pit」を追加しておかないと、せっかくインストールが終わってXが起動してもマウスが使えないので注意。

VirtualPCだとマウスがキャプチャされちゃうので、Windows以外を使うときは、仮想化ソフトはVMwareを使ったほうが良いかもね。

うちはほかの社員とVMをやり取りするのでVirtualPCじゃないと面倒。

いろいろあって、仕事用として使っているCentOSのテスト環境を作り直すことに。
NamazuとかNKFとかHyperEstraierとか手間隙かけて入れたのになぁ。

でもせっかくだから、X Windowも動くようにしてしまおうかと思ってGUIを有効にしてインストールしたところ、インストールを完了してOSを起動すると大変なことに。
VirtualPCのウィンドウサイズが1600*600くらいになり、色もめちゃくちゃな画面に。

マウスを動かしてもどこにカーソルがあるのかわからないのでもう意味不明。

う~むと思ってGoogleで検索してみると、VirtualPCでCentOSとX Windowを使いたいときはインストール時に画面の色深度設定を16bitに変更する必要があるらしい。これはCenOS4だけなのか、いまどきのLinux共通なのかは不明。

そんなわけでようやくインストール完了したんだけど、キーボード&マウスの動きが鈍い。VirtualPCでWindowsを動かしてるときは全然問題ないのに・・・?

apacheやDB、HyperEstraierの設定しないといけないのだけれど、GnomeTerminalから作業していると、キーボード入力がおかしい。「exit」と入力したのに、「eexxxitt」のように入力されてしまう。たぶんキーリピートを判断する間隔の設定しなおしが必要なのかもしれない。

といってもどこをいじればいいのやら・・・。

現在担当している顧客より,HyperEstraierをCentOS4にてrpmからインストールして使いたいという案件があったので、テスト環境にてインストールを試してみる。

CentOS用のrpmがあれば文句なしだけれど、心当たりのある場所を一通り探しても見当たらなかったので,先ずはFedoraCore用のrpmを流用して試してみることにする。

しかし、依存関係にてruby(abi)と、ruby-docという二つのパッケージの情報が必要といわれる。SPECファイルを書き換えてはみたものの,にわか作業では上手くいかなさそうだ.

というわけでFedora9のsrpmをパクルのは一旦保留して,他に使えそうなSRPMは無いかと探すことにする.

jaistのサーバを漁っていたら,どうやらVineLinuxのSRPMはシンプルでCentOSでも簡単に流用できそう.
そんなわけでVinePlusのSRPMを流用してQDBMとHyperEstraierのパッケージを作成してみた.

インストールした後でインデックスを作って動作確認をしたところ,問題無さそう.

むぅ・・・

| コメント(0) | トラックバック(0)
今日は仕事で、とあるコンサル会社の人と、とある場所でプレゼン。
ウェブで動く○○+グループウェア+αのシステムだったんだけど、うーむ。デモをみながら、こういうのを自分たちでも作ってみたいなぁ・・・と考えこんでしまった。

その後、知り合いに頼まれていた北米版XboxLiveのMSPカードを買いに秋葉原まで。
1600MSPで3600円ナリ。高いなぁ。まあ自分で使うわけじゃないからいいけど。
ついでにツクモでGbEのハブを買ってみた。家に帰ってからつけてみたんだけど、Windowsマシンがリブートを繰り返すようになった。
これはハブとの相性がわるいのか?

今日は家に速く帰れたので、CentOSのrpmパッケージをつくるためにいろいろと調べる。FedoraCoreのrpmをパクったから、RubyのパッケージがCentOSとは違っててややこしい。
当初はHyperEstraierの検索システムを開発する様に話をもっていけるかな?と思っていたんだけど、いろいろと大人の都合でユーザーインターフェースの部分はうちは担当しないことになった。
最近また、仕事でPHPのプログラムを書いてます。

プログラム応答時間の測定のために、とあるクエリ文を同時に数十タスク実行してそれぞれの処理時間を計りたいんだけど、非同期のプロセスを実行する方法がいまいち不明。

pcntl_fork()まではいいんだけど、その後目的のプログラムをうまく実行させられない。う~む、これはプロセスの終了処理も呼び出し元が面倒みないとだめなのかな?

今回の場合はpopen()なのかなぁ...でもこれでも親側でプロセス終了処理が要るっぽいんだけど...。

CentOSでは,FTPクライアントとしてlftpがインストールされている。

ずっとRedHatLinuxを使っていたのでncftpの方が馴れていて使いやすい(FreeBSDもncftpを入れて使ってる)んだけど、lftpの使い方もちゃんと馴れておかないとダメだよね、ってことで使い方の簡単なメモ。

ちょっと仕事でCentOSを使うことになりそうだったので,チェックを兼ねて手元にあったテスト用マシンにインストール&webサーバ関連をセットアップする.

Apacheはhttpdというパッケージ名で収録され,バージョンは2.0だった.「いまさら2.0かヨ」と思いつつも自分でいじるのはあとあと面倒を見切れないのでそのままゴー.

設定ファイルは最近のApacheの流儀なのでとくに混乱も無くログ記録の設定へ.

標準のままApacheにログを書かせ,cronで月一回ローテートするのも良いが,いちいちApacheを再起動する必要があったり,ログファイル名に年月をいれたりできないんでさっさとcronologに置き換える.

サイトからソースのアーカイブ(cronolog-1.6.2.tar.gz)をダウンロードしてサーバマシンへ転送.cronologはrpm用のspecファイルが同梱されているので,rpmbuildコマンドでrpmを作成できる.

# rpmbuild -tb cronolog-1.6.2.tar.gz 

上記コマンドでパッケージ作成を実行するとエラー終了してしまった.おかしいなと思ってメッセージをよく見る.

RPM build errors:
     Installed (but unpackaged) file(s) found:
     /usr/share/info/dir 

どうやらビルドしたのにインストールされないファイルがあると言うことらしい.「適当」を座右の銘に掲げる自分としては「無視しろよ」と思うのだけど,無視してくれるオプションも無い様なのでspecファイルを修正する.

/usr/src/redhat/SPECS/cronolog.specファイルを編集し,%files の下へ「/usr/share/info/dir」 という行(ファイル)を追加して再度ビルドを実行すると,今度は問題なくビルドできた.

あとはできあがったrpmからインストールすると完了.

アーカイブ

Powered by Movable Type 4.21-ja