puder@burdvax.UUCP (06/10/83)
On our 4.1bsd system, we have discovered an interesting phenomenon. Summary: If lines are inserted or deleted from /etc/ttys, mail will be sent with the wrong From username. Details: If a line is added to /etc/ttys before the line describing ttyh1, (signalling init makes no difference to the mail problem) a user on ttyh1 who sends mail will have the name of the user on ttyh2 on the From line. I presume that deleting a line would cause the reverse problem. What seems to be happening is that mail is looking up the terminal name in /etc/ttys, and then indexing into /etc/utmp to find the user name. Am I right? Why is it done this way? Why is this not documented ?!? (And anyway, why doesn't init rebuild /etc/utmp when it gets the HUP signal?) Karl Puder burdvax!puder SDC-aBC, R & D Paoli, Pa. (215)648-7555
dbj.rice%rand-relay@sri-unix.UUCP (06/13/83)
From: Dave Johnson <dbj.rice@rand-relay> UCB Mail does a getlogin() to decide who to say the message is "From:", and if this returns a NULL, it instead tries a getpwuid(getuid()). Getlogin uses ttyslot() to find the "slot" number of this tty in /etc/ttys, and then uses this number also as the slot number in /etc/utmp (init maintains /etc/utmp in order of tty "slot" number as returned by ttyslot()). Thus, if you change /etc/ttys, you change what value is returned by ttyslot(), and thus, getlogin() starts looking at a different entry in /etc/utmp than was used to record when this person logged on to this terminal. Presumably, Mail thought it was faster to read through /etc/ttys than to read all of /etc/passwd to translate the uid... It should be "safe" to add new entries to the bottom of /etc/ttys. To "delete" lines from /etc/ttys, you can just put a "0" as the first character on the line and everybody will ignore that line. Dave Johnson Dept. of Math Science Rice University