Category Archives: ソフトウェア

Permalink to single post

NFSサーバーで許可されたグループなのになぜかAccess Deniedになる

NFSでマウントしたディレクトリににたいして、許可されたグループのメンバーからアクセスしてもAccess Deniedされて若干ハマった。
状態としては以下のような感じ。

### 状態確認
$ pwd
 (NFSマウントされているの場所)
$ ls -lah
合計 29K
drwxrwxrwx 3 good-group good-group   7 10月  7 11:00 .
drwxrwx--- 7 hoge       good-group   7  6月  9 12:00 ..
-rw-rw-rw- 1 hoge       good-group  15K 10月  1 00:00 test-good.txt
$ id
uid=1000(fuga) gid=1000(fuga) groups=1000(fuga),10(wheel),14(uucp),18(audio),19(cdrom),27(video),35(games),80(cdrw),85(usb),100(users),250(portage),973(vboxusers),993(pulse),998(plugdev),1000(fuga),1011(bbb),5001(ccc),5002(ddd),5003(eee),5004(good-group)

### アクセスしてみる
$ cat test-good.txt
cat: test-good.ods: 許可がありません

### NFS以外はOK
$ cat /home/taka/test-home.txt
This is a test file.

(ちなこにここで、idで出てくるグループ数が多いのがミソだった)

クライアントでもメンバーだし、サーバー側でもメンバーになっている。

どうにも分からんし、ググってもピンとこない (というかそもそもどうググればいいか、キーワードが分からん) ので、NFSが読めるわけではないがWiresharkさんなら解読してくれるだろうとの願いで、とりあえずキャプってみる。

WiresharkでNFSをキャプチャしてみたところ

WiresharkでNFSをキャプチャしてみたところ

なんか Auxiliary GIDs で所属グループIDのリストを送ってるっぽいですが、後半が省かれてますね。16個までしか送られてない。なんか個数的にもこれはどっかの制限で切られている予感。

ちなみにそもそもLinuxユーザーとかのレベルのアクセス制御は全部クライアントでやってると思ってたので、リストを送ってたりすること自体知らなかった。。。 (この問題に遭遇した時に若干もしやという気もしたけど)

これらのヒントを元に調べた所だと、どうやらグループ数が16を越えると上手く動かないケースがあるようで。

Solving the NFS 16-Group Limit Problem

この記事によると、

  • NFS側で対処できることはなくて、auth_sys? (というかプロトコル自体?) の問題。NFSv4にしたってダメだよ
  • ファイルシステムでもどうしようもない
  • auth_sysをチューンする方法もないよ

(ただし2011年の記事なので状況が変わってるかも)

ということで、 rpc.mountd の –manage-gids オプションを使ってサーバー側でGroup IDを管理する方法がベストの方法として取り上げられている。

が、ちょっとサーバがFreeBSD (というかFreeNAS) で、どこいじれば正攻法なのかパッと分からんので、とりあえず一旦グループ数を減らす方向でトライ。

### 状態確認
$ pwd
 (NFSマウントされているの場所)
$ ls -lah
合計 29K
drwxrwxrwx 3 good-group good-group   7 10月  7 11:00 .
drwxrwx--- 7 hoge       good-group   7  6月  9 12:00 ..
-rw-rw-rw- 1 hoge       good-group  15K 10月  1 00:00 test-good.txt
$ id
uid=1000(fuga) gid=1000(fuga) groups=1000(fuga),10(wheel),14(uucp),18(audio),27(video),35(games),85(usb),100(users),973(vboxusers),998(plugdev),1000(fuga),1011(bbb),5002(ddd),5003(eee),5004(good-group)

$ cat test-good.txt
This is a test file.

とりあえずうまくいった。

Permalink to single post

Livestreamer改修

Livestreamerをちょっと改修。Livestationを視聴するときのための機能追加しました。

あとGitHubからPull Request出したこと無かったので軽くメモもつくったけど俺しか役立たねぇなこれ。

Permalink to single post

セキュリティ&プログラミングキャンプ2011に参加しました

今年もセキュリティ&プログラミングキャンプ (2011)に、後半3日間だけですが特別チューターとして参加しました。

