summaryrefslogtreecommitdiff
path: root/src/lib/libc/net/rcmd.3
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libc/net/rcmd.3')
-rw-r--r--src/lib/libc/net/rcmd.3174
1 files changed, 118 insertions, 56 deletions
diff --git a/src/lib/libc/net/rcmd.3 b/src/lib/libc/net/rcmd.3
index 4db847c392..87e9a760a8 100644
--- a/src/lib/libc/net/rcmd.3
+++ b/src/lib/libc/net/rcmd.3
@@ -1,4 +1,4 @@
1.\" $NetBSD: rcmd.3,v 1.8 1995/02/25 06:20:52 cgd Exp $ 1.\" $OpenBSD: rcmd.3,v 1.27 2007/05/31 19:19:30 jmc Exp $
2.\" 2.\"
3.\" Copyright (c) 1983, 1991, 1993 3.\" Copyright (c) 1983, 1991, 1993
4.\" The Regents of the University of California. All rights reserved. 4.\" The Regents of the University of California. All rights reserved.
@@ -11,11 +11,7 @@
11.\" 2. Redistributions in binary form must reproduce the above copyright 11.\" 2. Redistributions in binary form must reproduce the above copyright
12.\" notice, this list of conditions and the following disclaimer in the 12.\" notice, this list of conditions and the following disclaimer in the
13.\" documentation and/or other materials provided with the distribution. 13.\" documentation and/or other materials provided with the distribution.
14.\" 3. All advertising materials mentioning features or use of this software 14.\" 3. Neither the name of the University nor the names of its contributors
15.\" must display the following acknowledgement:
16.\" This product includes software developed by the University of
17.\" California, Berkeley and its contributors.
18.\" 4. Neither the name of the University nor the names of its contributors
19.\" may be used to endorse or promote products derived from this software 15.\" may be used to endorse or promote products derived from this software
20.\" without specific prior written permission. 16.\" without specific prior written permission.
21.\" 17.\"
@@ -31,38 +27,67 @@
31.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32.\" SUCH DAMAGE. 28.\" SUCH DAMAGE.
33.\" 29.\"
34.\" @(#)rcmd.3 8.1 (Berkeley) 6/4/93 30.Dd $Mdocdate: May 31 2007 $
35.\"
36.Dd June 4, 1993
37.Dt RCMD 3 31.Dt RCMD 3
38.Os BSD 4.2 32.Os
39.Sh NAME 33.Sh NAME
40.Nm rcmd , 34.Nm rcmd ,
35.Nm rcmd_af ,
41.Nm rresvport , 36.Nm rresvport ,
37.Nm rresvport_af ,
42.Nm iruserok , 38.Nm iruserok ,
43.Nm ruserok 39.Nm ruserok ,
40.Nm iruserok_sa
44.Nd routines for returning a stream to a remote command 41.Nd routines for returning a stream to a remote command
45.Sh SYNOPSIS 42.Sh SYNOPSIS
46.Fd #include <unistd.h> 43.Fd #include <unistd.h>
47.Ft int 44.Ft int
48.Fn rcmd "char **ahost" "int inport" "const char *locuser" "const char *remuser" "const char *cmd" "int *fd2p" 45.Fn rcmd "char **ahost" "int inport" "const char *locuser" "const char *remuser" "const char *cmd" "int *fd2p"
49.Ft int 46.Ft int
47.Fn rcmd_af "char **ahost" "int inport" "const char *locuser" "const char *remuser" "const char *cmd" "int *fd2p" "int af"
48.Ft int
50.Fn rresvport "int *port" 49.Fn rresvport "int *port"
51.Ft int 50.Ft int
52.Fn iruserok "u_long raddr" "int superuser" "const char *ruser" "const char *luser" 51.Fn rresvport_af "int *port" "int af"
52.Ft int
53.Fn iruserok "u_int32_t raddr" "int superuser" "const char *ruser" "const char *luser"
53.Ft int 54.Ft int
54.Fn ruserok "const char *rhost" "int superuser" "const char *ruser" "const char *luser" 55.Fn ruserok "const char *rhost" "int superuser" "const char *ruser" "const char *luser"
56.Ft int
57.Fn iruserok_sa "const void *sa" "int salen" "int superuser" "const char *ruser" "const char *luser"
55.Sh DESCRIPTION 58.Sh DESCRIPTION
56The 59The
57.Fn rcmd 60.Fn rcmd
58function 61function is used by the superuser to execute a command on a remote
59is used by the super-user to execute a command on 62machine using an authentication scheme based on reserved
60a remote machine using an authentication scheme based 63port numbers.
61on reserved port numbers. 64If the calling process is not setuid, the
65.Ev RSH
66environment variable is set, and
67.Fa inport
68is
69.Dq shell/tcp ,
70.Xr rcmdsh 3
71is called instead with the value of
72.Ev RSH .
73Alternately, if the user is not the superuser,
74.Fn rcmd
75will invoke
76.Xr rcmdsh 3
77to run the command via
78.Xr rsh 1 .
79While
80.Fn rcmd
81can handle IPv4 cases only,
82the
83.Fn rcmd_af
84function can handle other cases as well.
85.Pp
62The 86The
63.Fn rresvport 87.Fn rresvport
64function 88and
65returns a descriptor to a socket 89.Fn rresvport_af
90functions return a descriptor to a socket
66with an address in the privileged port space. 91with an address in the privileged port space.
67The 92The
68.Fn iruserok 93.Fn iruserok
@@ -75,11 +100,13 @@ All four functions are present in the same file and are used
75by the 100by the
76.Xr rshd 8 101.Xr rshd 8
77server (among others). 102server (among others).
103.Fn iruserok_sa
104is an address family independent variant of
105.Fn iruserok .
78.Pp 106.Pp
79The 107The
80.Fn rcmd 108.Fn rcmd
81function 109function looks up the host
82looks up the host
83.Fa *ahost 110.Fa *ahost
84using 111using
85.Xr gethostbyname 3 , 112.Xr gethostbyname 3 ,
@@ -90,15 +117,15 @@ is set to the standard name of the host
90and a connection is established to a server 117and a connection is established to a server
91residing at the well-known Internet port 118residing at the well-known Internet port
92.Fa inport . 119.Fa inport .
120If the user is not the superuser, the only valid port is
121.Dq shell/tcp
122(usually port 514).
93.Pp 123.Pp
94If the connection succeeds, 124If the connection succeeds,
95a socket in the Internet domain of type 125a socket in the Internet domain of type
96.Dv SOCK_STREAM 126.Dv SOCK_STREAM
97is returned to the caller, and given to the remote 127is returned to the caller, and given to the remote
98command as 128command as stdin and stdout.
99.Em stdin
100and
101.Em stdout .
102If 129If
103.Fa fd2p 130.Fa fd2p
104is non-zero, then an auxiliary channel to a control 131is non-zero, then an auxiliary channel to a control
@@ -113,27 +140,46 @@ signal numbers, to be
113forwarded to the process group of the command. 140forwarded to the process group of the command.
114If 141If
115.Fa fd2p 142.Fa fd2p
116is 0, then the 143is
117.Em stderr 144.Va NULL ,
118(unit 2 of the remote 145then the standard error (unit 2 of the remote command) will be made
119command) will be made the same as the 146the same as the standard output and no provision is made for sending
120.Em stdout 147arbitrary signals to the remote process, although you may be able to
121and no 148get its attention by using out-of-band data.
122provision is made for sending arbitrary signals to the remote process, 149Note that if the user is not the superuser,
123although you may be able to get its attention by using out-of-band data. 150.Fa fd2p
151must be
152.Va NULL .
153.Pp
154.Fn rcmd_af
155takes address family in the last argument.
156If the last argument is
157.Dv PF_UNSPEC ,
158interpretation of
159.Fa *ahost
160will obey the underlying address resolution like DNS.
124.Pp 161.Pp
125The protocol is described in detail in 162The protocol is described in detail in
126.Xr rshd 8 . 163.Xr rshd 8 .
127.Pp 164.Pp
128The 165The
129.Fn rresvport 166.Fn rresvport
130function is used to obtain a socket with a privileged 167and
131address bound to it. This socket is suitable for use 168.Fn rresvport_af
132by 169functions are used to obtain a socket with a privileged
170address bound to it.
171This socket is suitable for use by
133.Fn rcmd 172.Fn rcmd
134and several other functions. Privileged Internet ports are those 173and several other functions.
135in the range 0 to 1023. Only the super-user 174Privileged Internet ports are those in the range 0 to
136is allowed to bind an address of this sort to a socket. 175.Va IPPORT_RESERVED - 1 ,
176which happens to be 1023.
177Only the superuser is allowed to bind an address of this sort to a socket.
178.Fn rresvport
179and
180.Fn rresvport_af
181need to be seeded with a port number; if that port
182is not available these functions will find another.
137.Pp 183.Pp
138The 184The
139.Fn iruserok 185.Fn iruserok
@@ -141,10 +187,10 @@ and
141.Fn ruserok 187.Fn ruserok
142functions take a remote host's IP address or name, respectively, 188functions take a remote host's IP address or name, respectively,
143two user names and a flag indicating whether the local user's 189two user names and a flag indicating whether the local user's
144name is that of the super-user. 190name is that of the superuser.
145Then, if the user is 191Then, if the user is
146.Em NOT 192.Em not
147the super-user, it checks the 193the superuser, it checks the
148.Pa /etc/hosts.equiv 194.Pa /etc/hosts.equiv
149file. 195file.
150If that lookup is not done, or is unsuccessful, the 196If that lookup is not done, or is unsuccessful, the
@@ -153,19 +199,19 @@ in the local user's home directory is checked to see if the request for
153service is allowed. 199service is allowed.
154.Pp 200.Pp
155If this file does not exist, is not a regular file, is owned by anyone 201If this file does not exist, is not a regular file, is owned by anyone
156other than the user or the super-user, or is writeable by anyone other 202other than the user or the superuser, or is writeable by anyone other
157than the owner, the check automatically fails. 203than the owner, the check automatically fails.
158Zero is returned if the machine name is listed in the 204Zero is returned if the machine name is listed in the
159.Dq Pa hosts.equiv 205.Pa hosts.equiv
160file, or the host and remote user name are found in the 206file, or the host and remote user name are found in the
161.Dq Pa .rhosts 207.Pa .rhosts
162file; otherwise 208file; otherwise
163.Fn iruserok 209.Fn iruserok
164and 210and
165.Fn ruserok 211.Fn ruserok
166return \-1. 212return \-1.
167If the local domain (as obtained from 213If the local domain (as obtained from
168.Xr gethostname 2 ) 214.Xr gethostname 3 )
169is the same as the remote domain, only the machine name need be specified. 215is the same as the remote domain, only the machine name need be specified.
170.Pp 216.Pp
171If the IP address of the remote host is known, 217If the IP address of the remote host is known,
@@ -173,32 +219,48 @@ If the IP address of the remote host is known,
173should be used in preference to 219should be used in preference to
174.Fn ruserok , 220.Fn ruserok ,
175as it does not require trusting the DNS server for the remote host's domain. 221as it does not require trusting the DNS server for the remote host's domain.
222.Pp
223While
224.Fn iruserok
225can handle IPv4 addresses only,
226.Fn iruserok_sa
227and
228.Fn ruserok
229can handle other address families as well, like IPv6.
230The first argument of
231.Fn iruserok_sa
232is typed as
233.Li "void *"
234to avoid dependency between
235.Aq Pa unistd.h
236and
237.Aq Pa sys/socket.h .
176.Sh DIAGNOSTICS 238.Sh DIAGNOSTICS
177The 239The
178.Fn rcmd 240.Fn rcmd
179function 241function returns a valid socket descriptor on success.
180returns a valid socket descriptor on success.
181It returns \-1 on error and prints a diagnostic message on the standard error. 242It returns \-1 on error and prints a diagnostic message on the standard error.
182.Pp 243.Pp
183The 244The
184.Fn rresvport 245.Fn rresvport
185function 246and
186returns a valid, bound socket descriptor on success. 247.Fn rresvport_af
248functions return a valid, bound socket descriptor on success.
187It returns \-1 on error with the global value 249It returns \-1 on error with the global value
188.Va errno 250.Va errno
189set according to the reason for failure. 251set according to the reason for failure.
190The error code 252The error code
191.Dv EAGAIN 253.Er EAGAIN
192is overloaded to mean ``All network ports in use.'' 254is overloaded to mean
255.Dq all network ports in use .
193.Sh SEE ALSO 256.Sh SEE ALSO
194.Xr rlogin 1 ,
195.Xr rsh 1 , 257.Xr rsh 1 ,
196.Xr intro 2 , 258.Xr intro 2 ,
197.Xr rexec 3 , 259.Xr bindresvport 3 ,
198.Xr rexecd 8 , 260.Xr bindresvport_sa 3 ,
199.Xr rlogind 8 , 261.Xr rcmdsh 3 ,
200.Xr rshd 8 262.Xr rshd 8
201.Sh HISTORY 263.Sh HISTORY
202These 264These
203functions appeared in 265functions appeared in
204.Bx 4.2 . 266.Bx 4.2 .