Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

debian

Debianの起動スクリプト編集@Debian Etch

Red Hat系ではchkconfigというコマンドで起動スクリプトのon/offが制御できますが、Debianではupdate-rc.dとうコマンドでできます。デフォルトを使用してシンボリックリンクを作成するには

# update-rc.d postgresql-8.1 defaults

これで/etc/rc?.d/に/etc/rc.d/postgresql-8.1へのシンボリックリンクが作られます。

シンボリックリンクを削除するには

# update-rc.d -f postgresql-8.1 remove

詳細にon/offを指定するには

# update-rc.d postgresql-8.1 start 20 2 3 4 5 . stop 20 0 1 6 .

上記では、 ランレベル2,3,4,5では20番目に起動し、ランレベル0,1,6では20番目に停止されるように設定しています。

なお、もっと視覚的に設定するツールsysv-rc-confというものがあります。

デフォルトではインストールされていないので、apt-getでインストールして、起動します。

# apt-get install sysv-rc-conf
# sysv-rc-conf 
x service      1       2       3       4       5       0       6       S 
x -----------------------------------------------------------------------
x acpid       [ ]     [ ]     [X]     [X]     [X]     [ ]     [ ]     [ ]
x adjtimex    [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [X]
x alsa        [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]
x alsa-utils  [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [X]
x anacron     [ ]     [X]     [X]     [X]     [X]     [ ]     [ ]     [ ]
x apache2     [ ]     [X]     [X]     [X]     [X]     [ ]     [ ]     [ ]
x atd         [ ]     [X]     [X]     [X]     [X]     [ ]     [ ]     [ ]
x avahi-dae$  [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]
x bootclean   [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]
x bootlogd    [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [X]
~ 省略 ~

自動起動されるサービスに×がついていて、スペースキーでon/offできます。

Tracにガントチャートプラグイン導入@Debian Etch

Tracの導入の記事で導入したTracにガントチャートプラグインを導入してみました。

インストールはすごく簡単で、TracのpluginディレクトリにTracGanttのeggファイルを配置します。

wget http://willbarton.com/files/TracGantt-0.3.2a-py2.4.egg

ReadMeを参考にtrac.iniに以下を追記します。 ※componentsセクションなどすでにtrac.iniにある場合は、そのセクションに追記します。

[components]
tracgantt.* = enabled

[ticket-custom]
due_assign = text
due_assign.label = Due to assign
due_assign.value = DD/MM/YYYY

dependencies = text
dependencies.label = Dependencies
dependencies.value =

due_close= text
due_close.label = Due to close
due_close.value = DD/MM/YYYY

include_gantt = checkbox
include_gantt.label = Include in GanttChart
include_gantt.value =

[gantt-charts]
# The format of dates entered by humans in the above ticket fields
date_format = %m/%d/%Y

# Include the ticket summary in the gantt chart display
include_summary = true

# Trim the included summary to the given number of characters
summary_length = 16

# Use the creation date of a ticket as the "due assign" date if no
# assignment date is given
use_creation_date = true

# Show on the gantt chart the date the ticket was opened, to contrast
# with the assignment date.
show_opened = true

あとはapacheを再起動すれば、Tracにガントチャートのメニューが表示されるようになります。

VMware Serverのコンソールが起動しない@Debian Etch

数年前にDebian EtchにVMware 1.0.4をインストールした時は、素直に動いてくれたのですが、1.0.8にアップデートすると動かなくなってしまいました。なので、1.0.4に戻してみたところ1.0.4も動いてくれません。VMware Server 自体は違うマシンから繋げられるので動いていることはわかったのですが、Linux上でコンソールが起動しないという状況です。

$ vmware
なにもエラーも出ず、コンソール画面も立ち上がらない

いろいろと調べていたら、/tmpにログが出ていることがわかりました。 /tmp/vmware-ユーザ名というディレクトリが出来ており、その中にコンソール起動時のログがあります。そのログの中で、以下のようなエラーが出ていました。

vmui| HAL04LoadHALLibraries: Could not dlopen libhal.so.0.
vmui| HAL05LoadGlibLibrary: Could not dlopen libdbus-glib-1.so.1.

ライブラリがないのかと思って、適当にシンボリックリンクを作ってみたけど動かず、このログを頼りにググッてみると、情報がありました。dbus関連のライブラリが非互換なのが原因のようです(dbusが何者なのかよく知りませんが・・・)。Debian Etchのパッケージをアップデートしたり、新しいパッケージを入れたのが原因かなぁって思いますが未調査です。

よって、以下のようにしてvmwareのコンソールを起動してあげることで回避できました。

$ LD_PRELOAD=/usr/lib/libdbus-1.so.3 vmware

参考 http://communities.vmware.com/thread/57996 http://communities.vmware.com/message/471489#471489

echoコマンドで改行やタブを扱うには@Linux bash

UNIX系OSでも最も有名な部類に入るコマンドechoは、引数の文字列や変数の中身を表示することができます。つまりCでいうprintf、JAVAでいうSystem.out.printlnみたいなものですね。

# echo "hoge"
hoge

改行文字\nがあってもそのまま出力します。( 環境によっては、説明文は "\"  、コマンド例には"¥"と表示されますが、同じ文字です)

# echo "hoge\nhoge"
hoge\nhoge

-eオプションによって\nは改行として扱われます。(これはbashの場合でDebianのdashの場合は最下位の追記を参照)

# echo -e "hoge\nhoge"
hoge
hoge

ただし、ここで一つ注意。ダブルクォーテーション がないと\がbashで解釈されて認識されません。

# echo -e hoge\nhoge
hogenhoge

\をエスケープしてあげればダブルクォーテーションはいらなくなります。

# echo -e hoge\\nhoge
hoge
hoge

シェルスクリプトで文字列の入った変数を加工したりする場合はバグが混入してしまうため、注意が必要です。

例えばtmp.txtに以下の文字列が入っていたとします。

good job
abcdefg
hogehoge
good morning

この中から、goodが含まれる行をgrepで取り出して表示させようとしたシェル(tmp.sh)の例を示します。

#!/bin/bash
tmp=`grep good tmp.txt`
echo $tmp
echo ----
echo -e $tmp
echo ----
echo -e "$tmp"
echo ----

これを実行すると以下のようになります。

# ./tmp.sh
good job good morning
----
good job good morning
----
good job
good morning
----

-eオプションやダブルクォーテーションがないと、すべて1行で表示されているのがわかります。まだechoで表示するだけならよいですが、パイプ"|"で繋げて文字列を複雑に処理していると、わかりづらくなってしまいますね。

ちなみに-eオプションはタブ(\t)やベル(\b)といった制御文字も扱えるようです。

# echo -e "a\\tb"
a   b

↑ 余談ですが、HTMLでタブは"	"を半角で書くと表示できます。

== 2012/03/22 追記 ==

現在のDebianのデフォルトシェル (dash) は、echo の -e オプションが使えません。代わりに printf コマンドを使うしかありません。

# printf "hoge\nhoge"
hoge
hoge

ただし、echo と違って最終行が改行されません。よって、echo と同様に表示するには、

# printf "hoge\nhoge\n"

とする必要があります。

dsniffパッケージ@Debian Etch

最近ブラッディ・マンデイというドラマの主人公がハッキングするシーンを解説するサイトがありますが、私も見ていて"tcpkill"というコマンドを使っていて、恥ずかしながら知らなかったので調べてみました。

Debian Etch ではdsniffというパッケージに入っているので、早速インストール

# apt-get install dsniff

tcpkillをはじめ、 以下のコマンドがインストールされました。

/usr/sbin/webmitm
/usr/sbin/msgsnarf
/usr/sbin/webspy
/usr/sbin/tcpnice
/usr/sbin/sshow
/usr/sbin/filesnarf
/usr/sbin/dnsspoof
/usr/sbin/tcpkill
/usr/sbin/dsniff
/usr/sbin/macof
/usr/sbin/sshmitm
/usr/sbin/arpspoof
/usr/sbin/urlsnarf
/usr/sbin/mailsnarf

結構な数のコマンドが同梱されています。ちなみに、tcpkillは任意のホストにtcpコネクションを閉じる偽パケットを送って、tcp通信を妨害できるようです。

eth0から出て行く21番ポート(FTP)を遮断

# tcpkill -i eth0 port 21

192.168.0.1 とのtcp通信を遮断

# tcpkill host 192.168.0.1

TracのDBのスキーマとチケットレポート作成 @ Trac 0.10.3 on Debian Etch

Tracのチケット のレポートを作成するには、TracのDBのスキーマをある程度知っておかないと書けないので、スキーマの一覧を出力しました。

CREATE TABLE attachment (
    type text,
    id text,
    filename text,
    size integer,
    time integer,
    description text,
    author text,
    ipnr text,
    UNIQUE (type,id,filename)
);
CREATE TABLE auth_cookie (
    cookie text,
    name text,
    ipnr text,
    time integer,
    UNIQUE (cookie,ipnr,name)
);
CREATE TABLE component (
    name text PRIMARY KEY,
    owner text,
    description text
);
CREATE TABLE enum (
    type text,
    name text,
    value text,
    UNIQUE (type,name)
);
CREATE TABLE milestone (
    name text PRIMARY KEY,
    due integer,
    completed integer,
    description text
);
CREATE TABLE node_change (
    rev text,
    path text,
    node_type text,
    change_type text,
    base_path text,
    base_rev text,
    UNIQUE (rev,path,change_type)
);
CREATE TABLE permission (
    username text,
    action text,
    UNIQUE (username,action)
);
CREATE TABLE report (
    id integer PRIMARY KEY,
    author text,
    title text,
    query text,
    description text
);
CREATE TABLE revision (
    rev text PRIMARY KEY,
    time integer,
    author text,
    message text
);
CREATE TABLE session (
    sid text,
    authenticated integer,
    last_visit integer,
    UNIQUE (sid,authenticated)
);
CREATE TABLE session_attribute (
    sid text,
    authenticated integer,
    name text,
    value text,
    UNIQUE (sid,authenticated,name)
);
CREATE TABLE system (
    name text PRIMARY KEY,
    value text
);
CREATE TABLE ticket (
    id integer PRIMARY KEY,
    type text,
    time integer,
    changetime integer,
    component text,
    severity text,
    priority text,
    owner text,
    reporter text,
    cc text,
    version text,
    milestone text,
    status text,
    resolution text,
    summary text,
    description text,
    keywords text
);
CREATE TABLE ticket_change (
    ticket integer,
    time integer,
    author text,
    field text,
    oldvalue text,
    newvalue text,
    UNIQUE (ticket,time,field)
);
CREATE TABLE ticket_custom (
    ticket integer,
    name text,
    value text,
    UNIQUE (ticket,name)
);
CREATE TABLE version (
    name text PRIMARY KEY,
    time integer,
    description text
);
CREATE TABLE wiki (
    name text,
    version integer,
    time integer,
    author text,
    ipnr text,
    text text,
    comment text,
    readonly integer,
    UNIQUE (name,version)
);
CREATE INDEX node_change_rev_idx ON node_change (rev);
CREATE INDEX revision_time_idx ON revision (time);
CREATE INDEX session_authenticated_idx ON session (authenticated);
CREATE INDEX session_last_visit_idx ON session (last_visit);
CREATE INDEX ticket_change_ticket_idx ON ticket_change (ticket);
CREATE INDEX ticket_change_time_idx ON ticket_change (time);
CREATE INDEX ticket_status_idx ON ticket (status);
CREATE INDEX ticket_time_idx ON ticket (time);
CREATE INDEX wiki_time_idx ON wiki (time);

チケットレポートで主に使うテーブルはもちろん"ticket"です。各カラムは変数名を見るとほぼわかると思いますのでここには書きません。

CREATE TABLE ticket (
    id integer PRIMARY KEY,
    type text,
    time integer,
    changetime integer,
    component text,
    severity text,
    priority text,
    owner text,
    reporter text,
    cc text,
    version text,
    milestone text,
    status text,
    resolution text,
    summary text,
    description text,
    keywords text
);

その他に使うテーブルとしては、"ticket_change"です。これはチケットの更新履歴や追加コメントなどが格納されます。このあたりはチケット周りのテーブル構成のサイトが少し解説しているので参考にしてみてください。

CREATE TABLE ticket_change (
    ticket integer,
    time integer,
    author text,
    field text,
    oldvalue text,
    newvalue text,
    UNIQUE (ticket,time,field)
);

ticketには対象となるチケットのチケットIDが入ります。fieldは更新履歴の種類が入ります。例えば、コメントの追加の場合は"comment"が入りますし、ステータスの変更ならば"status"が入ります。よって、レポートにコメント履歴も出力させたい場合は、以下のようにして出力できます。ここではコンポーネントがcomponent1でバージョンが1.0のチケットとその履歴を出力しています。太字の部分は環境に依存するので、自分の環境で定義されているものに変更します。

SELECT
  t.id,
  t.type,
  t.component,
  t.version,
  t.reporter,
  c.author,
  t.status,
  t.summary,
  t.description,
  c.newvalue
FROM ticket t left join ticket_change c
WHERE t.id = c.ticket AND c.field = "comment" AND
   t.component = "component1" AND
   t.version = "1.0"
ORDER BY t.id

ちなみにレポートではTrac固有の変数$USERを使うこともできます。

$USER アクセスしているユーザ名

== 追記 2008/12/16 ==

上記のSQLだとnewvalueが空の行が大量に出力されてしまうため、副問い合わせを使ってフィルタリングをかけてみました。さらにidとコメントの順で並び替えるようにしました。以下が改良版です。

SELECT
  t.id,
  c.time,
  t.type,
  t.component,
  t.version,
  t.reporter,
  t.status,
  t.summary,
  t.description,
  c.author,
  c.newvalue
FROM ticket t left join (SELECT * FROM ticket_change WHERE newvalue != '') c
WHERE t.id = c.ticket AND c.field = "comment" AND
   t.component = "component1" AND
   t.version = "1.0"
ORDER BY t.id, c.time

== 追記 2008/12/18 ==

発行されたばかりで、一度も変更のないチケットは上記だと表示されないので、さらに改良。UNION ALLを使って、発行されたばかりのチケット一覧をマージしています。

SELECT
t.id as id,
c.time as time,
t.type,
t.component,
t.version,
t.reporter,
t.status,
t.resolution,
t.summary,
t.description,
c.author,
c.newvalue
FROM ticket t left join (SELECT * FROM ticket_change WHERE newvalue != '') c
WHERE t.id = c.ticket AND c.field = "comment" AND
t.component = "component1" AND
t.version = "1.0"
UNION ALL
SELECT
t.id as id,
t.time as time,
t.type,
t.component,
t.version,
t.reporter,
t.status,
t.resolution,
t.summary,
t.description,
'',
''
FROM ticket t
WHERE t.time = t.changetime AND
t.component = "component1" AND
t.version = "1.0"
ORDER by id, time

OpenOffice 3のインストール@debian系 Linux

OpenOffice 3がリリースされたので、Linuxにインストールしてみました。

UbuntuやDebianなどのdebパッケージ管理を採用しているLinux(UbuntuやDebian)などは、 OOo_3.0.0_LinuxIntel_install_ja_deb.tar.gzをダウンロードしてきて展開します。

# tar zxvf OOo_3.0.0_LinuxIntel_install_ja_deb.tar.gz

展開後、debファイルをdpkgコマンドを用いてインストールしていきます。

# cd OOO300_m9_native_packed-1_ja.9358/DEBS/
# dpkg -i *.deb

これで一応使えるようにはなるのですが、Gnomeのメニューに登録されませんし、ファイルとも関連付けされません。登録や関連付けを行うには、さらにもう一つインストールするパッケージがあります。

# cd desktop-integration
# dpkg -i openoffice.org3.0-debian-menus_3.0-9354_all.deb

POP3 + Maildir形式@Debian Etch

メールの保存形式をmboxからMaildirに変更したところ、qpopperがMaildirに対応しておらず、pop3で受信できなくなってしまったので、Maildir形式に対応したpop3サーバを探しました。

solid-pop3dというサーバが対応しているようなので、使用してみた。

# apt-get install solid-pop3d

この時点でqpopperが削除されるようです。

デフォルトではmbox形式なので、以下の設定太字部分の変更でMaildir形式に変更できます。

# vi /etc/spop3d.conf
<Global>
MailDropName    Maildir
MailDropType    maildir
LogStatistics   no
</Global>

SquirrelMailの添付ファイルサイズ変更@Debian Etch

SquirrelMailで送信できる添付フィルのサイズがデフォルトだと2Mのようで、大きくしようと思っても設定がみつからず、phpの制限にひっかかっているのがわかった。以下の3箇所のサイズを大きくすることで、phpのWebアプリでの送信サイズを変更できる。

# vi /etc/php5/apache2/php.ini
・・・
memory_limit = 50M
・・・
post_max_size = 50M
・・・
upload_max_filesize = 50M

PostfixをMaildir形式に変更してCourier-IMAP使用@Debian Etch

SquirrelMailでWebメールを使おうと思ったところ、IMAPサーバが必要で、さらにMaildir形式で保存しないといけないようなので、設定を変更してみた。Postfixはすでに構築済みとします。

# vi /etc/main.cf
・・・・
home_mailbox = Maildir/    ←追記

Maildirディレクトリを作成。各ユーザで実行する必要があります。

$ maildirmake Maildir

Postfixを再起動

# /etc/init.d/postfix restart

courier-imapをインストール

# apt-get install courier-imap

courier-imapは特に設定を変更しないでも使えました。

vim-rubyインストール@Debian etch

vim-rubyを使うとrubyのプログラム編集で、補完機能を使うことができるらしい。これは便利!ということで、早速インストール。

rubyのライブラリの管理コマンド"gem"が入っていない場合はインストール

# apt-get install rubygems

デフォルトのvimはrubyインタフェースを実装していないので、対応版をインストール

# apt-get install vim-ruby

vim-rubyのインストール。上記と名前は一緒ですが、今回はrubyのvimのライブラリです。

# gem install vim-ruby

これは、インストールスクリプトが用意されるだけですので、これを実行します。vim-rubyを使用するユーザで実行してください。

$ /var/lib/gems/1.8/bin/vim-ruby-install.rb
Possible Vim installation directories:
        1) /home/mazn/.vim

Please select one (or anything else to specify another directory):  ←1を入力

さらに/etc/vim/vimrcを編集。以下を追加

filetype on
filetype indent on
filetype plugin on

これで、編集中にCtrl-x Ctrl-oを押すと 補完がききます。オムニ補完っていうらしい。さらに、キーバインドを変更するには、以下のようにvimrcを設定することで可能です。ここではCtrl-kに割り当てています。

imap <C-k> <C-x><C-o>

参考 : http://d.hatena.ne.jp/Chisei/20071203/1196692812

OpenSSL, OpenSSH脆弱性@Debian

Debian etch以降のOpenSSL, OpenSSHで大きな脆弱性が発見されたようです。

apt-get update; apt-get upgradeしただけではだめなようで、鍵の再作成が必要ですので注意が必要そうです。

Linuxの高速再起動 - kexec @Debian etch

カーネルバージョン2.6.13からサポートされている機能です。

ランレベル1に移行

# init 1

kexecで再起動設定

# kexec -l /boot/vmlinuz-2.6.16-2-686-smp --append "root=/dev/sda5 ro" --initrd=/boot/initrd.img-2.6.16-2-686-smp

再起動実行

# kexec -e

画面が固まった再起動しない場合は

# kexec -e --reset-vga

で再起動してください。

apt系コマンド

インストールの管理にDebian系ではaptを使いますが、すぐ忘れてしまうのでメモ書きです。

  • apt-get
update パッケージリストを取得・更新する
upgrade インストール済みのパッケージをアップグレードする
install 新規にパッケージをインストールする
remove インストールされたパッケージを削除する
source ソースパッケージを取得する
build-dep ソースパッケージのビルド依存情報を設定する
dist-upgrade ディストリビューションをアップグレードする
clean ダウンロードしたアーカイブファイルを削除する
autoclean アーカイブファイルの中で古いものを削除する
check 壊れた依存関係がないかをチェックする
  • apt-cache
add パッケージファイルをソースキャッシュに追加する
gencaches パッケージ/ソースキャッシュを生成する
showpkg 単一パッケージの一般情報を表示する
showsrc ソースレコードを表示する
stats 基本ステータス情報を表示する
dump すべてのファイルを表示する
dumpavail 存在するファイルを標準出力に出力する
unmet 未解決の依存を表示する
search 正規表現によってパッケージを検索する
show パッケージの情報を表示する
depends 指定パッケージが依存しているパッケージを表示する
whatdepends 指定パッケージに依存しているパッケージを表示する
pkgnames すべてのパッケージ名を表示する
dotty GraphVis用のパッケージグラフを生成する
xvcg xvcg用のパッケージグラフを生成する
policy ポリシー設定情報を表示する

日本語入力@Debian etch

以下のコマンドで今使用している日本語入力がわかる

$ im-switch -l

変更したい場合は

$ im-switch -c

一般ユーザの場合は~/.xinput.d/ja_JPが作成・変更されます。 rootだとシステム全体の設定が変更されます。

「*」がついているのがデフォルト選択、「+」が現在の選択です

scim-anthy

scimのオン・オフキーを変えたい場合

$ scim-config-agent -s /FrontEnd/Keys/Trigger=Henkan

一度ログアウトすること

メモ

scim-anthyのインストール

# apt-get install scim-anthy kasumi

キーコードの表示@Debian etch

以下のコマンドでキーコードの対応表を取得できます。

# xmodmap -pke

いつからかDebianで閉じ大括弧が入力できなくなってしまったので、~/.xmodmap を作り以下のように記述

keycode  51 = bracketright braceright kana_MU kana_closingbracket

これをxmodmapコマンドで読み込めばOK ログイン時に読み込みたい場合は、これを.xsessionなどで読み込むように記述しておく

$ vi ~/.xsession

 xmodmap ~/.xmodmap

参考 : http://x68000.q-e-d.net/~68user/unix/pickup?xmodmap

キーコード一覧

keycode 8 = keycode 9 = Escape keycode 10 = 1 exclam kana_NU keycode 11 = 2 quotedbl kana_FU keycode 12 = 3 numbersign kana_A kana_a keycode 13 = 4 dollar kana_U kana_u keycode 14 = 5 percent kana_E kana_e keycode 15 = 6 ampersand kana_O kana_o keycode 16 = 7 apostrophe kana_YA kana_ya keycode 17 = 8 parenleft kana_YU kana_yu keycode 18 = 9 parenright kana_YO kana_yo keycode 19 = 0 asciitilde kana_WA kana_WO keycode 20 = minus equal kana_HO keycode 21 = asciicircum asciitilde kana_HE keycode 22 = BackSpace Terminate_Server keycode 23 = Tab ISO_Left_Tab keycode 24 = q Q kana_TA keycode 25 = w W kana_TE keycode 26 = e E kana_I kana_i keycode 27 = r R kana_SU keycode 28 = t T kana_KA keycode 29 = y Y kana_N keycode 30 = u U kana_NA keycode 31 = i I kana_NI keycode 32 = o O kana_RA keycode 33 = p P kana_SE keycode 34 = at grave voicedsound keycode 35 = bracketleft braceleft semivoicedsound kana_openingbracket keycode 36 = Return keycode 37 = Control_L keycode 38 = a A kana_CHI keycode 39 = s S kana_TO keycode 40 = d D kana_SHI keycode 41 = f F kana_HA keycode 42 = g G kana_KI keycode 43 = h H kana_KU keycode 44 = j J kana_MA keycode 45 = k K kana_NO keycode 46 = l L kana_RI keycode 47 = semicolon plus kana_RE keycode 48 = colon asterisk kana_KE keycode 49 = Zenkaku_Hankaku Kanji keycode 50 = Shift_L keycode 51 = bracketright braceright kana_MU kana_closingbracket keycode 52 = z Z kana_TSU kana_tsu keycode 53 = x X kana_SA keycode 54 = c C kana_SO keycode 55 = v V kana_HI keycode 56 = b B kana_KO keycode 57 = n N kana_MI keycode 58 = m M kana_MO keycode 59 = comma less kana_NE kana_comma keycode 60 = period greater kana_RU kana_fullstop keycode 61 = slash question kana_ME kana_conjunctive keycode 62 = Shift_R keycode 63 = KP_Multiply XF86ClearGrab keycode 64 = Alt_L Meta_L keycode 65 = space keycode 66 = Eisu_toggle Caps_Lock keycode 67 = F1 XF86_Switch_VT_1 keycode 68 = F2 XF86_Switch_VT_2 keycode 69 = F3 XF86_Switch_VT_3 keycode 70 = F4 XF86_Switch_VT_4 keycode 71 = F5 XF86_Switch_VT_5 keycode 72 = F6 XF86_Switch_VT_6 keycode 73 = F7 XF86_Switch_VT_7 keycode 74 = F8 XF86_Switch_VT_8 keycode 75 = F9 XF86_Switch_VT_9 keycode 76 = F10 XF86_Switch_VT_10 keycode 77 = Num_Lock PointerEnableKeys keycode 78 = Scroll_Lock keycode 79 = KP_Home KP_7 keycode 80 = KP_Up KP_8 keycode 81 = KP_Prior KP_9 keycode 82 = KP_Subtract XF86_Prev_VMode keycode 83 = KP_Left KP_4 keycode 84 = KP_Begin KP_5 keycode 85 = KP_Right KP_6 keycode 86 = KP_Add XF86_Next_VMode keycode 87 = KP_End KP_1 keycode 88 = KP_Down KP_2 keycode 89 = KP_Next KP_3 keycode 90 = KP_Insert KP_0 keycode 91 = KP_Delete KP_Decimal keycode 92 = Print Execute keycode 93 = Mode_switch keycode 94 = less greater bar brokenbar bar brokenbar keycode 95 = F11 XF86_Switch_VT_11 keycode 96 = F12 XF86_Switch_VT_12 keycode 97 = Home keycode 98 = Up keycode 99 = Prior keycode 100 = Left keycode 101 = keycode 102 = Right keycode 103 = End keycode 104 = Down keycode 105 = Next keycode 106 = Insert keycode 107 = Delete keycode 108 = KP_Enter keycode 109 = Control_R keycode 110 = Pause Break keycode 111 = Print Execute keycode 112 = KP_Divide XF86_Ungrab keycode 113 = Alt_R Meta_R keycode 114 = Pause Break keycode 115 = Super_L keycode 116 = Super_R keycode 117 = Menu keycode 118 = keycode 119 = keycode 120 = keycode 121 = keycode 122 = keycode 123 = keycode 124 = ISO_Level3_Shift keycode 125 = NoSymbol Alt_L keycode 126 = KP_Equal keycode 127 = NoSymbol Super_L keycode 128 = NoSymbol Hyper_L keycode 129 = Henkan_Mode Mode_switch keycode 130 = keycode 131 = Muhenkan keycode 132 = keycode 133 = backslash bar prolongedsound keycode 134 = keycode 135 = keycode 136 = keycode 137 = keycode 138 = keycode 139 = keycode 140 = keycode 141 = keycode 142 = keycode 143 = keycode 144 = keycode 145 = keycode 146 = keycode 147 = keycode 148 = keycode 149 = keycode 150 = keycode 151 = keycode 152 = keycode 153 = keycode 154 = keycode 155 = keycode 156 = NoSymbol Meta_L keycode 157 = keycode 158 = keycode 159 = keycode 160 = keycode 161 = keycode 162 = keycode 163 = keycode 164 = keycode 165 = keycode 166 = keycode 167 = keycode 168 = keycode 169 = keycode 170 = keycode 171 = keycode 172 = keycode 173 = keycode 174 = keycode 175 = keycode 176 = keycode 177 = keycode 178 = keycode 179 = keycode 180 = keycode 181 = keycode 182 = keycode 183 = keycode 184 = keycode 185 = keycode 186 = keycode 187 = keycode 188 = keycode 189 = keycode 190 = keycode 191 = keycode 192 = keycode 193 = keycode 194 = keycode 195 = keycode 196 = keycode 197 = keycode 198 = keycode 199 = keycode 200 = keycode 201 = keycode 202 = keycode 203 = keycode 204 = keycode 205 = keycode 206 = keycode 207 = keycode 208 = Hiragana_Katakana Romaji keycode 209 = keycode 210 = keycode 211 = backslash underscore kana_RO keycode 212 = keycode 213 = keycode 214 = keycode 215 = keycode 216 = keycode 217 = keycode 218 = keycode 219 = keycode 220 = keycode 221 = keycode 222 = keycode 223 = keycode 224 = keycode 225 = keycode 226 = keycode 227 = keycode 228 = keycode 229 = keycode 230 = keycode 231 = keycode 232 = keycode 233 = keycode 234 = keycode 235 = keycode 236 = keycode 237 = keycode 238 = keycode 239 = keycode 240 = keycode 241 = keycode 242 = keycode 243 = keycode 244 = keycode 245 = keycode 246 = keycode 247 = keycode 248 = keycode 249 = keycode 250 = keycode 251 = keycode 252 = keycode 253 = keycode 254 = keycode 255 =

LDAPサーバ構築 その2 - Sambaサーバとの連携 @ Debian etch

LDAP+SambaでPDCを構築する方法です。

# apt-get install samba-doc smbldap-tools

設定は基本的には/usr/share/doc/smbldap-tools/README.Debian.gzに書かれています。

LDAPのSamba用スキーマをインストールします。

# zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema

samba.schemaを/etc/ldap/slapd.confに追記します。

include       /etc/ldap/schema/samba.schema

性能向上のために、ldapのDBにインデックスをはります。同様にslapd.confに追記。

 index         uid,uidNumber,gidNumber,memberUid       eq index         cn,mail,surname,givenname               eq,subinitial

index sambaSID eq index sambaPrimaryGroupSID eq index sambaDomainName eq

パスワードへのアクセスを変更

 access to attribute=userPassword

 access to attrs=userPassword,sambaNTPassword,sambaLMPassword

に変更

で、LDAPサーバを再起動します。

# /etc/init.d/slapd restart

Sambaの設定です。 /etc/samba/smb.confのすでにある設定項目を変更

...

 passdb backend = ldapsam:ldap://127.0.0.1/

obey pam restrictions = no passwd program = /usr/sbin/smbldap-passwd %u passwd chat = Newpassword %n\n Retypenewpassword* %n\n

さらに以下をGlobalの最後に追記

 os level = 64preferred master = Yes

domain master = Yes

ldap suffix = dc=hoge,dc=net

ldap machine suffix = ou=Computers

ldap user suffix = ou=Users

ldap group suffix = ou=Groups

ldap admin dn = cn=admin,dc=hoge,dc=net

ldap passwd sync = Yes

ldap ssl = No

*all*authentication*tokens*updated*

add user script = /usr/sbin/smbldap-useradd -m "%u"

ldap delete dn = Yes

delete user script = /usr/sbin/smbldap-userdel "%u"

add machine script = /usr/sbin/smbldap-useradd -w "%u"

add group script = /usr/sbin/smbldap-groupadd -p "%g"

delete group script = /usr/sbin/smbldap-groupdel "%g"

add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"

delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"

set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"

#======================= Share Definitions =======================

次にsmbldap-toolsの設定。これはsambaのユーザ管理などのツールで、パスワードをUnixユーザと同期させたりできます。 まずは設定

# zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf
# cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/smbldap_bind.conf

/etc/smbldap-tools/にできたファイルを適宜変更します。 smbldap.confのSIDは

# net getlocalsid

コマンドで取得できます。(Sambaを起動しておく必要あり?) あと、ldapTLSは、今回はTLSを使用しないので"0"にします。 smbldap_bind.confにはadminのdnとパスワードを記述します。 最後に初期データ投入

# smbldap-populate -u 2000 -g 2000

-u -g でUID,GIDのスタート値を設定できます。 ユーザの追加は

# smbldap-useradd -a -N "hoge name" -u 2001 hogehoge

といった感じ

暗号化パスワードの生成

LDAPブラウザなどで直接ユーザのパスワードを変更したい場合、暗号化したパスワードが必要になるときがあります。

暗号化パスワードを生成したい場合は以下のようにして生成できます。

# slappasswd -h {CRYPT}

{CRYPT}は{md5}や{SMD5}などを指定。

このブログについて
プライバシーポリシー・お問い合わせ等
購読する(RSS)
記事検索
アーカイブ
カテゴリー
  • ライブドアブログ