22:01:01
icon

utmp周りの動作確認用に、グループutmpに自分自身を入れることに。セキュリティ面からはどうなんだろうこれ…(テスト用なのでテストが終わったら外せば良いんだけど、忘れることもあるだろうというか多分忘れる)。

21:59:26
icon

sj3、Linuxは<utmp.h>ではなく<utmpx.h>を使ってutmpx越しに操作を行う方向に。おそらくこれでDragonFlyBSD/FreeBSD対応もできるはず(現状では未対応)。OpenBSD/NetBSDは従来通り<utmp.h>越しに。

とはいえ、login_tty()のためにLinuxは<utmp.h>が必要になるという…openpty()ではなくposix_openpt()使った方がヘッダ周りはすっきりするんだろうけど、現状ではここに挙げた全てのOSで共通して使えるという理由によりopenpty()のみ使うことにします。

github.com/jg1uaa/sj3/commit/5

Web site image
sj2.h, sj3.c: Linux utmp -> utmpx migrate · jg1uaa/sj3@5ea54ad
20:51:42
icon

sj3のutmp周り、これFreeBSD/DrgonFlyも<utmp.h>前提のコードになっているからイマドキの<utmpx.h>だと動かないですね…

06:59:34
icon

古いコードのモダナイズって将来的には(今すぐでも良いですよ?)AI様にお任せしてヒトはもう少しぐーたらできるのではないかということに期待したいんだけど…

06:56:45
icon

sj3原典のsj3.cを今作業中の奴に挿げ替えてutmp周りの動作が変わるかどうかのチェックが必要なんだろうなあ。それもVine2.5/Slackwareの両方で。

コード自体は原典からいじってない(そのまま抜き出しただけな)はずなんだけど。とりあえずutmp周りはLinux/それ以外と曖昧にしてたけど、これはOSごとに厳格な 。未対応なOSでもutmp周りは動かないけどsj3自体は動く、という方が良いはずだし。

06:34:55
icon

あの辺に手を出すと、「デーモン君のソース探検」とか「386 BSDカーネルソースコードの秘密」あたりも必読と言われそうなんだけど(欲しいけど)結構お高いんだよねえ…

06:30:34
icon

うーん…「何か」については「BSDを256倍使うための本」に書かれてるというのでメルカリでちょっと発注してみたけど(以前からLinux/BSDの256倍本は買わなきゃと思っていたけど今までずっと放ったままでいた)、その「何か」が一体何かが思い出せない…

06:09:05
icon

「UNIX」を「ちゃんと知ってる」人だと、この辺は「知ってて当然」なんだろうなあ…うぅぅぅぅぅぅ

06:08:31
icon

ん?FROMの項目はこれで良いのかな?なんか違う気もするんだが。

とりあえず、sshでrootに化けるんじゃなくて、rootでコンソールからログインしてsj3を動かさないとutmp周りのテストには全くならないことだけは分かった。収穫。

06:06:06
icon

uaa@slackware-vm2:~$ w
06:05:42 up 14 min, 4 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 06:04 3.00s 0.16s 0.07s ./sj3
uaa pts/0 192.168.0.144 06:03 1.00s 0.01s 0.00s w
root pts/1 - 06:04 3.00s 0.00s 0.00s top
uaa@slackware-vm2:~$

06:05:14 06:05:30
icon

(Slackware/after)
uaa@slackware-vm2:~$ w
06:04:25 up 12 min, 4 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 06:04 9.00s 0.11s 0.02s ./sj3
uaa pts/0 192.168.0.144 06:03 0.00s 0.01s 0.00s w
root pts/1 - 06:04 2.00s 0.00s 0.00s Jbash[root on s
uaa@slackware-vm2:~$

05:58:36
icon

なるほどこれじゃあutmp周りのコードを面倒くさいから削除するぜという考えは間違いだってことになるわなあ…

05:57:36
icon

uaa@framboise:~/z/sj3$ w
5:56AM up 45 mins, 3 users, load averages: 0.00, 0.02, 0.02
USER TTY FROM LOGIN@ IDLE WHAT
uaa p2 :0 5:41AM 0 ssh -Y 192.168.0.88
uaa p1 :0 5:55AM 0 ./sj3
uaa p3 sj3 on ttyp1 5:56AM 0 top
uaa@framboise:~/z/sj3$

sj3の動かしたksh上でtopを動かせばVine 2.5と同様にこうなるので…多分ちゃんと動いてるってことで良いのかな。

05:55:27
icon

(Vine 2.5/after2)
[uaa@localhost uaa]$ w
午後08時55分 稼働 2分間, 4 ユーザ, 負荷平均率: 0.02, 0.02, 0.00
ユーザー 端末 場所 ログイン時刻 待機 JCPU PCPU 現プロセス名
uaa pts/0 192.168.0.144 午後08時52分 0.00秒 0.01秒 0.00秒 w
root pts/1 :0 午後08時52分 4.00秒 0.01秒 0.00秒 ./sj3 -H 192.168.0.88
root ttyp0 - 午後08時54分 4.00秒 0.00秒 0.00秒 top
[uaa@localhost uaa]$

05:54:53
icon

(Vine 2.5/after)
[uaa@localhost uaa]$ w
午後08時54分 稼働 2分間, 4 ユーザ, 負荷平均率: 0.04, 0.03, 0.00
ユーザー 端末 場所 ログイン時刻 待機 JCPU PCPU 現プロセス名
uaa pts/0 192.168.0.144 午後08時52分 0.00秒 0.01秒 0.00秒 w
root pts/1 :0 午後08時52分 4.00秒 0.01秒 0.00秒 ./sj3 -H 192.168.0.88
root ttyp0 - 午後08時54分 2分07秒 0.00秒 0.00秒 Jbash[root on sj3]
[uaa@localhost uaa]$

05:54:06
icon

(Vine 2.5/before)
[uaa@localhost uaa]$ w
午後08時53分 稼働 1分間, 3 ユーザ, 負荷平均率: 0.06, 0.03, 0.01
ユーザー 端末 場所 ログイン時刻 待機 JCPU PCPU 現プロセス名
uaa pts/0 192.168.0.144 午後08時52分 0.00秒 0.01秒 0.00秒 w
root pts/1 :0 午後08時52分 21.00秒 0.01秒 0.01秒 bash
[uaa@localhost uaa]$

05:51:18
icon

uaa@framboise:~$ w
5:50AM up 39 mins, 3 users, load averages: 0.07, 0.07, 0.05
USER TTY FROM LOGIN@ IDLE WHAT
uaa p2 :0 5:41AM 0 ./sj3
uaa p1 :0 5:12AM 0 w
uaa p3 sj3 on ttyp2 5:50AM 0 Jksh[uaa on sj3]
uaa@framboise:~$

sj3 on ttyp2をやらせたかったのかな、utmp周りの操作を行う意図としては。suでrootに化けた上でsj3を動かしてるんだけど。

05:47:59
icon

uaa@framboise:/usr/src$ ls -l /var/run//utmp
-rw-rw-r-- 1 root utmp 7296 Jan 23 05:41 /var/run//utmp
uaa@framboise:/usr/src$

rootかグループutmpじゃないと勝手に書けないのでは…?(あるいは何らかの手段使うとか??)

05:17:51
icon

w(1)が2BSDか3.0BSDかの詳細については、CVSのログ見てくれって言われた(引用したリプライを頂きました)。
marc.info/?l=openbsd-misc&m=17

あと、個人的に送られてきたメールだとwはfingerを呼び出すスクリプトであった、という話もあって。

やっぱりUNIXは歴史を知らないと困る場面がありますね…うぅ。