Sidebar: Logging in with Nontypical Names
Logins of the form P12 are no problem when the user
logs in over a
network. Getting in over a modem, however, is harder.
The problem has to
do with /etc/getty, the UNIX daemon that monitors the
serial port. getty
prompts the user for a login name and a password, and
passes the
information to the program /bin/login, which verifies
the password and
starts the user's shell.
The problem is that getty does something more: it decides
if the user's
terminal can send lowercase characters. This functionality
seems to be a
throwback to the early days of UNIX when some terminals
only sent
uppercase characters. Because UNIX commands are lowercase,
such a
terminal would be useless unless something was done.
What was done was
that getty looks for at least one lowercase character
in the user's ID.
If it finds one, getty tells login that the terminal
can send lowercase.
If it doesn't, then login assumes the terminal can only
send uppercase,
and automatically converts everything to lowercase.
Therefore, a user
with a P12 login and a password like ABCDE12 can't log
in because
everything is changed to lowercase.
The workaround is straightforward: P12 logs in as "a"
with a password of
"b." getty passes this information to login,
including the fact that the
user's terminal has upper- and lowercase. Now login
takes over and
issues a "password incorrect" message. The
user types P12 and ABCDE12,
but now login, not getty, is running. login already
knows the terminal
is upper/lowercase so it just checks the password, and
lets the user log
in.
It's surprising to me that getty's "case mangling"
feature can't be
disabled. It was once useful, but nowadays probably
gets in the way more
than it helps. Maybe other versions of UNIX don't have
this problem.
We're currently running HP-UX 9.04.
Luckily, only users who log in over a true serial line
(for example,
from home over a modem) are affected by the getty glitch.
Users in the
office either have a PC running a terminal emulation
package over a
network, or a serial terminal. PCs, because they're
coming in over the
network, talk not to getty but to telnetd, the process
that monitors
network logins. telnetd doesn't do casemangling, and
so there's no
problem. The serial terminals would have a problem if
the terminals were
connected via a true serial connection, for example,
through a MUX. They
aren't. Rather, they're connected through DTCs, network
devices that
provide a serial connection to the serial terminal but
a network
interface to the host. The result is that the host doesn't
see a serial
connection and doesn't use getty for the serial terminals.
|