zt日記

書いているのは Kazuhiro NISHIYAMA a.k.a. ZnZです。
2001|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|
2012|04|05|06|09|

この日記にはツッコミを入れられます。 ツッコミを入れたい日付をクリックすると、フォームが現れます。

xreaでtDiaryを使う方法はxrea.com で tDiary を使う方法インストールメモXREA + tDiary + Namazuをどうぞ。


2008年10月02日(Thu)

[ruby] Rubyist Magazine 0024 号

今回はほとんど手伝えませんでしたが、Rubyist Magazine 0024 号がリリースされています。


2008年10月04日(Sat)

[ruby] るびまゴルフ4

るびまがリリースされてすぐにるびまゴルフ 【第 4 回】を解いてみたのをまだ公開していなかったので公開。

まずは後者の方。単純に前者と同じようにするだけで8Bになるので、パーの9Bがどういうのを想定しているのかわからなかった。 次に「n が負でないことを仮定」して試行錯誤。 数式で何とか出来ないかと思ったら長くなったりもしたけど、最終的に6Bが2通り出来た。

  • 8B: n==0?2:1
  • 7B: n>0?2:1
  • 11B: (n+2)/(n+1)
  • 6B: 2+n%~n
  • 6B: 2+n/~n

次に前者の方。後者の2を1にしただけだと6Bにしかならなくて、IRCで4Bに出来るときいたので演算子一覧を眺めつつ試行錯誤して「>>」で4Bに出来た。

  • 6B: 1+n%~n
  • 6B: 1+n/~n
  • 4B: 1>>n

2008年10月06日(Mon)

コマンドラインからゴミ箱に捨てる

gnome-vfsでは~/.Trashなどにそのままファイルを入れていたが、gvfsになってDesktop Trash Can Specificationに従って、~/.local/share/Trash(や$XDG_DATA_HOME/Trash)や$mountpoint/.Trash/$uid(や$topdir/.Trash-$uid)が使われるようになり、元のパスや削除時刻も記録されるようになった。 詳細はtarsh-specを参照。

コマンドラインからの“ゴミ箱”操作を可能にするユーティリティ - SourceForge.JP Magazineのようなものを入れなくても、gvfs-binパッケージを入れるとgvfs-で始まるコマンド群がインストールされて、その中のgvfs-trashを使うとゴミ箱に捨てることができた。manはなく、「gvfs-trash --help」など「--help」オプションで使い方がわかる。 Ubuntu 8.04のGNOME 2.20のgvfsではtrash: への対応が中途半端なのか、「gvfs-ls trash:」はダメで、「gvfs-tree trash:」では中身が表示できた。

中身を操作したいときは「gvfs-open trash:」とか「gnome-open trash:」とかで nautilus を起動して操作するのが無難かもしれない。


2008年10月07日(Tue)

[debian] lennyでもビープ音を止める

ビープ音を止めるに書いたようにetchだとpcspkrモジュールを外せばよかったけれど、#494104によるとsnd_pcsp モジュール(snd-pcsp.ko)に変わってしまったようで、blacklistにはsnd_pcspを指定する必要があるようです。 pcspkr.koも残っているので、念のため両方書いておく方が確実な気がします。

% cat /etc/modprobe.d/local-blacklist
blacklist pcspkr
blacklist snd_pcsp
%

2008年10月15日(Wed)

[debian] etchでのbonding設定例

以前にbondingの設定をしたときのメモです。

基本的にはifenslave-2.6パッケージを入れて、/etc/modprobe.d以下にoptions設定を書いて、iface eth1などの代わりにiface bond0にslaves設定付きで普通のネットワーク設定を書くだけだったと思います。 比較用にeth1だけで使っていた時の設定をコメントに残しています。 eth0がなくてeth1とeth2になっているのは/etc/udev/rules.d/z25_persistent-net.rulesでずれたのを気にせずそのままにしていたからです。

以下メモからのコピー:

% cat /etc/modprobe.d/local-bonding
alias bond0 bonding
options bonding mode=1 miimon=100 downdelay=200 updelay=200
% cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

