Monthly Archives: 8月 2014

[FreeBSD][メモ] pkg 1.3.7による問答無用の全パッケージ再インストールを避けるには

Pocket

pkgを1.3.7にアップグレードすると、インストール済み全パッケージの再インストールが求められる。
この回避方法について示す。

そもそも、なんでそんな事になっているかというと。
端的に言って、パッケージシステムでのshared libraryの扱いに難があったため、1.3.7でキッチリ修正したのだと。
その影響で、何も知らずにパッケージをアップグレードしようとすると、「shared libraryに変更があったため」と全パッケージを再インストールしようとしてしまう。

もちろん、別に全部再インストールしたって問題ないわけだが、帯域も時間も電気ももったいないので、再インストールを必要最低限に止める方法が公儀から発表された次第である。

詳細は以下をご覧あれ。

http://lists.freebsd.org/pipermail/freebsd-ports-announce/2014-August/000086.html

手順1.なにはともあれpkgを1.3.7に

2014/8/28現在である。

$ sudo pkg update
Updating repository catalogue
Fetching meta.txz: 100% of 944 B
Fetching digests.txz: 100% of 2 MB
Fetching packagesite.txz: 100% of 5 MB
Removing expired entries: 100%
Adding new entries: 100%
Incremental update completed, 23466 packages processed:
23297 packages updated, 133 removed and 76 added.

$ pkg version -vRL=|grep pkg
pkg-1.3.6                          <   needs updating (remote has 1.3.7)

キター。
さっそくpkgをアップグレードする。

$ sudo pkg upgrade pkg
パスワード:
Updating repository catalogue
Fetching meta.txz: 100% of 944 B
Fetching digests.txz: 100% of 2 MB
Fetching packagesite.txz: 100% of 5 MB

Incremental update completed, 23466 packages processed:
0 packages updated, 0 removed and 0 added.

New version of pkg detected; it needs to be installed first.
The following 1 packages will be affected (of 0 checked):

Installed packages to be UPGRADED:
        pkg: 1.3.6 -> 1.3.7

The process will require 9 KB more space
2 MB to be downloaded

Proceed with this action [y/N]:y

Fetching pkg-1.3.7.txz: 100% of 2 MB
Checking integrity... done (0 conflicting)
[1/1] Upgrading pkg from 1.3.6 to 1.3.7: 100%
Updating repository catalogue
Fetching meta.txz: 100% of 944 B
Fetching digests.txz: 100% of 2 MB
Fetching packagesite.txz: 100% of 5 MB

Incremental update completed, 23466 packages processed:
0 packages updated, 0 removed and 0 added.

Checking integrity...
 done (0 conflicting)
Your packages are up to date
$

オゲ。

手順2.レポジトリカタログの強制更新とパッケージ解析

pkgをアップグレードした瞬間にレポジトリカタログの更新も走っている。
したがって、もう一回pkg updateする必要はないのだが、念のため手順に沿ってもう一回やる。

$ sudo pkg update -f
Updating FreeBSD repository catalogue...
Fetching meta.txz: 100%   944 B   0.9k/s    00:01
Fetching digests.txz: 100%    2 MB 291.4k/s    00:07
Fetching packagesite.txz: 100%    5 MB 294.8k/s    00:18
Processing new repository entries: 100%
FreeBSD repository update completed. 23466 packages processed:
  0 updated, 0 removed and 23466 added.
$

当たり前だがアップデートも削除もなし。
次。
手順によるとpkg check -Baせよと。
これは何かというと、下記の通りインストール済みshared librariesを解析するものだそうな。
つまりこの解析の結果、全ファイル再インストールという事態を避けられるわけですな?

以下、-B, -aのオプション説明をmanから抜粋。

     pkg check -B or pkg check --shlibs is used to reanalyse shared libraries
     of installed packages.

     -a, --all     Process all packages.

実行…するが、ひょっとすると時間がかかるかも。
仮想マシン、かつ750個くらいパッケージがある状態で1時間近くかかった。
しかし実マシン(hp microserver)、120個くらいで2分。
パッケージの数、装置スペックによって前後するだろうが覚悟のこと。

改めて実行。

