2020-01-07-01-fistのプライベートデータとスクリプトの問題 - project-enigma

2020-01-07-01-fistのプライベートデータとスクリプトの問題

>> Site top >> weblog >> 月別アーカイブ >> 2020年01月のlog >> 2020-01-07-01-fistのプライベートデータとスクリプトの問題

最終更新日付:2020/01/07 01:00:00


fistのプライベートデータとスクリプトの問題

2020 年 01 月 07 日

fist のデータには「プライベート」フラグというフィールドがある。これは fist のモデルになった Palm OS にもあった概念で、このフラグが設定されたデータはマスク表示されたり非表示になったり、内容へのアクセスにはパスワード認証が伴ったりする。これが、fist のスクリプト周辺で問題になっていてどうしよう、という話。

fist には private コマンドというのがあって、「プライベートデータ」の表示に関する全体のモードを Show, Mask, Hide のいずれかに設定できる。他のすべてのコマンドは、プライベートデータを扱う際にはこの設定に従う。例えば ls がデータの一覧を表示する場合、設定にしたがって以下の挙動を取る。

その他多くのコマンドでは、(show 設定以外の時に)プライベートデータにアクセスしようとするとパスワードによる認証を求められる。これら全ては fist のモデルになった Palm OS の挙動を基にしており、特に驚くような点はないと思う。

問題は、fist にはスクリプトによる自動化があるということだ。大量のデータを処理するスクリプトの実行中、プライベートデータに遭遇する度に何度もパスワード入力させられるのは困る。かといって、そのようなスクリプトを実行する度に private コマンドで「全表示」設定に切り替えるのも何か間違っている。ひとまずの対処としては、そのスクリプトの内部で以下のようにすれば回避できる。

BKUP='private'
private show
 
# ここでメインの処理を実行
 
private $BKUP

元々 show 設定になっていれば事実上何もしないし、最大でもパスワード入力を1回すれば済む。理不尽に何度も入力させられることはなくなるわけだ。

しかし、これだけでは話は終わらない。fist にはいくつかの局面で「自動実行」されるスクリプトがあり、そこでも同じ問題が起きる。中でも「編集/閲覧ファイル名生成スクリプト」は、edit / view コマンドが作成するファイル名を決めるために実行されるので、show 設定以外でプライベートデータを扱う場合には間違いなくパスワード認証が必要になる。これは、プライベートデータに対して edit / view コマンドをかけた時点で発生するパスワード認証とは別の話だ。そして、ファイル名生成スクリプトが対象データの複数のフィールドにアクセスする場合、その回数だけパスワード認証は実行される。結局のところ、スクリプトはコマンドの羅列でしかないからだ(制御構造みたいなものはあるにせよ)。先ほどの、スクリプト内で一時的に private show する方法でも、2回認証が発生してしまう。これはうまくない。

さらに、Guile スクリプトでも問題がある。そもそもの問題として、Guile は現状でプライベートデータに関連するフィールドや設定を完全に無視する。だから、guile スクリプトを作成して実行すれば、mask / hide 設定でもアクセスし放題になってしまうのだ。まぁこれは別件なのだけれど、もし「ちゃんと」認証をするようになったら、今度は前述の複数回認証の問題が発生する。

そんなこんなで、これらの問題をなんとかしようとしている最中。

 

コメント

このページにコメントする

 

このページのタグ

Page tag : fist

 

 


Copyright(C) 2005-2020 project-enigma.
Generated by CL-PREFAB.