Check the identity of a remote host
#include <unistd.h> int iruserok( uint32_t raddr, int superuser, char * ruser, char * luser ); int iruserok_sa( const void * raddr, int superuser, int rlen, char * ruser, char * luser );
libsocket
Use the -l socket option to qcc to link against this library.
The iruserok() routine checks the identity of a remote host. It's used by servers to authenticate clients requesting service with rcmd().
The rcmd(), rresvport(), and ruserok() functions are used by the rshd server (see the Utilities Reference), among others.
The iruserok() function takes a remote host's IP address, two user names, and a flag indicating whether the local user's name is that of the superuser. Then, if the user isn't the superuser, it checks the file /etc/hosts.equiv (described in the Utilities Reference).
If that lookup isn't done, or is unsuccessful, the .rhosts file in the local user's home directory is checked to see if the request for service is allowed. If this file is owned by anyone other than the user or the superuser, or if it's writable by anyone other than the owner, the check automatically fails.
The iruserok() function can handle only IPv4 addresses; iruserok_sa() and ruserok() can handle other address families as well.
The error code EAGAIN is overloaded to mean “All network ports in use.”
Safety: | |
---|---|
Cancellation point | Yes |
Interrupt handler | No |
Signal handler | No |
Thread | No |
gethostbyaddr(), gethostname(), rcmd(), rresvport(), ruserok()
/etc/hosts.equiv, rshd in the Utilities Reference