$ sudo pkg check -Ba
Checking all packages:  37%
pkg: fstat() failed for(/usr/local/include/cdio++/enum.hpp): No such file or directory
pkg: fstat() failed for(/usr/local/include/cdio++/mmc.hpp): No such file or directory
pkg: fstat() failed for(/usr/local/include/cdio++/read.hpp): No such file or directory
pkg: fstat() failed for(/usr/local/include/cdio/udf_file.h): No such file or directory
pkg: fstat() failed for(/usr/local/lib/libcdio++.so): No such file or directory
pkg: fstat() failed for(/usr/local/lib/libcdio.so): No such file or directory
pkg: fstat() failed for(/usr/local/lib/libiso9660++.so): No such file or directory
pkg: fstat() failed for(/usr/local/lib/libiso9660.so): No such file or directory
pkg: fstat() failed for(/usr/local/lib/libudf.so): No such file or directory
Checking all packages: 100%
$

あとは通常通りpkg upgradeでよい。
理不尽な再インストールを求められることもありません。

[Windows][バッチ][メモ] EFSをコマンドラインから操作する。

Pocket

EFSとは、Windowsの暗号化機能。
使用するとファイル名とかフォルダ名とかが緑になるアレな。

以下、Microsoftのサイトより。

http://windows.microsoft.com/ja-jp/windows/what-is-encrypting-file-system#1TC=windows-7

暗号化ファイル システム (EFS) は、情報をハード ディスク上に暗号化された形式で格納するための Windows の機能です。暗号化は、情報のセキュリティを保護するために Windows が提供する最も強力な保護手段です。

EFS の主な機能の一部を紹介します。

暗号化が簡単です。ファイルまたはフォルダーのプロパティのチェック ボックスをオンにするだけで有効になります。
ファイルを読むことができるユーザーを制限できます。
ファイルは閉じたときに暗号化されますが、開くときに自動的に使用できる状態になります。
ファイルの暗号化を解除する場合は、ファイルのプロパティでチェック ボックスをオフにします。

EFS は、Windows 7 Starter、Windows 7 Home Basic、および Windows 7 Home Premium では完全にはサポートされていません。

末文に注意。Professional以上ということですな。

使いかた

crypt /?で使い方が表示される。長いので本記事末尾に示す。

ファイルを暗号化、復号する。

暗号化はcipher /e <ファイル名>、復号にはcipher /d <ファイル名>と指定する。
Encrypt, Decrypt、ですな。
以下、ひみつ.txtを暗号化する例。

c:¥>cipher /e c:¥vault¥crypt¥ひみつ.txt

 c:¥vault¥crypt¥ のファイルを暗号化しています

ひみつ.txt             [OK]

1 ディレクトリ内の 1 ファイル [またはディレクトリ] が暗号化されました。

ファイルをプレーンテキストから暗号化テキストに変換すると、
ディスク ボリュームに古いプレーンテキストの部分が残る場合があります。
変換がすべて完了してから、コマンド CIPHER /W:ディレクトリを使って
ディスクをクリーンアップすることをお勧めします。

c:¥>cipher /d c:¥vault¥crypt¥ひみつ.txt

 c:¥vault¥crypt¥ のファイルの暗号化を解除しています

ひみつ.txt             [OK]

1 ディレクトリ内の 1 ファイル [またはディレクトリ] の暗号化が解除されました。

簡単ですな。

ワイルドカードも使用可能

ファイルの指定にはワイルドカードが使える。

c:¥>cipher /e c:¥vault¥crypt¥*.txt

 c:¥vault¥crypt¥ のファイルを暗号化しています

とてもひみつ.txt          [OK]
ひみつ.txt             [OK]

1 ディレクトリ内の 2 ファイル [またはディレクトリ] が暗号化されました。

c:¥>cipher /d c:¥vault¥crypt¥*.txt

 c:¥vault¥crypt¥ のファイルの暗号化を解除しています

とてもひみつ.txt          [OK]
ひみつ.txt             [OK]

1 ディレクトリ内の 2 ファイル [またはディレクトリ] の暗号化が解除されました。

これもまあ、普通。

ディレクトリの暗号化、復号

