毎日モザイク

White Room Layout Works

2014-03-24T08:32:45+09:00 [Mon]
--> [Ubuntu]

連続稼働していないubuntuの動作めも。

連続稼働しているUbuntuは、cron.dailyが午前6時25分に動く。

この中にaptが入っているので、午前6時25分に起動していなかった機械はアップデートの機会が遅れる。

とかいうことはない。

デスクトップ版には最初からanacronが入っているので、起動時にそれまでの分のcronが実行されていなかったら、起動5分後から再試行を始める。

cronの実行時間

cron.hourly毎時17分
cron.daily毎日午前6時25分
cron.weekly毎週日曜日午前6時47分
cron.monthly毎月1日午前6時52分
mdadm毎週日曜日午前0時17分
2014-03-24T05:55:20+09:00 [Mon]
--> [日常]

ググると見落とす公式覚書。

iptables http://www.netfilter.org/index.html

iptablesチュートリアル https://www.frozentux.net/iptables-tutorial/iptables-tutorial.html

↑の日本語訳 http://www.asahi-net.or.jp/~aa4t-nngk/ipttut/output/index.html

apache2 http://httpd.apache.org/

apache2日本語 http://httpd.apache.org/docs/2.2/ja

dovecot http://wiki2.dovecot.org/

postfix http://www.postfix.org/documentation.html

postfix日本語 http://www.postfix-jp.info

proftpd http://www.proftpd.org/docs/

2014-03-21T17:48:49+09:00 [Fri]
--> [日常]

Marvericks にメモリ最適化ツールとかいらんのではないか?

OSXのメモリ管理が手作業をするには体感と合わない(キャッシュで食いつぶしているだけなのにスワップする)のを嫌ってメモリ最適化(キャッシュ部分を消すやつ)ツールを使う人がいましたが、Marvericksではいらないのではなかろうかと。

10.6から飛ばして上げたので、 .7と.8については知らないのですが、10.6ではキャッシュで食いつぶしているだけなのに、キャッシュを捨てずにスワップしまくっていました。

10.9ではキャッシュで食いつぶして、物理メモリ:16.00GB、使用済みメモリ:15.96GBの状態から、ほかのアプリケーションを起動しても、大きなファイルを開いても使えるところがあるうちはスワップしません。

特にいじってないので、デフォルトで、linuxのswappiness=0(使えるところがあるうちはswapしない)みたいな感じになっているのではないかと思います。

これなら、キャッシュはキャッシュとして有効利用しつつ、ほかのアプリが必要とするならキャッシュを捨てて確保するっていう、手作業時の体感に合った使い方だと思うし、キャッシュで食いつぶしている状態と、空き状態からで、メモリ確保に体感でわかるほどの違いはありません。

メモリ管理はOSまかせでいいのではないかと。

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秒前後