2013-03-17

[sudo] 任意の UID と GID を指定してコマンドを実行する

オプション -u, -g を接頭辞 # を付けて使うと passwd に存在しない任意の UID, GID を設定してコマンドを実行できますが、なぜかデフォルトでは -g が上手く動きません。

$ sudo -u#123 id
uid=123 gid=0(root) groups=0(root)

$ sudo -u#123 -g#456 id
Sorry, user USERNAME is not allowed to execute '/usr/bin/id' as #123:#456 on SOMEHOST.

/etc/sudoers の許可エントリを以下のように任意の GID を指定できるように少し直す必要があります。

$ sudo visudo

# admin ALL=(ALL) ALL
admin ALL=(ALL:ALL) ALL

この設定を行うと上手く動きます。

$ sudo -u#123 -g#456 id
uid=123 gid=456 groups=456

参考
man sudoers

クロネコヤマト問い合わせ番号が FedEx になる

Google 検索でクロネコヤマトの荷物問い合わせを行う機能では、クロネコヤマトと FedEx をチェックサムの計算方法が違うことからほぼ区別できるようです。しかしたまに衝突し、ヤマトなのに FedEx と認識されたりします。

その場合は「ヤマト 111122223333」と明示すると上手く調べることができるようです。

参考
ヤマト運輸のチェックデジットの算出方法 - Yahoo!知恵袋
java - Fedex checksum algorithm for tracking numbers? - Stack Overflow

NFS サーバーの設定 /etc/exports の優先順について

NFS サーバーは設定ファイル /etc/exports に記述した順ではなく、このファイルが読み込まれた後、内部でソートされた後の順序でリクエストを処理するようです。ソート後の状況は、

$ exportfs -v

で確認できます。

このソートの具体的な動作は、対象マシンのスコープの小さい順 (man exports の Machine Name Formats の順: single host, netgroups, wildcards, IP networks)、それで同順ならパスの深い順となっているように見えます。

[platex] 本文を overfull ではなく underfull させる

pLaTex を使って日本語・英語論文を書くときに、紙面を突き破る overfull ではなく、文字間を広げて誤魔化す underfull にして穏便に済ませるには TeX に対して以下のパラメータを設定します。

ハイフネーション (ハイフンで区切って次行に送る) を使わないで undefull を強制するには、

\pretolerance=10000
\emergencystretch=.9\hsize

ハイフネーションを許可するなら tolerance を緩和し pretolerance を設定せずデフォルト値を使ってみては?

\tolerance=10000
\emergencystretch=.9\hsize

もしくは tolerance に加えて hfuzz, vfuzz を緩和することも追加する動作をする sloppy で良いようです。

\sloppy
\emergencystretch=.9\hsize

行送り処理は三段階あって、ハイフネーションを許可しない pretolerance、ハイフネーションを許可する tolerance、文字間を広げて誤魔化す emergencystretch です。前二段階は試行錯誤の結果 Badness を設定した閾値以下に収めることができたときは成功とし残りの処理を行いません。

コンパイル時の警告の内、Badness が大きいものは個別に対処したほうがよいかもしれません。

参考
TeX/pretolerance
GNU Texinfo 5.1: Overfull hboxes
TeX Frequently Asked Questions -- question label "overfull"