ファイルではなくディレクトリを指定することもできる。
この場合、「それ以降に」当該ディレクトリに置かれるファイルが暗号化されるか/されないかが決まる。
もともと置いてあったファイルには影響しない。

C:¥>cipher /e c:¥vault¥crypt¥

 新しいファイルを暗号化するようにディレクトリ c:¥vault¥crypt¥ を設定
しています [OK]

1 ディレクトリ内の 1 ファイル [またはディレクトリ] が暗号化されました。


C:¥>cipher /d c:¥vault¥crypt¥

 新しいファイルを暗号化しないようにディレクトリ c:¥users¥0066945¥out¥crypt¥ を設
定しています [OK]

1 ディレクトリ内の 1 ファイル [またはディレクトリ] の暗号化が解除されました。

 

フォルダ配下全部を暗号化/復号

/s:に続けてディレクトリを指定すると、再帰的な処理ができる。

c:¥>cipher /e /s:c:¥vault¥crypt

 新しいファイルを暗号化するようにディレクトリ c:¥vault¥crypt を設定
しています [OK]

 c:¥vault¥crypt¥ のファイルを暗号化しています

ひみつ.txt             [OK]

2 ディレクトリ内の 2 ファイル [またはディレクトリ] が暗号化されました。


c:¥>cipher /d /s:c:¥vault¥crypt

 新しいファイルを暗号化しないようにディレクトリ c:¥vault¥crypt を設
定しています [OK]

 c:¥vault¥crypt¥ のファイルの暗号化を解除しています

ひみつ.txt             [OK]

2 ディレクトリ内の 2 ファイル [またはディレクトリ] の暗号化が解除されました。

状態確認

暗号化されているか/されていないかは、ファイル名の色で判断できる。
緑色なら暗号化されていて、黒なら暗号化されていない。
もちろん、コマンドからも確認できる。
オプション指定なくファイル名、ディレクトリ名を渡せば暗号化状況を得られる。

c:¥>cipher c:¥vault¥crypt

 c:¥vault¥ の一覧を作成しています
 このディレクトリに追加されるファイルは暗号化されません。

E crypt

c:¥>cipher c:¥vault¥crypt¥ひみつ.txt

 c:¥vault¥crypt¥ の一覧を作成しています
 このディレクトリに追加される新しいファイルは暗号化されます。

E ひみつ.txt

もちろん、再帰オプションも使用可能。

c:¥>cipher /s:c:¥vault¥crypt¥

 c:¥users¥0066945¥out¥crypt¥ の一覧を作成しています
 このディレクトリに追加される新しいファイルは暗号化されます。

E とてもひみつ.txt
U ひみつ.txt

ヘルプ

c:¥>cipher /?
NTFS パーティション上のディレクトリ [ファイル] の暗号化を表示または変更します。

CIPHER [/E | /D | /C]
[/S:ディレクトリ] [/B] [/H] [パス名 [...]]

CIPHER /K [/ECC:256|384|521]

CIPHER /R:ファイル名 [/SMARTCARD] [/ECC:256|384|521]

CIPHER /U [/N]

CIPHER /W:ディレクトリ

CIPHER /X[:EFS ファイル] [ファイル名]

CIPHER /Y

CIPHER /ADDUSER
[/CERTHASH:ハッシュ | /CERTFILE:ファイル名 | /USER:ユーザー名]
[/S:ディレクトリ] [/B] [/H] [パス名 [...]]

CIPHER /FLUSHCACHE [/SERVER:サーバー名]

CIPHER /REMOVEUSER /CERTHASH:ハッシュ
[/S:ディレクトリ] [/B] [/H] [パス名 [...]]

CIPHER /REKEY [パス名 [...]]

/B エラーが発生した場合に中断します。既定では、CIPHER は
エラーが発生しても実行を続行します。
/C 暗号化されたファイルに関する情報を表示します。
/D 指定されたファイルまたはディレクトリの暗号化を解除します。
/E 指定されたファイルまたはディレクトリを暗号化します。後で追加
されたファイルが暗号化されるようにディレクトリをマークします。
親ディレクトリが暗号化されていない場合、暗号化されたファイルは、
変更されるときに暗号化を解除されます。ファイルおよび親
ディレクトリを暗号化することをお勧めします。
/H 隠しファイルやシステム属性のファイルを表示します。既定では
これらのファイルは省略されます。
/K EFS で使用するための新しい証明書およびキーを作成します。
このオプションが指定されると、その他のオプションはすべて無視
されます。

