utmp周りの動作確認用に、グループutmpに自分自身を入れることに。セキュリティ面からはどうなんだろうこれ…(テスト用なのでテストが終わったら外せば良いんだけど、忘れることもあるだろうというか多分忘れる)。
OpenBSD(uaa@), Ham(JG1UAA), Ingress(Lv14, RES), Japanese(Sagamihara-city, Kanagawa)
Another side: https://social.tchncs.de/@uaa
npub1rarr265r9f9j6ewp960hcm7cvz9zskc7l2ykwul57e7xa60r8css7uf890
Messages from this Mastodon account can read via mostr.pub with npub1j3un8843rpuk4rvwnd7plaknf2lce58yl6qmpkqrwt3tr5k60vfqxmlq0w
utmp周りの動作確認用に、グループutmpに自分自身を入れることに。セキュリティ面からはどうなんだろうこれ…(テスト用なのでテストが終わったら外せば良いんだけど、忘れることもあるだろうというか多分忘れる)。
sj3、Linuxは<utmp.h>ではなく<utmpx.h>を使ってutmpx越しに操作を行う方向に。おそらくこれでDragonFlyBSD/FreeBSD対応もできるはず(現状では未対応)。OpenBSD/NetBSDは従来通り<utmp.h>越しに。
とはいえ、login_tty()のためにLinuxは<utmp.h>が必要になるという…openpty()ではなくposix_openpt()使った方がヘッダ周りはすっきりするんだろうけど、現状ではここに挙げた全てのOSで共通して使えるという理由によりopenpty()のみ使うことにします。
https://github.com/jg1uaa/sj3/commit/5ea54ad11d6908d147008f4edd3c5c3c6bcdca60
sj3のutmp周り、これFreeBSD/DrgonFlyも<utmp.h>前提のコードになっているからイマドキの<utmpx.h>だと動かないですね…
古いコードのモダナイズって将来的には(今すぐでも良いですよ?)AI様にお任せしてヒトはもう少しぐーたらできるのではないかということに期待したいんだけど…
sj3原典のsj3.cを今作業中の奴に挿げ替えてutmp周りの動作が変わるかどうかのチェックが必要なんだろうなあ。それもVine2.5/Slackwareの両方で。
コード自体は原典からいじってない(そのまま抜き出しただけな)はずなんだけど。とりあえずutmp周りはLinux/それ以外と曖昧にしてたけど、これはOSごとに厳格な#ifdefにするのが良いのかも 。未対応なOSでもutmp周りは動かないけどsj3自体は動く、という方が良いはずだし。
あの辺に手を出すと、「デーモン君のソース探検」とか「386 BSDカーネルソースコードの秘密」あたりも必読と言われそうなんだけど(欲しいけど)結構お高いんだよねえ…
うーん…「何か」については「BSDを256倍使うための本」に書かれてるというのでメルカリでちょっと発注してみたけど(以前からLinux/BSDの256倍本は買わなきゃと思っていたけど今までずっと放ったままでいた)、その「何か」が一体何かが思い出せない…
「UNIX」を「ちゃんと知ってる」人だと、この辺は「知ってて当然」なんだろうなあ…うぅぅぅぅぅぅ
ん?FROMの項目はこれで良いのかな?なんか違う気もするんだが。
とりあえず、sshでrootに化けるんじゃなくて、rootでコンソールからログインしてsj3を動かさないとutmp周りのテストには全くならないことだけは分かった。収穫。
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:~$
(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:~$
なるほどこれじゃあutmp周りのコードを面倒くさいから削除するぜという考えは間違いだってことになるわなあ…
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と同様にこうなるので…多分ちゃんと動いてるってことで良いのかな。
(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]$
(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]$
(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]$
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を動かしてるんだけど。
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じゃないと勝手に書けないのでは…?(あるいは何らかの手段使うとか??)
w(1)が2BSDか3.0BSDかの詳細については、CVSのログ見てくれって言われた(引用したリプライを頂きました)。
https://marc.info/?l=openbsd-misc&m=170593542104492&w=2
あと、個人的に送られてきたメールだとwはfingerを呼び出すスクリプトであった、という話もあって。
やっぱりUNIXは歴史を知らないと困る場面がありますね…うぅ。