## The primary network interface
#allow-hotplug eth1
#iface eth1 inet static
#       address 192.168.0.46
#       netmask 255.255.255.0
#       network 192.168.0.0
#       broadcast 192.168.0.255
#       gateway 192.168.0.253
#       # dns-* options are implemented by the resolvconf package, if installed
#       dns-nameservers 192.168.0.1 192.168.0.254
#       dns-search example.jp

iface eth1 inet manual
iface eth2 inet manual
#noauto eth1 eth2
auto bond0
iface bond0 inet static
        address 192.168.0.46
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.253
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 192.168.0.1 192.168.0.254
        dns-search example.jp
        # bonding
        #up ifenslave bond0 eth1 eth2
        #down ifenslave -d bond0 eth1 eth2
        slaves eth1 eth2
%

「options bond0 mode=1 miimon=100 downdelay=200 updelay=200」はダメだった。 (bondingが1つならoptionsはbondingでもbond0でも同じ) (必要なら「probeall bond0 eth0 eth1 bonding」を追加する。)

「noauto eth1 eth2」はあってもなくても良い。 「auto eth1 eth2」はダメ。 eth1やeth2はmanual以外(例えばstatic)でもautoなどでupにならなければok。 「iface eth1」などがないとNetworkManagerがなにか設定しようとしてしまう。 「hwaddress ether XX:XX:XX:XX:XX:XX」や 「ifconfig bond0 hw ether XX:XX:XX:XX:XX:XX」は不要。


2008年10月24日(Fri)

[debian] udevとLDAP

LDAPが悪い訳じゃないけど、LDAPを使う設定にすると起動時のudevのところでなにやらメッセージが出てくる。

nss_initgroups_ignoreusersは意味がなかったので、#412989 - please add users and groups referenced by default udev configuration - Debian Bug report logsを参考にして以下のようにグループなどを追加した。 tssのところはadduserでグループも作成してくれた。

sudo addgroup --system scanner
# 謎
sudo addgroup --system nvram
# fuse-utils
sudo addgroup --system fuse
# kvm
sudo addgroup --system kvm
# libibverbs
sudo addgroup --system rdma

# trousers (0.3.1-7)のソースパッケージを参考にして、
sudo adduser --system --home /var/lib/tpm --shell /usr/sbin/nologin --no-create-home --group tss

[debian] smbldap-tools

sambaやopenldapの設定は基本的に/usr/share/doc/smbldap-tools/README.Debian.gzに書かれているので、ここでは省略。

[debian] libnss-ldap

/etc/nsswitch.confのpasswdとgroupとshadowの「compat」を「files ldap [UNAVAIL=return]」に変更。

passwd:         files ldap [UNAVAIL=return]
group:          files ldap [UNAVAIL=return]
shadow:         files ldap [UNAVAIL=return]

/etc/libnss-ldap.confにdebconfで設定された以外に「bind_policy soft」を設定。

[debian] libpam-ldap

/etc/pam_ldap.confにdebconfで設定された以外に「bind_policy soft」を設定。

以下の方針で/etc/pam.d/common-*を設定。

  • sufficientで打ち切ってしまうと@includeより後にある処理が実行されなくなるのでsufficientは使わない。
  • ローカルユーザ(/etc/passwdにあるユーザ)
    • pam_localuser.soを使ってpam_ldap.soやpam_mkhomedir.soをスキップ
    • pam_unix.soを使う
  • そうではないユーザ(LDAPのユーザや本当に存在しないユーザ)
    • pam_ldap.soでsuccess系なら、pam_unix.soをスキップ
    • pam_ldap.soでfail系なら、そこで終了(requisiteとほぼ同じ)
    • スキップだけだとokにならないようだったので、pam_permit.soでokに
  • パスワードについて
    • LDAPのユーザの場合
      • /usr/sbin/smbldap-passwdでもsamba passwordとUNIX passwordを変更できる
      • pam_smbpass.soだけだとsamba passwordしか変更できなかったので
      • pam_ldap.soでUNIX passwordを変更
    • ローカルユーザ
      • pam_unix.soで普通に/etc/passwd,/etc/shadowを変更