僕は2004年(第一回)のセキュリティコース参加者だったのですが、前年と同様プログラミングコースに関わることになりました。しかもなぜか「特別チューター」という肩書きに。僕はレベル的にはチューターと同じですよ。

ちなみにチューターのお仕事としては、Rubyの実行の可視化をしていたお二方のサポートを主にしていました。

今年のキャンプも例年どおりの奇人変人具合でした。毎年レベルが上がっているというのもあるかもしれませんが、なんか毎年幅が広がっている気もします。

BASICという以前からの王道から始まり突っ走る人、いろいろWebアプリとか作ってる人、実装よりも計算理論面からせめてる人もいる。今年はAndroidやってるところもあったと思います。毎年いろんな方がいるけど、それ幅が広くなっている気がします。まぁそもそもコンピュータの世界が広がっているっていう部分もあるんでしょうね。

あと今年の印象としては

  • 謎のGentooブーム
  • 謎のRedbullブーム

こんな感じです。とりあえず参加者の皆様のプレゼンも (笑える、興味深いの両方の意味で) おもしろかったし、いろんな人と今年もお話しすることができてとても楽しかったです。

個人的に悔やまれる点としては

  • 自分がじぇん厨なのでGentooブームにもっと乗っかれば良かった
    • 前半の2日間にいなかったのが災いしたか
  • スナガラボの売り込みをもっとしまくれば良かった
    • というか名刺作った量がそもそも少なすぎた

まぁこんな感じです。

そういうわけで、今後ともスナガラボ株式会社と須永をよろしくお願いします。

各種情報へのポインタ (自分のためにも今後追加します。。。)

http://d.hatena.ne.jp/nishiohirokazu/
Permalink to single post

RubyKaigi2011で発表しましたよ

