壊れたSDカードからのデータ取り出し

イメージ
SDカードは壊れますUSBメモリも壊れます…。 ということを皆さんは知らないのか、自分のは壊れないと思っているのか…。 忘れているのか…。

お客さんから急な連絡がありました。 カメラのSDカードが使えなくなったと…。
ELECOM製の32GBだというので、ELECOMに聞いてみると良いですよと、最初は返答。 すると2日ほどして、「3万円以上かかると言われたので躊躇している。一度チェックしてくれないか?」
いや、オイラがやったって、出来るかどうかわからんし…。 手間暇かけると、それくらいの費用になりますよと返答したけど、無理矢理メディアを渡され…。
仕方なく、持ち帰ってチェック。 確かに認識はしないが、fdiskで見ると、パーティションは認識している。
$ sudo fdisk -l
ディスク /dev/sdb: 29.45 GiB, 31609323520 バイト, 61736960 セクタ Disk model: SD Card Reader   単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスクラベルのタイプ: dos ディスク識別子: 0x00000000
デバイス   起動 開始位置 最後から   セクタ サイズ Id タイプ /dev/sdb1           8192 61736959 61728768  29.4G  c W95 FAT32 (LBA)

ということは、論理的に壊れたのか?
$ lsblk NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT sdb      8:16   1  29.4G  1 disk  └─sdb1   8:17   1  29.4G  1 part 
OKっぽい感じ…。
これなら修復可能かも…。
Photorecを思い出すのに苦労した…Linux用の修復ツールがなかなか思い出せず、なんだっけ?と思いつつ検索して分かった。 昔、HDDが壊れたときに使えないか試した記憶が…。
http://baker-street.jugem.jp/?eid=181
ここに綺麗にまとめてありました。ありがたや。
早速、インストール。
# apt install testdisk # photorec …

vsftpd の動作がおかしい

ftpで接続できない

vps上の設定を行っていていよいよ最終段階に。
webコンテンツをUPしようと、ftpサーバを立てる。
$ sudo apt-get install vsftpd
まあ、これだけの話だ。

でもって、気持よくFileZillaで接続しようとするも接続できない???
500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
と文句を言ってくる。
おや、前に違う環境で立てた時は、こんなことはなかった。

まあ、今回はvirtual hostをいくつも切るために、アカウントごとにchrootしているので、これまでとは状況が違うといえば違うのだけれど…。
今回利用しているのは、vsftpd 2.3.5だ。

ググってみっるとこんなタイトルの情報が…
Fixing 500 OOPS: vsftpd: refusing to run with writable root inside chroot ()」はいはい。まんまじゃないですか…。

バグでも潜んでいるんかと、読んでみる。
対策として、
chmod a-w /home/user
しろとな。これで試すと、問題なく接続できる。
いやぁ、しかし書き込み権限をなくせばOKと言われましても、これじゃUploadできないわけで…。

試しに、Uploadしてみるが、書き込みできないと言われる。
そりゃ、当たり前だ。

もしくは、次の2つの方法があるらしい。
vsftpdなら
allow_writeable_chroot=YES
vsftpd-extなら
allow_writable_chroot=YES
にしろと。(どうして記述の方法を変えたのか…)

vsftpd-extってなんじゃい?と思いつつ、とりあえず上の方法で試すも撃沈。

他の情報を探してみる

どうやらvsftpd2.3.5になった時に、セキュリティ強化のために導入されたらしい。

じゃ、2.3.4で行けばと思ったら、脆弱性が見つかっているので、止めた方がいいらしい。
手詰まりか?と思ったら、
方法は3つ。

  1. Extended vsftpd(さっきのvsftpd extがこれだった)を利用しろ
  2. vsftpdの3.x.x系を使え
  3. vsftpd 2.3.5改?(3系列backport)を使え
ということらしい。
1.は、本家vsftpdからダウンロード可能だが、tar.gz形式で、自分でbuildする必要がある。
2.はExtended vsFTPd buildsからダウンロード可能だが、こいつもsourceからbuildする必要がある。

最初はbuildしかけたのだけれど、折角ubuntuで構築しているのに、Package管理できないのは勿体ない。
今後、アップデートが出ても、確認が面倒になる。
そこで、ようやく見つけたのが3.だった。


お手軽にできた

詳細は、vsftpd: refusing to run with writable root inside chrootにあるので、確認してもらうとして…。

手順は以下の通り
  1. login as root (or sudo..) and do the following:
  2. apt-get install python-software-properties
  3. sudo add-apt-repository ppa:thefrontiergroup/vsftpd
  4. sudo apt-get update
  5. sudo apt-get install vsftpd
  6. vi /etc/vsftpd.conf and add the following allow_writeable_chroot=YES
  7. sudo service vsftpd restart
要はppaをリポジトリに追加して、そこにあるvsftpdを入れろと。
すると、2.3.5-1ubuntu2ppa1が入るので、confに上記を追記してやればOKとな。

ここに辿り着くまでに、少々苦戦しましたゎ。

おかげで、無事にUploadできるようになりましたとさ。

コメント

このブログの人気の投稿

VirtualBoxでUSBから起動

フォトビューワーの色がおかしい

PHPでsnmpを叩く