毎日モザイク

White Room Layout Works

2014-03-15T08:31:06+09:00 [Sat]
--> [Ubuntu]

proftpd sftp化めも。

proftpd ubuntu12.04標準。

認証はauth_file.cでバーチャルユーザのみ。

ユーザの利用目的は、webサイト更新


/etc/proftpd/proftpd.conf
#sftpでwelcome.msgを探せなくなるのを直すのが面倒くさいのでコメントアウト
- DisplayLogin                    welcome.msg
+ # DisplayLogin                    welcome.msg
# ファイル名変更で読み込ませたり、止めたり
- Include /etc/proftpd/conf.d/
+ Include /etc/proftpd/conf.d/*.conf

/etc/proftpd/conf.d/sftp.conf

<Limit Login>
    order allow,deny
    allow from 127.0.0.1 #wordpressの自動更新とかのためにlocalhostだけ素のFTP許可。
    DenyAll
</Limit>

 <IfModule mod_sftp.c>
    <VirtualHost xxx.xxx.xxx.xxx> #proftpd はipアドレスのみなので、ifconfigで出るやつを入れる
        <Limit login>
           AllowAll #sftpはどこからでも許可。制限はiptablesまかせ。
        </Limit>
        SFTPEngine              on
        port                    2222 #sshと分けるため、お好みの空いてるポートで開けてるポート。sftpのみにするなら、元々開けてある21にすると楽かも。
        DefaultRoot             ~/  #デフォルトルートはsftpでも効くのでべんり
        AllowOverwrite          on
        SFTPLog                 /var/log/proftpd/sftp.log #log取る
        SFTPHostKey             /etc/ssh/ssh_host_dsa_key #sshのhostkey。下も
        SFTPHostKey             /etc/ssh/ssh_host_rsa_key
        SFTPAuthorizedUserKeys  file:/path/to/keyfile/%u #%uはユーザ名に展開されるので、ユーザの公開鍵ファイル名をユーザ名に
        SFTPAuthMethods         publickey password #鍵がなければパスワード
        AuthUserFile        /path/to/virtual/user/proftpd_userfile #バーチャルユーザにも使えます。
        AuthGroupFile       /path/to/virtual/user/proftpd_groupfile
    </VirtualHost>
</IfModule>

inetd,xinetd経由なら、次の接続から。standaloneなら再起動。

鍵形式について

proftpdのmod_sftp.cが読めるのは、RFC 4716形式のみ。

linuxで一般的な、openssh形式のままでは読めないので、変換しないといけない。

公式を読まないとハマりがちなところ。

鍵置き場について。

公開鍵がなければFTPにアクセスできないわけですから、最初に公開鍵をユーザが自分で設置することはできません。管理者がユーザを追加する時に入れることになります。

一般的な ~/.ssh/公開鍵ファイル に置けば、バーチャルユーザをディレクトリごと削除する時に鍵ごと削除できて楽。

ただ、.ssh以下をユーザの所有にしてしまうと、消されたりしたら面倒。管理者の所有にすれば、管理者しか変更できない。

結局管理者が管理することになるので、別の場所にまとめて管理するのが無難かも。

今回はwebサイト用のディレクトリなので、ドットものが増えてウザので、別ディレクトリで管理するのが便利。

鍵かパスワードか

鍵認証最強伝説も、秘密鍵が手に入れば、パスフレーズなしなら瞬殺。短いパスフレーズなら秒殺。パスフレーズをキーチェーン的なものに保存して、ログイン時に自動解錠だったりすると、ログインされたら瞬殺。

鍵ファイルを盗まれるリスクと、超長いパスワードのメモ(さすがに覚えきれないw)を盗まれるリスク。超長いパスワードをブルートフォースアタックで抜けられるリスクを考えると、安全性はどれも大差ない気がします。

鍵認証は鍵管理もあるし、担当者が変わった時も現状の設定変更スクリプトがそのまま使えて変更が楽だし、鍵認証についての説明と鍵管理の説明をする手間も省けるので、超長いパスワードメインで行くことに。

※sshでのログインが鍵認証限定になっていても、proftpdのsftpのパスワード認証には影響しない。

速度

1000baseTのLAN内で、素のFTPに比べるとおおむね半分くらいの速度しか出ませんが、インターネット越しだと、接続環境によってはほとんど変わらないかも。

Error?

requested read offset (32768 bytes) greater than size of 'file name' (10399 bytes)

/var/log/proftpd/sftp.logにこのようなログが大量に……。

ググり倒してみたら、どうもクライアントとの相性問題らしい。

ためしに、proftpdのリリース候補版をコンパイルして入れてみても同じ挙動を示すので、proftpd側の問題ではなさそう。

大小ファイルを上げ下げしても、特に問題は出ないので、気にしない方向でよさそうです。

更にググり倒してみたら、ウザイなら/dev/nullに捨ててしまえwと書いてあったりする。

吐き出させ続けるとアホみたいに巨大なログを吐くので、

SFTPLog /dev/null #log捨てる

これでいくことに。

残る問題

cyberduckのsftp対応は、openssh sftpが前提なのか、proftpd経由だと挙動がおかしい。

firefoxOSX版のfireftpも挙動がおかしい。ログイン成功のログはでるけど、ファイルリストが出てこない。

Filezillaは上下とも問題なしだけど、この問題が出る。けど気にしないw

mod_delayメモ

proftpdで接続時の返答が遅いことがあるのは、mod_delayがデフォルトで有効になっているから。

何度もググった気がする……

2014-03-11T15:55:53+09:00 [Tue]
--> [日常]

AppleScriptの馬鹿からも逃げる

maro先生のAppleの馬鹿!!は、10.9でもそのままですが、もしかしたら、こうすれば逃げられるのではなかろうか?

set a to “アップルスクリプトのバカ”
set b to “あっぷるすくりぷとのばか”

a = b –そのまま比較
-> true
id of a = id of b –idのリストを比較
-> false

do shell scriptで文字列操作が得意な人にお願いするのは恐ろしく時間がかかりますが、リスト比較はそれよりずっと速い。

追加

a = b より id of a = id of b のほうが倍以上速いっぽい。

短い時間の計り方を知らないので、ひたすら繰返して比較。

set a to “アップルスクリプトのバカ”
set b to “あっぷるすくりぷとのばか”

set tc to current date
repeat 10000000 times
a = b –そのまま比較
end repeat
log (current date) – tc
set tc to current date
repeat 10000000 times
id of a = id of b –idのリストを比較
end repeat
log (current date) – tc

何回やっても、a = bは60秒前後、id of a = id of b は20秒前後

2014-03-09T05:25:14+09:00 [Sun]
--> [日常]

shで虹配列から逃げる

shで虹配列は面倒なので、二つ作って添え字でループ。

巨大配列を作るわけではないので、妥当性は自力で確保。

#!/bin/sh

#配列一列目
ArrayA=(
“aaa”
“bbb”
“ccc”
)
#配列二列目
ArrayB=(
“AAA”
“BBB”
“CCC”
)

if [ ${#ArrayA[*]} != ${#ArrayB[*]} ]; then
echo “not even”
exit 1
fi
for i in `seq 0 ${#ArrayA[*]}`; do
#ここのループで値を二つ使いたい
echo ${ArrayA[${i}]}
echo ${ArrayB[${i}]}
done

#####結果#####
aaa
AAA
bbb
BBB
ccc
CCC

これでなんとか

難しく考えると難しすぎて付いていけない……

2014-03-08T00:51:01+09:00 [Sat]
--> [日常]

イワオ数(仮称)

今回の消費税改訂の前後で、端数が発生しない数値をイワオ数(仮称)と呼ぶことになりました。

以下に列挙します。

今更ですが、価格改定にお役立てください。

1円以下、四捨五入

10万円まで、100円刻みのイワオ数
本体税込み(5%)税込み(8%)
333335003600
666770007200
100001050010800
133331400014400
166671750018000
200002100021600
233332450025200
266672800028800
300003150032400
333333500036000
366673850039600
400004200043200
433334550046800
466674900050400
500005250054000
533335600057600
566675950061200
600006300064800
633336650068400
666677000072000
700007350075600
733337700079200
766678050082800
800008400086400
833338750090000
866679100093600
900009450097200
9333398000100800
96667101500104400
1万円まで、10円刻みのイワオ数
本体税込み(5%)税込み(8%)
324340350
333350360
343360370
352370380
648680700
657690710
667700720
676710730
100010501080
132413901430
133314001440
134314101450
135214201460
164817301780
165717401790
166717501800
167617601810
200021002160
232424402510
233324502520
234324602530
235224702540
264827802860
265727902870
266728002880
267628102890
300031503240
332434903590
333335003600
334335103610
335235203620
364838303940
365738403950
366738503960
367638603970
400042004320
432445404670
433345504680
434345604690
435245704700
464848805020
465748905030
466749005040
467649105050
500052505400
532455905750
533356005760
534356105770
535256205780
564859306100
565759406110
566759506120
567659606130
600063006480
632466406830
633366506840
634366606850
635266706860
664869807180
665769907190
666770007200
667670107210
700073507560
732476907910
733377007920
734377107930
735277207940
764880308260
765780408270
766780508280
767680608290
800084008640
832487408990
833387509000
834387609010
835287709020
864890809340
865790909350
866791009360
867691109370
900094509720
9324979010070
9333980010080
9343981010090
9352982010100
96481013010420
96571014010430
96671015010440
96761016010450
2014-03-03T00:04:06+09:00 [Mon]
--> [労働]

BIG捕ったどぉ

0398-3700-0167

苦節8年。

ふるえがとまらないw