注意: 既定では、/K によって現在のグループ ポリシーに準拠する
証明書とキーが作成されます。ECC が指定されている場合、
指定のキー サイズによる自己署名証明書が作成されます。

/N このオプションは /U を指定した場合にのみ動作します。
このオプションにより、キーが更新されなくなります。ローカル
ドライブ上のすべての暗号化ファイルを探すために使用されます。
/R EFS 回復キーと証明書を作成してから、それらを .PFX ファイル
(証明書と秘密キー) と .CER ファイル (証明書のみ) に書き込み
ます。管理者は、ユーザーの回復キーを作成するために .CER の内容
を EFS 回復ポリシーに追加し、個々のファイルを回復するために
.PFX ファイルをインポートすることができます。SMARTCARD
が指定されている場合は、回復キーと証明書をスマート カードに
書き込みます。.CER ファイルが生成されます (証明書のみ)。.PFX
ファイルは生成されません。

注意: 既定では、/R は 2048 ビット RSA 回復キーと証明書を作成しま
す。ECC が指定されている場合、その後にキー サイズ 256、384
または 521 が指定されている必要があります。

/S 指定されたディレクトリと、その下にあるすべてのファイルとサブ
ディレクトリに対して指定された操作を実行します。
/U ローカル ドライブのすべての暗号化ファイルを参照しようとします。
これにより、現在のユーザーのファイル暗号化キー、または回復キーに
変更があった場合、これらが更新されます。このオプションは /N 以外
の他のオプションでは動作しません。
/W ボリューム全体で利用可能な未使用のディスク領域から、データを削除
します。このオプションを選んだ場合は、他のオプションはすべて無視
されます。ローカル ボリューム上のどの場所にあるディレクトリでも
指定することができます。ディレクトリがマウント ポイントである
場合、または別のボリュームのディレクトリを指し示す場合は、その
ボリュームのデータが削除されます。
/X EFS 証明書とキーのバックアップを、指定された名前のファイルに
保存します。EFS ファイルが指定されている場合は、ファイルの暗号化
に使用されている現在のユーザーの証明書のバックアップが作成され
ます。指定されていない場合は、ユーザーの現在の EFS 証明書とキー
のバックアップが作成されます。
/Y ローカル PC 上の現在の EFS 証明書を縮小表示します。
/ADDUSER 指定された暗号化ファイルにユーザーを追加します。CERTHASH が指定
されている場合は、この SHA1 ハッシュを含む証明書が検索されます。
CERTFILE が指定されている場合は、ファイルから証明書が抽出
されます。USER が指定されている場合、CIPHER は Active Directory
ドメイン サービス内でユーザー証明書を検索します。
/FLUSHCACHE
指定されたサーバー上で、呼び出し元ユーザーの EFS キーのキャッシュ
をクリアします。サーバー名が指定されていない場合は、ローカル
コンピューター上の呼び出し元ユーザーのキー キャッシュがクリア
されます。
/REKEY 指定した暗号化ファイルを、構成済みの EFS の現在のキーを使用する
ように更新します。
/REMOVEUSER 指定されたファイルからユーザーを削除します。CERTHASH
は削除する証明書の SHA1 ハッシュである必要があります。

ディレクトリ ディレクトリのパスです。
ファイル名 拡張子を伴わないファイル名です。
パス名 パターン、ファイル、またはディレクトリを指定します。
EFS ファイル 暗号化されたファイルのパスです。

パラメーターを指定せずに CIPHER を実行すると、現在のディレクトリとディレクト
リに含まれるすべてのファイルの暗号化状態を表示します。複数のディレクトリ名
やワイルドカードを指定できます。複数のパラメーターを指定する場合は、パラ
メーターをスペースで区切ってください。

[FreeBSD][pkgng][メモ] pkgを1.2から1.3に上げたらneed to re-create repo FreeBSD to upgrade schema version

