僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
タグを何度も確認したり、"文字実体参照" を "数値文字参照" に 変えたりしたが、それでも w3m で表示が崩れる。原因さえわからない...
追記。閉じタグのつもりが閉じてなかっただけだった...
orz
を 初めて書いてみた。
タグにスタイル属性 <p> を <span style=" background: lightgreen; color: OrangeRed; font-size: 1.5em;"> 初めて</span>書いてみた。 </p>
アドレスがNetに晒されたのは2006年8月16日午前零時頃。
最初のSPAMは2006年8月18日午前8時10分48秒(JST)らしい。
タイムラグは56時間10分48秒。
公開MLは目的を果たしたが、アドレスを捨てるまでもう少し待つか。
4.4.3から、同じオプションであげた。
若干のセキュリティ強化が図られているようだ。
220.213.201.100 - - [20/Aug/2006:17:44:46 0900] \ "GET /~kuzu/diary/?date=200509 HTTP/1.1" 200 155177 \ "http://search.yahoo.co.jp/search?p=掲示板 パスワード抜き取り\ &ei=UTF-8&fr=top_v2&x=wrt&meta=vc=" "Mozilla/4.0 (compatible;\ MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"
2005年9月24日の記事は役に立ったのかい?
NATの下で実験的に鯖を立ててみた。以下適当に。
phpinfo.phpにアクセスして確認後、すぐ
$DOCUMENTROOTの下から消した。
/etc/ssh/sshd_configを書き換えて、公開鍵未登録さん
を撥ねるようにする。勿論スーパーユーザは
ご法度だ。それから/etc/hosts.denyも手を入れて、
接続もとのIPをぎゅっと絞めておく。
まだ色々。
main.cfをいじる。結局$myhostnameと$mydestinationと$inet_interfaces
を変えた。これでいくつかのアカウントにメールが飛ぶようになった。
受信もさしあたりOK。それからtelnet 25 で叩く。rcpt to:が変だったら
当然 "Relay access denied" することも確認。
でも、mail(1)で ケータイに送信したら、あっさり
Connection Refused。やっぱりdyndnsはダメ?
MewはHyperEstraierと連携できるらしい。
~/.mew.elに(setq mew-search-method 'est)追記してやって
M-x load-file。
問題はその先。"kM"と打鍵するのは寝る前にすべきだった。
それより、crontabにmewest(1)でも追記しておくべきだった。...orz
で、Emacsがbusyなので、久し振りにnviにて日記編集。
隠れた"本日のリンク元"をこっそり鑑賞。
GCCは(6.3安定版の4.1.2に対し)4.2.3 だった。
2回目のビルド(Chapter 5.11)で、make する前の処理が少し変わったようだ。
patchをあてない代りに、やや長いスクリプトでGCCのデフォルトのダイナミックリンカ
の位置を変更するようになっていた。
目的はあまり変わらないように見える(どちらもld-linux.so.2 を/libから/tools/lib/
の下に置換するなど)けど。
昼前にchrootに至る。ビルドしたgcc の readelf -l a.out も問題なし。
File-4.23 は、既にダウンロードサイトに見当たらなくなっていた。
File-4.25を代りにビルドする。
読むものをちゃんと読めば、Chapter3.2で既出であること、代りの
ダウンロードサイトも書かれていることがわかったはずである。
modules-init-tools-3.4 は、ダウンロードサイトのパスが違っているようだ。
webから http://www.kernel.org/pub/linux/kernel/people/jcm/module-init-tools/ の下にある
module-init-tools-3.4.tar.bz2 をダウンロードしようとしても、404だ。
改めて確認すると、http://www.kernel.org/pub/linux/kernel/people/jcm/module-init-tools/attic/ の下にあった。
よく分からないが、今回のURLの変更は最初というわけでもないみたい。
なんとかlinux-2.6.24.4のビルドまで漕ぎつけたが、再起動後早くも"kernel Panic"。
今日はこれまで。
幅を指定してやると、改行されたくない部分をそのまま抜き出せる。
カーネルにひとしきり苦戦。
USB HDDでビルドしていたので、そのホスト・システムで
動作していたカーネルをLennyから借りた。
でも、ファイルシステムを認識できないようで、起動中に止まってばかり。
Enter打鍵で電源Off。
そのHDDからの起動を諦めた。
CF-Y4のFreeBSDスライスを殺し、ext3にしてrsyncし、ここで
カーネルをビルドする。
/etc/fstabの編集を忘れて同じトラブルに遭遇したが、
そこをやり直すと、問題なくlogin: に至る。やれやれ。
久々にGW-MF54G2。のことを書いたら、submitした途端に消えてしまっ た。のが7時間前。ようやく気を取り直す。
e-mobile を有線で、USB経由で使えないシステムが使えるように。
Linux の bridge では、Wireless をブリッジに加えると
どうもうまく動作しないようだった。
WinXPなどで「ブリッジ」にするとできるのだけど。
で、ずっと使ってなかったGW-MF54G2を試す。
"Converter" モードにして、ESSID と
wpa をGP02に合わせる。IPアドレスを適当に変更し、
DHCPサーバを無効にする。
「ステータス」を確認すると、既にe-mobileと繋がっていた。
有線で接続して設定したPCでdhclient。無事にGP02から IPアドレスを貰ってNetに繋がるようになった。
あれこれチラ見して試す。
どうするのか、一応エラーが出ないことだけをまず確認。
$ cat hoge.c #include<stdio.h> int main2(); int main() { printf("foo\n"); main2(); return 0; } $ cat fuga.c #include<stdio.h> int main2() { printf("bar\n"); return 0; }
$ gcc -Wall hoge.c fuga.c -o hogefuga $ ./hogefuga foo bar
を実現する
pythonスクリプトを書いた。
いや汚い。
$ python div.py 34 $ ls *.c func_0.c func_1.c func_2.c main.c
printfでfizzbuzzを15の倍数まで出力する関数func0(), func1(),...
を定義し、それを一つずつ
ソースファイルfunc_0.c, func_1.c ... に書き出す。
これは末尾。
$ cat func_2.c #include<stdio.h> int func2() { printf("31\n32\nfizz\n34\n"); return 0; }
で、全関数のプロトタイプ宣言を書いて、 main関数内で全部実行する main.c も。
$ cat main.c #include<stdio.h> int func0(); int func1(); int func2(); int main() { func0(); func1(); func2(); return 0; }
最終的なオブジェクトファイルは、やはり
かなり大きくなってしまう。
$ time python div.py 2000000 real 0m8.227s user 0m4.388s sys 0m3.276s $ time for x in func*.c main.c ; do gcc -Wall -c $x ; done real 66m37.258s user 38m31.260s sys 16m26.678s $ time gcc -Wall *.o -o 2000000 real 13m52.712s user 0m25.854s sys 0m49.535s $ ls -lh 2000000 -rwxr-xr-x 1 user group 32M 8月 20 16:34 2000000
200万行は、一応ビルド、実行できた(SWAPかなり)。
ちなみに
こないだの200万行は14MBだった。
あと、stripさせると、こないだの方はあまり変らなかったが
こっちは32MBが23MBになった。
Makefileは、考える気になったら考えよう。
お馬鹿なfizzbuzzを吐くCソースを出力する
Pythonスクリプトで
Makefileも出力させるようにする。
オブジェクトのファイル名はfizzbuzzの末尾
(ただし"fizz"とかではない)。
stripするとかなり小さくなったので、
後でこれも加えた。
$ python div_make.py 83 $ ls Makefile func_0.c func_2.c func_4.c main.c div_make.py func_1.c func_3.c func_5.c
$ cat Makefile all: gcc -Wall -c func_0.c gcc -Wall -c func_1.c gcc -Wall -c func_2.c gcc -Wall -c func_3.c gcc -Wall -c func_4.c gcc -Wall -c func_5.c gcc -Wall -c main.c link: gcc -Wall *.o -o 83 strip 83 clean: rm -rf Makefile func_*.c *.o main.c 83
さて、make(1)は巨大なMakefileを解釈できるのだろうか。
新規ユーザのパスワードを、自分で設定できるようにする方法。
sshの公開鍵認証(ログイン時にパスワードを入力しない)と組み合わせる。
visudo で以下のように。
NEWUSER ALL=(ALL) NOPASSWD /usr/bin/passwd NEWUSER
自分のパスワード新規作成が、sudoによりパスワードを
要求されずにできてしまう、という仕掛け。
変更はもちろんsudo不要。自分の権限でやればよい。
この例のNEWUSER は変数で置き換えたりグループ化したり
する、はず。
$ sudo -l Matching Defaults entries for NEWUSER on this host: !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User NEWUSER may run the following commands on this host: (ALL) NOPASSWD: /usr/bin/passwd NEWUSER (ALL) /bin/cat
このsudo -l では、パスワードを聞いてこなかった。 NOPASSWDがそのユーザーに一行でもあるとそうなるのかしら。
違うマシンから、公開鍵を登録してあるホストに、特に文句も言われず
あっさりログインできてしまった。
すべてlxc環境下の、Stretchにて確認。時刻はUTCのまま。
ホスト1(Host_1)から、リモートホスト(R1)に公開鍵登録。
ホスト2(Host_2)に、ホスト1と(名前もIDも)違うユーザ作成。
ホスト1の $USER/.ssh を、ホスト2の違うユーザの$HOMEに
コピーさせ、起動。
ホスト1でリモートホストにログイン。
そのまま、ホスト2でもリモートホストに何も怒られずに
ログイン。
違うIPから、同じフィンガープリントが記録された。
# tail -f /var/log/auth.log Aug 20 04:26:53 R1 sshd[84]: Server listening on 0.0.0.0 port 22. Aug 20 04:26:53 R1 sshd[84]: Server listening on :: port 22. Aug 20 04:27:13 R1 sshd[346]: Accepted publickey for $USER from $Host_1 port 34652 ssh2: ED25519 SHA256: $SAME_SSH_KEY_FINGERPRINT_XXXXXXXXXXXXXXXXX Aug 20 04:27:13 R1 sshd[346]: pam_unix(sshd:session): session opened for user $USER by (uid=0) Aug 20 04:27:19 R1 sshd[358]: Accepted publickey for $USER from $Host_2 port 37428 ssh2: ED25519 SHA256: $SAME_SSH_KEY_FINGERPRINT_XXXXXXXXXXXXXXXXX Aug 20 04:27:19 R1 sshd[358]: pam_unix(sshd:session): session opened for user $USER by (uid=0)
...なんての、他所でやったらいかんだろうな。
設定によってはwarningとかPermission deniedとかなる、かも。
前のpingとか、 ひとつ前のping とかで、Wifiが乱高下というか、ランダムというか、 が気になったので、 新旧Android端末で、ほぼ同時にルータに向けてPingしてみた。
旧い方はバッテリやSIMの認識が怪しくなってリプレースしたのだけど こういうあたりにもガタが来ていたのだろうか。
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。