165 lines
6.3 KiB
Groff
165 lines
6.3 KiB
Groff
.\" Copyright (c) 1985, 1993
|
|
.\" The Regents of the University of California. All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. All advertising materials mentioning features or use of this software
|
|
.\" must display the following acknowledgement:
|
|
.\" This product includes software developed by the University of
|
|
.\" California, Berkeley and its contributors.
|
|
.\" 4. Neither the name of the University nor the names of its contributors
|
|
.\" may be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" @(#)acucntrl.8 8.2 (Berkeley) 12/11/93
|
|
.\"
|
|
.TH ACUCNTRL 8 "December 11, 1993"
|
|
.UC 6
|
|
.SH NAME
|
|
acucntrl \- turn around tty line between dialin and dialout
|
|
.SH SYNOPSIS
|
|
.B /usr/lib/uucp/acucntrl
|
|
keyword ttyline
|
|
.SH DESCRIPTION
|
|
.PP
|
|
.I Acucntrl
|
|
turns around the terminal line,
|
|
enabling it to be used for both dialin and dialout.
|
|
On dialin a terminal line is assumed to have modem control enabled and a getty
|
|
process in existence waiting for logins. On dialout modem control is disabled
|
|
and there is no getty process.
|
|
.PP
|
|
This program must be run setuid to root.
|
|
.PP
|
|
.I keyword
|
|
is chosen from the list:
|
|
.I disable
|
|
or
|
|
.IR dialout ,
|
|
to condition a line for dialout;
|
|
and
|
|
.I enable
|
|
or
|
|
.IR dialin ,
|
|
to condition a line for dialin.
|
|
.PP
|
|
When the line is conditioned for dialing out, the login name of the real uid
|
|
of the process is placed in /etc/utmp in capitals.
|
|
This declares that the line is in use and acts as an additional locking
|
|
mechanism.
|
|
.I Acucntrl
|
|
will refuse to act if the /etc/utmp entry for the line is not null,
|
|
is not the the user's login name (capitalized or not),
|
|
and if the process is not running as the superuser.
|
|
The last condition is to allow the superuser to clear the state of the line.
|
|
.PP
|
|
Turning modem control on or off is handled by poking into /dev/kmem.
|
|
It is currently implemented for dz, dh, and dmf lines.
|
|
.PP
|
|
Under 4.2 BSD the program will also refuse to disable a line if carrier is
|
|
sensed on it. This is to avoid the dead period where someone has just dialed
|
|
in and made the connection but has not yet logged in.
|
|
.PP
|
|
.I Ttyline
|
|
can be either of the form tty* or /dev/tty*.
|
|
Enabling/disabling a line whose name does not begin with ttyd? is prohibited
|
|
unless the real uid of the process is 0 or if the login name corresponding to
|
|
the real uid is uucp. This is a security precaution.
|
|
.PP
|
|
Steps taken when disabling
|
|
.RI ( i . e .
|
|
setup for dialing out)
|
|
.IP 1)
|
|
check input arguments
|
|
.IP 2)
|
|
look in /etc/utmp to check that the line is not in use by another user
|
|
.IP 3)
|
|
disable modem control on line
|
|
.IP 4)
|
|
check for carrier on device
|
|
.IP 5)
|
|
change owner of device to real uid
|
|
.IP 6)
|
|
edit /etc/ttys, changing the first character of the appropriate line to 0
|
|
.IP 7)
|
|
send a hangup to process 1 to poke init to disable getty
|
|
.IP 8)
|
|
post uid name in capitals in /etc/utmp to let world know device has been grabbed
|
|
.IP 9)
|
|
make sure that DTR is on
|
|
.PP
|
|
Steps taken when enabling
|
|
.RI ( i . e .
|
|
setup for dialing in)
|
|
.IP 1)
|
|
check input arguments
|
|
.IP 2)
|
|
look in /etc/utmp to check that the line is not in use by another user
|
|
.IP 3)
|
|
make sure modem control on line is disabled
|
|
.IP 4)
|
|
turn off DTR to make sure line is hung up
|
|
.IP 5)
|
|
condition line: clear exclusive use and set hangup on close modes
|
|
.IP 6)
|
|
turn on modem control
|
|
.IP 7)
|
|
edit /etc/ttys, changing the first character of the appropriate line to 1
|
|
.IP 8)
|
|
send a hangup to process 1 to poke init to enable getty
|
|
.IP 9)
|
|
clear uid name for /etc/utmp
|
|
.SH HISTORY
|
|
.PP
|
|
First written by Allan Wilkes (fisher!allan)
|
|
.PP
|
|
Modified June 8,1983 by W.Sebok (astrovax!wls) to poke the kernel rather
|
|
than use a kernel hack to turn on/off modem control, using a subroutine
|
|
stolen from a program written by Tsutomu Shimomura {astrovax,escher}!tsutomu
|
|
.PP
|
|
Worked over many times by W.Sebok
|
|
.RI ( i . e .
|
|
hacked to death)
|
|
.SH FILES
|
|
/dev/kmem, /kernel, /etc/ttys, /etc/utmp, /dev/tty*
|
|
.SH BUGS
|
|
.PP
|
|
Sensing carrier requires the 4.2 BSD TIOCMGET ioctl call. Unfortunately this
|
|
ioctl is not implemented in the vanilla 4.2 BSD dh driver even though the
|
|
dz and dmf drivers use an emulation of the DH11's modem control bits. This
|
|
has been fixed here.
|
|
.PP
|
|
Some time (currently 2 seconds) is required between disabling modem control
|
|
and opening the device. This is probably because of a race with getty whose
|
|
open is finally being allowed to complete. This time interval may not be
|
|
enough on a loaded system. Because of this problem and the above problem with
|
|
the dh driver there is deliberately no error message given when the TIOCMGET
|
|
ioctl fails.
|
|
.PP
|
|
Previously there were similar synchronization problems with the init process.
|
|
When dialins are disabled the capitalized name of the process cannot be posted
|
|
into /etc/utmp until init has finished clearing /etc/utmp. However one does
|
|
not know how long that will take, and, on a loaded system, it can take quite
|
|
a while. This was solved by the strategy of 1) posting the name, 2) poking
|
|
init, 3) going into a loop where the process repeatedly waits a second and
|
|
checks whether the entry has been cleared from /etc/utmp, and 4) posting the
|
|
name again.
|