NOME¶
rshd —
server della shell remota
SINTASSI¶
rshd [
-alnL]
DESCRIZIONE¶
Il server
rshd è il server per la routine
rcmd(3) e, di conseguenza, per il programma
rsh(1). Il server fornisce servizi di esecuzione remota con
autenticazione basata su numeri di porta privilegiati da host di fiducia.
Il server
rshd si mette in ascolto delle richieste di servizio
alla porta indicata nella specifica di servizio ``cmd''; vedere
services(5). Quando viene ricevuta una richiesta di servizio
viene iniziato il seguente protocollo:
- Il server verifica la porta sorgente del client. Se la
porta non è nel range 512-1023, il server abortisce la
connessione.
- Il server legge cartteri dal socket fino a un byte null
(`\0'). La stringa risultante è interpretata come un numero ASCII
base 10.
- Se il numero ricevuto nel passo 2 è non-zero, esso
è interpretato come numero di porta di un flusso secondario da usare
per stderr. Una seconda connessione è quindi creata
sulla porta specificata sulla macchina client. Anche la porta sorgente di
questa seconda connessione è nel range 512-1023.
- Il server verifica l'indirizzo sorgente del client e
richiede il corrispondente nome host (vedere
gethostbyaddr(3), hosts(5) e
named(8)). Se il nome host non può essere
determinato, è usata la rappresentazione con notazione a punti
dell'indirizzo dell'host. Se il nome dell'host è nello stesso dominio
del server (in accordo con gli ultimi due componenti del nome di dominio),
o se viene data l' opzione -a sono richiesti gli
indirizzi per quel nome host, verificando che nome e indirizzo
corrispondano. Se la verifica dell'indirizzo fallisce, la connessione
è abortita con il messaggio, ``Host address mismatch.''
- Un nome di utente che finisce con null di almeno 16
caratteri è recuperato sul primo socket. Questo nome utente è
interpretato come identità dell'utente sulla macchina del
client.
- Un nome di utente che termina con null di almeno 16
caratteri è recuperato sul primo socket. Questo nome utente è
interpretato come identità dell'utente da usare sulla macchina del
server.
- Un comando che termina con null da passare a una shell
è recuperato sul primo socket. La lunghezza del comando è
limitata dal limite superiore nella dimensione dell'elenco degli argomenti
del sistema.
- Rshd quindi valida l'utente usando
ruserok(3), che usa il file
/etc/hosts.equiv e il file .rhosts
trovato nella home directory dell'utente. L'opzione -l
impedisce a ruserok(3) di effettuare validazioni basate
sul file ``.rhosts'' dell'utente, a meno che l'utente non sia il
superutente.
- Se il file /etc/nologin esiste e
l'utente non è il superutente, la connessione è chiusa.
- Un byte null è restituito sul primo socket e la linea
di comando è passata alla normale shell di login dell'utente. La
shell eredita le connessione di rete stabilite da
rshd.
I messaggi keepalive a livello trasporto sono abilitato a meno che non sia
presente l'opzione
-n. L'uso di messaggi keepalive permette
alle sessioni di scadere se il client va in crash o diviene irraggiungibile.
L'opzione
-L causa il log di tutti gli accessi riusciti in
syslogd(8) come messaggi
auth.info
.
DIAGNOSTICA¶
Tranne l'ultimo elencato sopra, tutti i messaggi di diagnostica sono restituiti
al primo socket, dopo di che goni connessione di rete viene chiusa. In errore
è indicato da un byte iniziale con un valore di 1 (0 è restituito
nel precedente passo 10 quando tutti i passi precedenti l'esecuzione della
shell di login sono completati con successo).
- Locuser too
long.
- Il nome dell'utente sulla macchina del client è
più lungo di 16 caratteri.
- Ruser too
long.
- Il nome dell'utente sulla macchina remota è più
lungo di 16 caratteri.
- Command too
long.
- La linea di comando passata supera le dimensioni
dell'elenco argomenti (come configurato nel sistema).
- Login
incorrect.
- Non esiste alcun campo nel file password per il nome
utente.
- Remote
directory.
- Il comando chdir nella home directory
è fallito.
- Permission
denied.
- La procedura di autenticazione descritta sopra è
fallita.
- Can't make
pipe.
- La pipe necessaria per stderr, non è
stata creata.
- Can't fork; try
again.
- Un fork del server è fallito.
- <shellname>:
...
- La shell di login dell'utente non può essere avviata.
Questo messaggio è restituito alla connessione associata con
stderr, e on è preceduto da un byte flag.
VEDERE ANCHE¶
rsh(1),
rcmd(3),
ruserok(3)
BUG¶
La procedura di autenticazione usata qui presume l'integrità di ciascuna
macchina client e del mezzo di connessione. Questo non è sicuro, ma
è utile in un ambiente ``open''.
Deve essere presente un servizio per permettere la cifratura di tutti gli scambi
di dati.
Può essere usato un protocollo più estensibile (come Telnet).