home.social

#rwhod — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #rwhod, aggregated by home.social.

fetched live
  1. @ellenor2000

    This homework is multiple choice, it transpires. (-:

    #FreeBSD #rwhod

  2. @ellenor2000

    This homework is multiple choice, it transpires. (-:

    #FreeBSD #rwhod

  3. @lw

    … the obvious I-am-using-rsync-anyway solution becomes a small /run/uptime file or some such.

    #rwhod very quickly disappears from the system with only a small evolution, as by this point one has bypassed most of its function and made it into a pretty much just a tool for making a mangled copy of utx.active and a couple of sysctl results.

    @ska @ellenor2000

    #FreeBSD

  4. @lw

    … the obvious I-am-using-rsync-anyway solution becomes a small /run/uptime file or some such.

    #rwhod very quickly disappears from the system with only a small evolution, as by this point one has bypassed most of its function and made it into a pretty much just a tool for making a mangled copy of utx.active and a couple of sysctl results.

    @ska @ellenor2000

    #FreeBSD

  5. @lw

    I wouldn't be so sure.

    Once one gets to the point that one is just externally syncing #rwhod's files, it's not a great leap to realize that one might as well cut out the middle-man entirely: rsync (or whatever) the original utx.active files themselves, rather than have rwhod read them and chop off the fields at 8 characters, and just turn rwho into something that effectively runs who against a bunch of filenames.

    ruptime is slightly trickier, but …

    @ska @ellenor2000

    #FreeBSD

  6. @lw

    I wouldn't be so sure.

    Once one gets to the point that one is just externally syncing #rwhod's files, it's not a great leap to realize that one might as well cut out the middle-man entirely: rsync (or whatever) the original utx.active files themselves, rather than have rwhod read them and chop off the fields at 8 characters, and just turn rwho into something that effectively runs who against a bunch of filenames.

    ruptime is slightly trickier, but …

    @ska @ellenor2000

    #FreeBSD

  7. @ska

    #rwhod was deprecated by the #FreeBSD people in 2017. Five days later they were un-deprecated, drawing a distinction between rlogin/rsh and rwho/ruptime. At least one person was relying upon the latter.

    reviews.freebsd.org/D11743

    bugs.freebsd.org/bugzilla/show

    @emaste

  8. @ska

    #rwhod was deprecated by the #FreeBSD people in 2017. Five days later they were un-deprecated, drawing a distinction between rlogin/rsh and rwho/ruptime. At least one person was relying upon the latter.

    reviews.freebsd.org/D11743

    bugs.freebsd.org/bugzilla/show

    @emaste

  9. @ska

    #rwhod is in #FreeBSD, #NetBSD, #Debian, #Arch, and probably others. With subtle differences as they have diverged from the Berkeley root.

    packages.debian.org/source/sta

    aur.archlinux.org/packages/net

    Amusingly, the Arch people have given it a systemd unit, but haven't given it a systemd socket unit or done any of the fork-removal work to let systemd handle the privileges.

    And because their unit file/rc script doesn't specify the option, it still runs as the superuser on both Debian and Arch.

  10. @ska

    #rwhod is in #FreeBSD, #NetBSD, #Debian, #Arch, and probably others. With subtle differences as they have diverged from the Berkeley root.

    packages.debian.org/source/sta

    aur.archlinux.org/packages/net

    Amusingly, the Arch people have given it a systemd unit, but haven't given it a systemd socket unit or done any of the fork-removal work to let systemd handle the privileges.

    And because their unit file/rc script doesn't specify the option, it still runs as the superuser on both Debian and Arch.

  11. @ellenor2000

    This is what happens when I finally get so exasperated at my machine slowing down in the wee small hours that I comb through /etc/periodic to see what it is actually doing and find rwho in there. Twice.

    P.S.: By Friday, please.

    (-:

    #FreeBSD #NetBSD #rwhod

  12. @ellenor2000

    This is what happens when I finally get so exasperated at my machine slowing down in the wee small hours that I comb through /etc/periodic to see what it is actually doing and find rwho in there. Twice.

    P.S.: By Friday, please.

    (-:

    #FreeBSD #NetBSD #rwhod

  13. Interesting final note:

    #FreeBSD/#NetBSD (and netkit-rwho) #rwhod uses the original "who" UDP port, 513.

    There's a "new-who" UDP+TCP port, 550 and a "new" 224.0.2.1 multicast address. They have been in the assigned number list ever since RFC 1090, footnoted to Jon Postel and the "unofficial" BSD "rwho Group".

    They've been reserved for 35 years, and I can find nothing to show for the efforts of whatever this "unofficial Group" was.

    #AssignedNumbers #IANA

  14. Interesting final note:

    #FreeBSD/#NetBSD (and netkit-rwho) #rwhod uses the original "who" UDP port, 513.

    There's a "new-who" UDP+TCP port, 550 and a "new" 224.0.2.1 multicast address. They have been in the assigned number list ever since RFC 1090, footnoted to Jon Postel and the "unofficial" BSD "rwho Group".

    They've been reserved for 35 years, and I can find nothing to show for the efforts of whatever this "unofficial Group" was.

    #AssignedNumbers #IANA

  15. 10. IPv6 exists.

    11. fstatat() exists. You don't have to hardwire the private database location so you can get back there from chdir("/dev"). But anyway ...

    12. You might not need a login database or /dev. The kernel has all of the info about current sessions, their terminals, and their setlogin() names, in memory, but just lacks a sysctl for reading it out.

    #FreeBSD #rwhod

  16. 10. IPv6 exists.

    11. fstatat() exists. You don't have to hardwire the private database location so you can get back there from chdir("/dev"). But anyway ...

    12. You might not need a login database or /dev. The kernel has all of the info about current sessions, their terminals, and their setlogin() names, in memory, but just lacks a sysctl for reading it out.

    #FreeBSD #rwhod

  17. Tool changes:

    5. Follow UCSPI-UDP and UCSPI-TCP conventions, at minimum as an option. Let someone else with privileges open the socket.

    6. Don't fork-and-exit. Allow simple logging to standard error. Let someone else have already dropped privileges and chdir()ed you. Permit proper process supervision.

    7. --help

    8. Allow the login database to be configurable, as a command line option or some such.

    9. Permit a reduced mode where multiple terminals are squashed into one.

    #FreeBSD #rwhod

  18. Tool changes:

    5. Follow UCSPI-UDP and UCSPI-TCP conventions, at minimum as an option. Let someone else with privileges open the socket.

    6. Don't fork-and-exit. Allow simple logging to standard error. Let someone else have already dropped privileges and chdir()ed you. Permit proper process supervision.

    7. --help

    8. Allow the login database to be configurable, as a command line option or some such.

    9. Permit a reduced mode where multiple terminals are squashed into one.

    #FreeBSD #rwhod

  19. What lessons could the 21st century teach #FreeBSD #rwhod?

    0. More modern cluster monitoring tools exist. But failing that ...

    Protocol changes:

    1. Encrypt broadcasts with a shared secret that is installed by sysops via sneakernet or something.

    2. Use a client-server pull model. Send data only when an authorized client with the right shared secret (connects and) asks.

    3. 8 characters stopped being long enough in the 1980s.

    4. Use TAI64 timestamps.

  20. What lessons could the 21st century teach #FreeBSD #rwhod?

    0. More modern cluster monitoring tools exist. But failing that ...

    Protocol changes:

    1. Encrypt broadcasts with a shared secret that is installed by sysops via sneakernet or something.

    2. Use a client-server pull model. Send data only when an authorized client with the right shared secret (connects and) asks.

    3. 8 characters stopped being long enough in the 1980s.

    4. Use TAI64 timestamps.

  21. It's still a bloody awful program from a 21st century point of view.

    It cannot just inherit its socket already open. It does a compulsory initial fork-and-exit that cannot be turned off. It cannot be told to log to standard error.

    It broadcasts personal user information on the LAN, in cleartext. It uses source port number checks for security. it has fixed length buffers. Its signed 32-bit clock rolls over in 2038.

    One to make @ska shudder in horror, I suspect. (-:

    #FreeBSD #rwhod #UCSPI

  22. It's still a bloody awful program from a 21st century point of view.

    It cannot just inherit its socket already open. It does a compulsory initial fork-and-exit that cannot be turned off. It cannot be told to log to standard error.

    It broadcasts personal user information on the LAN, in cleartext. It uses source port number checks for security. it has fixed length buffers. Its signed 32-bit clock rolls over in 2038.

    One to make @ska shudder in horror, I suspect. (-:

    #FreeBSD #rwhod #UCSPI

  23. If one went by the manual page alone, especially older copies still floating around, #FreeBSD #rwhod would seem to be a security nightmare.

    unix.com/man_page/freebsd/8/rw

    What the manual page does not tell you is that it no longer runs as the superuser.

    The manual page was not changed to keep in line with the program changes.

    It also does not open the kernel image file on your boot volume every half hour, which was an outdated statement that was removed from the manual proper in 2020.

    #infosec

  24. If one went by the manual page alone, especially older copies still floating around, #FreeBSD #rwhod would seem to be a security nightmare.

    unix.com/man_page/freebsd/8/rw

    What the manual page does not tell you is that it no longer runs as the superuser.

    The manual page was not changed to keep in line with the program changes.

    It also does not open the kernel image file on your boot volume every half hour, which was an outdated statement that was removed from the manual proper in 2020.

    #infosec