$ grep '^[^#]' /etc/pam.d/common-*
/etc/pam.d/common-account:account       [success=1 default=ignore]      pam_localuser.so
/etc/pam.d/common-account:account       [success=1 new_authtok_reqd=1 ignore=ignore default=die]        pam_ldap.so
/etc/pam.d/common-account:account       required        pam_unix.so
/etc/pam.d/common-account:account       required        pam_permit.so
/etc/pam.d/common-auth:auth     [success=1 default=ignore]      pam_localuser.so
/etc/pam.d/common-auth:auth     [success=1 new_authtok_reqd=1 ignore=ignore default=die]        pam_ldap.so
/etc/pam.d/common-auth:auth     required        pam_unix.so nullok_secure
/etc/pam.d/common-auth:auth     required        pam_permit.so
/etc/pam.d/common-password:password     [success=2 default=ignore]      pam_localuser.so
/etc/pam.d/common-password:password     required        pam_ldap.so
/etc/pam.d/common-password:password     [success=1 new_authtok_reqd=1 ignore=ignore default=die]        pam_smbpass.so use_authtok use_first_pass
/etc/pam.d/common-password:password     required        pam_unix.so nullok obscure md5
/etc/pam.d/common-password:password     required        pam_permit.so
/etc/pam.d/common-session:session       [success=2 default=ignore]      pam_localuser.so
/etc/pam.d/common-session:session       required        pam_mkhomedir.so skel=/etc/skel umask=0022
/etc/pam.d/common-session:session       optional        pam_ldap.so
/etc/pam.d/common-session:session       required        pam_unix.so
/etc/pam.d/common-session:session       optional        pam_tmpdir.so
$

[debian] Linux-PAM の Configuration file syntax

詳しくはConfiguration file syntax参照。

以下はrequired,requisite,sufficient,optionalなどが書いてある部分について。

  • 正式には「[value1=action1 value2=action2 ...]」という形式で書く。
  • valueNの部分は「success, open_err, symbol_err, service_err, system_err, buf_err, perm_denied, auth_err, cred_insufficient, authinfo_unavail, user_unknown, maxtries, new_authtok_reqd, acct_expired, session_err, cred_unavail, cred_expired, cred_err, no_module_data, conv_err, authtok_err, authtok_recover_err, authtok_lock_busy, authtok_disable_aging, try_again, ignore, abort, authtok_expired, module_unknown, bad_item, conv_again, incomplete, default」が使える。
    • どのモジュールがどのvalueを返すのかはドキュメントを見るか、ドキュメントに書いてなければソースをみる。
  • actionNの部分には「ignore, bad, die, ok, done, reset」または数字(次のいくつのモジュールをスキップするか)が使える。
    • ignoreは結果を無視して次のモジュールへ
    • badはfail状態にして次のモジュールへ
    • dieはfail状態で打ち切り
    • okはfail状態ならfail状態のままで、そうでなければsuccess状態にして次のモジュールへ(違うかも)
    • doneはokとほぼ同じで、次のモジュールへいかずに打ち切り
    • resetは状態を忘れて次のモジュールへ
    • 数字の場合は次のn個のモジュールを飛び越えてその次のモジュールへ(上の例だとpam_localuser.soがsuccessを返したらpam_ldap.soを飛び越えてpam_unix.soへ)
  • requiredなどは省略しないで書くと以下の意味
    • required = [success=ok new_authtok_reqd=ok ignore=ignore default=bad]
    • requisite = [success=ok new_authtok_reqd=ok ignore=ignore default=die]
    • sufficient = [success=done new_authtok_reqd=done default=ignore]
    • optional = [success=ok new_authtok_reqd=ok default=ignore]
本日のツッコミ(全2件) [ツッコミを入れる]

kou [ActiveSambaLdapじゃないんですか!?]

znz [ActiveSambaLdapよりもsmbldap-toolsの方がdescriptionがちゃんと書かれていたり、..]


2008年10月27日(Mon)

[ruby] redmineのpdf

PDFで文字化けについて - Redmine Users (japanese) のパッチで直るということで当てようとしたら改行の問題でうまく当たらなかったので、手パッチしてdiffを取り直してgist: 20016 ― GitHubにおいてみた。


copyright © 2001-2013 ZnZ
Key fingerprint = 6E14 2C9C DBD7 874D 8B3C CAA8 9B58 5538 ED7E 1B73