Pocket

pkgを1.2から1.3.xに上げたら以下のようなメッセージが出てupgradeができない。

$ sudo pkg upgrade
Updating repository catalogue
FreeBSD repository is up-to-date
All repositories are up-to-date
pkg: Repo FreeBSD needs schema upgrade from 2006 to 2010 but it is opened readonly
pkg: need to re-create repo FreeBSD to upgrade schema version
Checking for upgrades: 100%
Checking integrity... done (0 conflicting)

need to re-create repo とか言いつつ、どうすればいいのか書いてないし。
調べたところ、pkg update -fすればいいとのこと。

$ sudo pkg update -f
Updating repository catalogue
Fetching meta.txz: 100% of 944 B
Fetching digests.txz: 100% of 1 MB
Fetching packagesite.txz: 100% of 5 MB

Adding new entries: 100%
Incremental update completed, 23313 packages processed:
0 packages updated, 0 removed and 23313 added.

incremental update completedとのこと。
この状態でpkg upgradeすると、確かに動いた。
表示も少し親切になっていますな。

$ sudo pkg upgrade
Updating repository catalogue
FreeBSD repository is up-to-date
All repositories are up-to-date
Checking for upgrades: 100%
The following 41 packages will be affected (of 0 checked):

New packages to be INSTALLED:
        libevent2: 2.0.21_2
        i386-wine-devel: 1.7.23,1
        p5-Mozilla-CA: 20130114

Installed packages to be UPGRADED:
        xproto: 7.0.25 -> 7.0.26

Installed packages to be REINSTALLED:
        tevent-0.9.21 (options changed)


The process will require 209 MB more space
78 MB to be downloaded

Proceed with this action [y/N]: y
Fetching xproto-7.0.26.txz: 100% of 60 KB
Fetching vim-lite-7.4.389.txz: 100% of 5 MB
(略)

しかもconflictsを検知してくれるみたい。

Checking integrity... done (1 conflicting)
Checking integrity... done (0 conflicting)
Conflicts with the existing packages have been found.
One more solver iteration is needed to resolve them.
The following 42 packages will be affected (of 0 checked):

Installed packages to be REMOVED:
        libevent-1.4.14b_3

New packages to be INSTALLED:
        p5-Mozilla-CA: 20130114
        libevent2: 2.0.21_2
        i386-wine-devel: 1.7.23,1

Installed packages to be UPGRADED:
        xproto: 7.0.25 -> 7.0.26

Installed packages to be REINSTALLED:
        libxcb-1.10_2 (options changed)

Proceed with this action [y/N]: y
[1/42] Upgrading python27 from 2.7.6_4 to 2.7.8_2: 100%
[2/42] Upgrading pcre from 8.34_1 to 8.34_2: 100%

以上。

[Windows] FreeOTFEの使いかた

Pocket

FreeOTFEとはフリーの暗号化ツール。仮想の暗号化ディスクが扱える。
とても便利だが、開発が止まっていてWindows 64bitでは使えない。残念。

インストール

インストーラは以下からダウンロード。
http://sourceforge.net/projects/freeotfe.mirror/
32bitならインストールも問題なくできるはず。

言語設定

デフォルトでは英語だけど、日本語に変えられる。
ViewからOption。

2014-07-25_21-42-35

2014-07-25_21-43-06

2014-07-25_21-43-20

2014-07-25_21-44-29
日本語になった。

暗号化ボリュームの作成

2014-07-25_21-44-35

ここは英語なんですな。
2014-07-25_21-44-41

Volume Fileを選ぶ。
2014-07-25_21-44-48

ボリュームファイルを指定する。
2014-07-25_21-44-53

名前を付ける。
2014-07-25_21-45-43

文字化けしてる。だからなに。
2014-07-25_21-45-55

容量指定
2014-07-25_21-46-10

暗号化方式を。
うん。化けてるね。
2014-07-25_21-47-36

乱数発生方法を選ぶ。
APIは信用ならんし、マウスにするか、と思ったけど。
マウスがあまりに大変なのでAPIをお勧めする。
2014-07-25_21-47-54