Rubyで使えるリアルタイムプロファイラって題目で発表しました。とはいえ実態はPythonのほうが(ry

何だかんだで言いたいことは言えたし、Pythonのところで狙いどおりウケてくれたので、よしといった感じでしょうか。

実際に使っている方もいらっしゃってそれはうれしかったです。

公開場所→sunagae.netのllprofページ

取り上げていただいたサイト

とかを自己満のためリストする。(順不同)

デモ動画

これだけみてもなかなか分かりませんが・・・

Permalink to single post

軽量言語向けプロファイラ

とってもいまさらではありますが、研究で作っていたプロファイラの公開をしました。
MIT-Licenceです。

http://sunagae.net/software/llprof

リアルタイムに取れる+CCT(コールツリー)でとれる、しかもruby-profよりも速いっぽい、というやつです。

まだまだ使い物にはなりませんが。。。

Permalink to single post

gobby5 日本語化

以前、gobby5の日本語環境でのバグ修正(gobby numerical ID patch)をしたりしたけど、また最近いろいろいじったついでにgobbyの日本語化したよ。poファイル送ったら採用してもらえたみたいです。

ちなみにgobbyってのは共同作業でテキストを編集できるソフトです。

なんだかんだで日本語じゃないと使うのにハードルがあるようなので。。。

それにしてもGoogle Docsなんかも共同作業で編集できるみたいだけど、あんま使ってる人が(少なくともまわりには)いないのはなんだろう。そんなにニーズないのかな。

まぁ実際使えるかどうかはともかく、なんとなく面白いソフトです。

gobby4系はアンドゥとかできなかったりして不便だったけど、5系からはできるようになったので結構実用的かと。

参考: gobby – http://gobby.0x539.de/trac/

Permalink to single post

kdenliveが微妙に調子悪かった→jackが原因?

問題

  • Kdenliveを使用中、再生(playback)時に、音と動画が微妙にずれている。さらに、音が途切れ途切れに聞こえる。

とりあえずの解決法

  • Jackをアンインストール

動画編集にはkdenliveというソフトを使ったりしているのですが、最近久々に動画編集する機会があり、いじってみると再生時に不具合がおこって困った。

微妙に音が途切れ途切れになり、ノイズが乗るっていうか、うーん、うまく説明できないけど、なんとなくCPU速度が足りなくてエンコードが間に合わず音が途切れ途切れになるような感じというか。。。あの、USBオーディオで高負荷時に再生したときの感じっていえば分かる人にはわかるか。まぁ大体そんな感じ。

というか、そもそも動画と音声が微妙にずれてる気もする。

Kdenliveというソフトウェアは、MLT Frameworkをつかっているようです。詳しくは知らないですが、動画編集ソフトのためのフレームワークらしいです。どうもこいつが悪さをしてるっぽい。meltというMLTのプレイヤーでいろいろ動画を再生してみたら同様の症状が出たので間違いない。

そこまでは良かったものの、そこからよく分からずいろいろ探って3日ぐらい費やしてしまった。。。

試してみたこと(ちなみにGentoo Linux上です)

  • MLTの再インストール
  • Kdenliveの再インストール
  • MLTのuseフラグを全部無効にしたり、全部有効にしたり。。。
  • ググって出てきた「export MLT_NORMALISATION=NTSC」を試してみたり、MLT_PROFILEを色々かえてみたりした
  • PCについているUsbオーディオ機器を外してみた
  • .asoundrcを消してみた

これらは全部ダメでした。そして結局のところ、Jackが悪さをしているらしいことが判明。

結構最近skype使い始めて、オーディオのソフトウェアミックスができたりしたら便利だな、とおもってJackを導入してみていた。まぁ結果として使いこなせなかったけど。。。

ということで、/etc/make.confからUSE=jackを削除して、

  • emerge -avuD –newuse world
  • emerge -C jack-audio-connection-kit jack

そして再起動したらうまく動くようになった。

これがどういう関係で原因になったのかは探っていないし、jackが原因なのか分からないけど、とりあえず使えるようになったからよし。

choppy
Permalink to single post

LDAPいじり

LDAPを導入してから、結構それをいじる機会が増えてきた。

最初はLDAPとかいってまじいみわかんねーとか思ってたけど、触っているうちにだんだんなれてきた。とりあえず最近はou=Groups,dc=sunaga-lab,dc=netとかやたら長いDNうつたびに自分に恍惚とする。こんな長いDN覚えてうってるんだぜすげえだろ的な。・・・はいはい。重傷ですよすいません。

とりあえずphpLDAPAdminが未だにうまく使いこなせない。どうにかしたい。

Wikiとかblogとかいろいろ統一できつつあるんだけど、でもLinuxのユーザー認証まではやっぱりなかなかできない。既に何度かやって、その度にものすごく痛い目にあっている。

という前置きで、今日もLDAPをいじっていたのですが、グループ制御の部分で引っかかったので、自分用メモ。

LDAPの基本設定

AuthType Basic
AuthName “LDAP Auth”
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off
AuthLDAPURL ldap://*****.net/ou=People,dc=*****,dc=net

グループ制御:

Require ldap-group cn=(gropuname),ou=Groups,dc=*****,dc=net

こんなかんじ。たぶんあってる。

なんかググったりすると、「require group (DN)」って感じのところが結構引っかかるけど、Apache 2.2からはそうじゃなくて、ldap-groupに変わったみたい。ここで結構sunagaeはひっかかりかました。

あといいソフト見つけた。phpLdapPasswdってやつ。LDAPユーザーのパスワードをWebから変更できるっぽ。

自分で作ろうかと思ってたけど、あるならこれつかえばいいか。ifが英語だけど、まぁ身内しかつかわんし。。。

まぁでも結局、気にくわなくなって自分で作りそうな気もする。。。

Permalink to single post

svnで更新するwikiサービス

  • ドキュメントの記述には、wikitextとか、xml+xsltとかが使える
  • 共通スタイルの制御
  • ファイルシステム直接変更する。FUSEとか使いたい。。。
  • subversionでドキュメントの変更をコミットして、それをサーブするWebサーバー

ができるやつがあったらいいなーと思った。

院試が終わったら、sunaga-labに作りたい。。。

Permalink to single post

gallery2 and MediaWiki

gallery2再配置

gallery2(本家サイト)という、とても出来が良いWebアルバムシステムがある。それをsunaga-labに設置してあったんだけど、すこぶる調子が悪い。

大量の写真を操作した後、削除しようとするとロックのエラーがでる。

Error (ERROR_LOCK_REQUIRED)

*in modules/core/classes/GalleryFileSystemEntity.class at line 260 (GalleryCoreApi::error)
*in modules/core/classes/GalleryItem.class at line 327 (GalleryFileSystemEntity::delete)
*in modules/core/classes/GalleryDataItem.class at line 236 (GalleryItem::delete)
* in modules/core/classes/helpers/GalleryEntityHelper_medium.class at line 113 (GalleryDataItem::delete)
* in modules/core/classes/GalleryCoreApi.class at line 2271 (GalleryEntityHelper_medium::deleteEntityById)
* in modules/core/classes/GalleryItem.class at line 307 (GalleryCoreApi::deleteEntityById)
* in modules/core/classes/GalleryAlbumItem.class at line 260 (GalleryItem::delete)
* in modules/core/classes/helpers/GalleryEntityHelper_medium.class at line 113 (GalleryAlbumItem::delete)
* in modules/core/classes/GalleryCoreApi.class at line 2271 (GalleryEntityHelper_medium::deleteEntityById)
* in modules/core/ItemDelete.inc at line 79 (GalleryCoreApi::deleteEntityById)
* in main.php at line 231 (ItemDeleteController::handleRequest)
* in main.php at line 94
* in main.php at line 83

こんな具合。

ということで「gallery2 ERROR_LOCK_REQUIRED」でググってみると公式のフォーラムにヒット(ヒットしたページへ)。そこには

If you need a quick fix, try switching to ‘Database’ on ‘Site Admin’ -> ‘Lock System’

と書いてあった。ということで、ロック(管理画面→全般→ページ内にある’ロックシステム’の項目)をデータベースにしてみたら、すんなり動いた。パフォーマンスが落ちるとも書いてあったが、あんまし気にならないし調子がいいのでとりあえずこれでいいか。

gallery2 with MediaWiki

Gallery2の出来がいいので、sunaga-labの画像管理を全部Gallery2にしてしまいたい。それを実現するっぽいMediaWikiのextensionはいくつかあるのだが、微妙に僕にとっては使い辛い。

なので新しく作成中。あらかた完成。

ちゃんと完成したら、英語のドキュメントつけて本家に送りつけるか。

あとWordPressとの統合もちゃんとやりたいけど、こっちはニーズを満たした拡張が既にあるかもしれない。。。

ToDo: LDAP

いろいろあるアカウントを統合したいのでOpenLDAPでディレクトリサービスを構築したい。

  • www.sunaga-lab.net(MediaWiki)
  • sunagae.net(WordPress)
  • webアルバム(Gallery2)
  • レポジトリ管理(Subversion)
  • Apacheアクセス制御
  • UNIXユーザー×4台
  • Windows Serverユーザー×2台(これは統合無理か?)

この辺のアカウントとかアクセス情報を統合したい。あとパスワードとかアカウント登録とかのWebインターフェイスも欲しい。

以前、アカウントの統合にOpenIDを使ってみた(多分sunagae.netにもその残骸が・・・)のだけど、激しく使えない。なにより認証が面倒だし、IDも長ったらしいし、細かいところが不自由。

ということで、OpenLDAPを使ってしまって、内部的にだけアカウントを統合しようという作戦。

だが、OpenLDAP自体が難しそうな上(はるか昔に挫折した記憶が)、激しく時間が足りない。というか院試の勉強せねば。

Permalink to single post

gobby numerical ID patch

gobbyっていうテキストが共同編集できるそふとがあります。結構触ってて面白かったり、実用できないかなぁと思ったり。

ということを数年前から思っていたんだけど、実際、今まであまり実用できるものではなかった。なぜなら、Undo機能がなかったから。

しかし、最近のバージョンアップでUndo機能が使えるようになった上に、完全なC/Sモデルに移行したっぽいので、より使いやすくなっている。

でもやっぱりまだ開発版なので幾分不安定。特に日本語環境に対する対応があまりなされていないようだ。日本語のローカライズも出来てないし、あとは日本語環境に起因する、buggyな部分があったりする。ということで、早いうちに日本語環境に馴染むように積極的に開発に参加しようとかなんとか思ってます。

で、sunagaeが送ったパッチの第一段が採用されたので、とりあえず仕事の記録。

次はja.poファイルと、あとVista環境でいくらか発生する、接続時のバグの対処や。。。