MacのsambaをLinuxでマウントしたら、濁点と半濁点が文字化けした。んで、その時の対応策。Windows7では化けなかった。
Mac側のsmb.confで
unix charset=UTF-8-MAC
を指定する。UTF-8-MACは、Appleがiconvを拡張した物らしいので、Mac以外でlibiconvを使っているソフトでは使えないらしい。
Linux側の/etc/fstabで
iocharset=utf8
を指定する。
MacのsambaをLinuxでマウントしたら、濁点と半濁点が文字化けした。んで、その時の対応策。Windows7では化けなかった。
Mac側のsmb.confで
unix charset=UTF-8-MAC
を指定する。UTF-8-MACは、Appleがiconvを拡張した物らしいので、Mac以外でlibiconvを使っているソフトでは使えないらしい。
Linux側の/etc/fstabで
iocharset=utf8
を指定する。
CentOS 6.0をアップデートしたらLDAPで認証されるユーザが存在しないことになってた。
ただ今回のアップデートはyum updateで一括してアップデートしてしまったのでOpenLDAPのアップデートでそうなったのかOS本体のアップデートでそうなったのかちょっと区別が付かなかった。
CentOSの場合、以下のファイルがLDAP認証に関わってくる
これらのファイルの内、アップデートによりデフォルトのものに書き換えられたものがある様子。
shell> id hogetan id: hogetan: No such user shell> grep LDAP /etc/sysconfig/authconfig USELDAPAUTH=no # この行をyesに変更しなければならない。アップデートでnoになってしまった様子。 USELDAP=yes shell> tail /var/log/messages Dec 19 11:39:37 clinton nslcd[1861]: [7b23c6] failed to bind to LDAP server <a href="ldaps://192.168.1.1/">ldaps://192.168.1.1/</a>: Can't contact LDAP server: Operation now in progress Dec 19 11:39:37 clinton nslcd[1861]: [7b23c6] failed to bind to LDAP server <a href="ldaps://192.168.1.1/">ldaps://192.168.1.1/</a>: Can't contact LDAP server: Operation now in progress Dec 19 11:39:37 clinton nslcd[1861]: [7b23c6] no available LDAP server found Dec 19 11:39:37 clinton nslcd[1861]: [7b23c6] no available LDAP server found
この段階、authconfigでUSELDAPAUTHをyesにするだけでは通らず。調べるとどうやらred hat系はauthconfig-tuiというツールを利用する、とどこぞで言われてみた。autuconfig-tuiは対話式のコンフィグツールらしい。起動してそのままのオプションで次へ、OKと押していく。でもダメだ。
調べると /etc/nslcd.conf も書き換わっていた。いらない行をコメントアウト。最後にnslcdを再起動してうまく行けた!
shell> more /etc/nslcd.conf ldap_version 3 TLS_REQCERT never uri ldaps://192.168.84.67/ ldaps://192.168.84.68/ base dc=l3tp,dc=org #ssl no # この行が勝手に追加されてたのでコメントアウト #tls_cacertdir /etc/openldap/cacerts # この行が勝手に追加されてたのでコメントアウト shell> service nslcd restart shell> id hogetan uid=1001(hogetan) gid=1001(hogetan)
完璧。
FreeBSDで過去に作成したファイルにおいて、LanguageDetectがインストールされていないホストで実行したためエラーで怒られた。
shell> php hoge.php PHP Warning: require_once(Text/LanguageDetect.php): failed to open stream: No such file or directory in /home/hoge/tmp/hoge.php on line 8 Warning: require_once(Text/LanguageDetect.php): failed to open stream: No such file or directory in /home/hoge/tmp/hoge.php on line 8
いつもだとさっくりportsでインストールするんだけれど、このLanguageDetectはalpha版のためかportsには登録されてない。手動でpearからインストールする。
shell> sudo pear search Language Retrieving data...0% MATCHED PACKAGES, CHANNEL PEAR.PHP.NET: ======================================= PACKAGE STABLE/(LATEST) LOCAL Text_LanguageDetect 0.2.3 (alpha) Language detection class shell> sudo pear install Text_LanguageDetect Failed to download pear/Text_LanguageDetect within preferred state "stable", latest release is version 0.2.3, stability "alpha", use "channel://pear.php.net/Text_LanguageDetect-0.2.3" to install install failed shell> sudo pear install channel://pear.php.net/Text_LanguageDetect-0.2.3 downloading Text_LanguageDetect-0.2.3.tgz ... Starting to download Text_LanguageDetect-0.2.3.tgz (120,947 bytes) ..........................done: 120,947 bytes install ok: channel://pear.php.net/Text_LanguageDetect-0.2.3
と言うわけで、最終的にはインストールするために “pear install channel://pear.php.net/Text_LanguageDetect-0.2.3” を指定すればおkだった。
LDAPのクライアントになってユーザ認証を行っているホストにsshでコマンドを流したら怒られた。
shell> ssh host command WARNING: Your password has expired. Password change required but no TTY available.
エラーの内容からすると、”あなたのパスワードは期限が切れています。そしてパスワードの変更をしたいけれど、プロンプトがないからできません”となっている。
確かにsshでコマンドを直接流しているのでTTYがない。なのでパスワード変更ができない。他の方法でTTYが存在するログインをしてみた。
shell> login login: hogetan Old Password: New Password: Retype New Password:
こっちでは正常にパスワードの変更を求められた。さてココで、古いパスワードを入力し新しいパスワードを入力し、パスワードの変更を正常に行った、かに見えたんだけれど、再度ログインすると同様にパスワードの変更を求められる。
コレはおかしいぞ、ということでちょっと調べてみた。
FreeBSD 8.2でも 9.0-RC3でも同じだけど、NFSでマウントされたホームディレクトリで、zshをログインシェルにしていて、zshの設定でcompinitをしていると、ログインがめちゃくちゃ遅い。ログアウトも遅い。
あまりスマートじゃないかもしれないけど、NFSがいかんのならローカルにzshのファイル置けばいいじゃない。と
.zshrcに以下の6行を書き加えてみた。
autoload -U compinit
if [ "$OSTYPE" = "linux*" ]; then
compinit -d ~/.zcompdump_${HOST}
else
compinit -d /usr/home/$USER/.zcompdump
fi
保存先のディレクトリは作っておかないといけないけど、別になくてもログインできなくなったりはしないっぽい。
現在、メールのMTAとしてcourierを利用している。courierさんはメールを配送する際、aliasというメールアドレスに別名を付ける仕組みを持っている。
この仕組みがあると仮想的にメールアドレスを増やせたりして結構便利だったり。もともとsendmailにあったものをそのまま引き継いでいるような。
で、このaliasを利用するにはちょっと一癖ある。
現在、いくつかのホストでは監視用にメールを飛ばすようにしてる。これってsmtpでメールサーバを立てて・・・、って訳ではなく、各ホストのsendmailがmailコマンドでメールを投げてくる、という簡単なものだ。
先日メールサーバを移行したのだけれど、このタイミングであるホストからのメールが来なくなった。送りたいメールはローカルのドメイン宛てで、送りたいプログラムはcactiのアラートメール。phpのmailコマンドを呼んでいると思われるのでシステムのmailコマンドを利用しているような気がしてる。
まずはDNSでの名前解決を当たった。というのも、移行された旧メールサーバこそがこのメールが送れなくなったホストであり、ついでにDNSの機能まで積んでいたものだから、そこのMXレコードあたりの参照が出来なくなったんだろう、っていう予測を。
でもMXレコードでローカルのドメインを引いてもちゃんと引けてる。こまったなぁ。
最近ちまたで流行のzshというものに乗ってみた。もう町行く人々みんなzshらしい。これは流行に乗らねば、ってことで2011年、ようやくzshへの移行を決めてみた。
多くのLinuxではデフォルトのシェルとしてbashが採用されている。自分もLinux環境ではデフォルトはbashだ。
bashといえばあまりよい思い出はなかったりする。初めて触った*nixの当時のSolarisではbashは補完機能、コマンドヒストリなどを持たないsh並のシェルだった。間違ってbashに入ってしまって面倒だなぁとか思っていた。bashでスクリプトが書いてあると、ただでさえシェルスクリプトが書けないのにwhileとか書き方が違くて混乱してみたり。今や高級なシェルとしてLinuxで普及している。時代は流れたんだね。
さて、FreeBSDではデフォルト、ではないけどデフォルトでインストールされているtcshが多かったり。zshもbashも後から入れなきゃダメ。
普通の環境でzshを利用したい場合、インストールして、passwd書き換えて~、ってなるだろう。そうすれログインすればzshを使える。でもわしの環境はダメ。
CentOSを導入してみた。で、LDAPの設定をして、SSHで接続しようと思ったんだけど遅い、遅すぐる・・・!
どこが遅いのかというと、SSHで接続に行ってパスワードの入力を促されるまでに10秒ほど待たされる。コレは参った。
で、SSHの応答が遅い –> サーバでDNSの逆引きを疑え! という格言がある通り(わしが言った!)、まずココを疑う。
対象のホストでDNSで逆引きしてみる。ちゃんとうまくいく・・・。
ついでに色々とログインしてみたら、公開鍵での認証は早いみたい。どうやらパスワードの認証だけがやたらめったら遅いらしい。