マウスを選んだ場合、画面内で「うおおおおお」とマウスカーソルを動かしまくる。
2014-07-25_21-48-09

お、終わった。
2014-07-25_21-52-03

パスワード設定。
2014-07-25_21-52-59

無事に作成が終わって、Fとしてマウントされたとのこと。
2014-07-25_21-53-26

エクスプローラで見ると普通のディスクとして見える。
もちろん、実体はさきほど作ったファイル。
ただ、文字通り普通のディスクなので(続く)

2014-07-25_21-53-42

ディスクを使用する前に

フォーマットが必要なんである。
2014-07-25_21-53-52
2014-07-25_21-54-02
2014-07-25_21-54-08
2014-07-25_21-54-13
とはいっても、フッツーにフォーマットすればよい。

2014-07-25_21-54-55

マウントの解除

2014-07-25_21-55-13
こちらも難しいことはなく、FreeOTFEからマウント解除すればいいだけ。

[Windows] 暗号化仮想ディスク管理ツールFreeOTFE

Pocket

ファイルを暗号化した仮想ディスクとして扱えるFreeOTFEについて記す。

暗号化ツールは、探してみると意外にたくさんある。
また、最近ではOSで暗号化をサポートするのもトレンドである。
そういったわけで、どんなものでも選り取り見取り、と思っておりました。
しかし。
ちょっと条件を付けると途端に選択肢が狭まってしまう。
具体的には、実ディスク全体を暗号化するのではなく、
①Windowsで、
②暗号化仮想ディスクを扱える、
②フリー(オープンソース)のツール
である。

暗号化仮想ディスクのねらい

つまり、PC本体の実ディスクはそのままに、暗号化した仮想ディスクを扱いたいわけです。
なぜわざわざ仮想ディスクが必要なのか。
なぜファイル単位の暗号化ではダメなのかというと。

端的に言って、復号した後にもう一回暗号化するのが面倒だから。

暗号化したファイル、フォルダは、ずっとそのままという訳にはいかない。
とうぜん閲覧するなり実行したりしたいわけで、そのためには復号、すなわち暗号解除が必要だ。
しかしひとたび、無事に用事を済ませたら、当然のことながらもう一度暗号化して大事にしまっておかねばならない。

ファイルあるいはフォルダ単位の暗号化ツールは、この「使った後にもう一度鍵をかけてしまう」という作業を考えられていないケースがほとんどだ。
これはおそらく、一回限りの暗号化を前提にしているためと思う。
たとえば、セキュリティに不安のある経路を通してファイルを送受するとか。

頻繁に暗号化されたファイルにアクセスするようなケースでは、ユーザが意識しなくても、使用後に元通り暗号化されることが望ましい。
暗号化した仮想ディスクを扱える、というのはそういう使用用途にぴったりである。

暗号化ファイルを復号するとディスクとしてマウントされる。
シャットダウンあるいは再起動でマウントが外れ、暗号化されたファイルに戻る。
ぴったり。

ならディスクそのものを暗号化してしまえよWindowsにはBitLockerとかあるんだしさあ、というのはその通り。
その通りなんだが、実ディスクの設定を気軽に触れないケースもあるってことで。

2014-07-25_21-55-13

FreeOTFE

さて上述の検討をもとに選定をする。
しかし暗号化ツールと言ってもかなりの数がある。
どうやって探したらいいのだ。

こういうときに便利なのがWikipedia。
たいてい便利な比較表がある。
Comparison of disk encryption software

ところが、条件を当てはめていくと急激に数が減る。
結論として、条件を十分に満足するソフトウェアはなかった。
次点でFreeOTFE。

FreeOTFEは、フリーでWindowsで使えて仮想ディスクを扱える。
一見、問題なさそうに思えたのだが、なんと開発が止まっていた。
なんという…。

したがって、不具合が見つかった場合の修正がなされないのは当然なことながら、64bit Windowsでは暗号化仮想ディスク用のドライバをインストールできず、今後も改善される予定はない。
もちろん、誰かが開発を引き継いでくれればその限りではないが、昨今はOSで暗号化に対応するのが一般的だし、開発が復活するのは望み薄ではないかなと思っている。

長くなったので、FreeOTFEのインストール方法は別項で。