Capitolo successivo Capitolo precedente Indice

53. Remote login

Una serie di programmi consente di eseguire delle operazioni su computer remoti. I nomi di questi iniziano convenzionalmente con una lettera r in modo da distinguerli da programmi equivalenti che svolgono la loro funzione in ambito locale. Oltre ai programmi che richiedono l'elaborazione, ci devono essere nel/nei server dei daemon in grado di attuare la richiesta.

53.1 Identificazione

L'esecuzione di una elaborazione in un computer remoto richiede il riconoscimento dell'utente, in modo da potere stabilire l'ambito, e di conseguenza i privilegi, in cui si deve trovare tale elaborazione. Il riconoscimento può avvenire attraverso una sorta di login, durante il funzionamento del programma dal lato client, oppure può essere basato sulla semplice fiducia, concedendo l'accesso attraverso la compilazione di alcuni file di configurazione. Indubbiamente, la ``fiducia'' è un metodo molto poco sicuro di amministrare il proprio sistema, ma quando una rete locale è ristretta a un ambito in cui tutto è comunque sotto controllo, la richiesta di una password può essere effettivamente un inutile fastidio.

Il riconoscimento può avvenire nel modo tradizionale, attraverso i file /etc/hosts.equiv e ~/.rhosts, oppure attraverso una autenticazione Kerberos. Quest'ultima non viene descritta.

Se si vuole concedere un accesso senza particolari controlli, occorre quindi predisporre il file /etc/hosts.equiv con un semplice elenco di nomi di computer (o di indirizzi IP) a cui si concede, in via preliminare, di accedere senza la richiesta di password. Successivamente, ogni utente che desidera poter accedere al proprio computer da uno o alcuni di quei computer indicati all'interno di /etc/hosts.equiv, deve creare il proprio file ~/.rhosts contenente lo stesso elenco di /etc/hosts.equiv o un suo sottoinsieme. Se tutto funziona, quando l'utente tizio si trova ad accedere al computer paperone.zagozigo.dg utilizzando un account con lo stesso nome che ha nel computer topolino.zigozago.dg, se esegue un programma come rsh su quel computer, non riceve alcuna richiesta di password.

/etc/hosts.equiv

Il file /etc/hosts.equiv permette di definire un elenco di computer che deve essere trattato come ``equivalente'' a quello locale. In pratica, ciò permette agli utenti di predisporre il file ~/.rhosts in modo analogo in modo da poter accedere da uno di questi computer senza tante formalità.

L'esempio seguente mostra il contenuto del file /etc/hosts.equiv di un computer per il quale si vuole consentire l'accesso da parte di topolino.zigozago.dg e di pippo.zigozago.dg.

topolino.zigozago.dg
pippo.zigozago.dg

~/.rhosts

Dopo aver definito il file /etc/hosts.equiv, ogni utente può predisporre il proprio file ~/.rhosts. Se l'utente vuole poter accedere da tutti i computer indicati da /etc/hosts.equiv può semplicemente farsene una copia e cambiargli nome, se invece vuole limitare ulteriormente l'accesso, può indicare nel proprio file ~/.rhosts solo un sottoinsieme di quanto indicato in quello generale.

53.2 Login remoto

Il login remoto è qualcosa di molto simile all'utilizzo di telnet e comunque rimane la base dei programmi di utilizzo ``remoto''. Dal lato del server occorre un daemon rlogind e dal lato del client, il programma rlogin.

# rlogind

rlogind [<opzioni>]

È il daemon del servizio necessario per ricevere connessioni attraverso rlogin. È gestito dal supervisore inetd e filtrato da tcpd.

Nell'esempio seguente, viene mostrata la riga di /etc/inetd.conf in cui si dichiara il suo possibile utilizzo.

login   stream  tcp     nowait  root    /usr/sbin/tcpd  in.rlogind

Alcune opzioni

-h

Permette anche all'utente root di utilizzare il file ~/.rhosts.

$ rlogin

rlogin [<opzioni>] <computer-remoto>

Si tratta di un modo per effettuare il login all'interno di un computer remoto, come se ci si trovasse sulla console di questo.

Alcune opzioni

-l <utente>

Con questa opzione è possibile specificare già nella riga di comando il nome dell'utente da utilizzare per il login nel sistema remoto. Quando ci si identifica in questo modo, viene richiesta la password in ogni caso.

-8

Abilita la connessione utilizzando una comunicazione a 8 bit in modo da poter utilizzare caratteri speciali come le lettere accentate.

53.3 Shell remota

Una shell remota è uno strumento per eseguire un comando in un computer remoto dirigendo il flusso normale di dati attraverso il programma utilizzato localmente. In pratica, per fare questo, si utilizza il daemon rshd dal lato server e rsh dal lato client.

rshd

rshd [<opzioni>]

È il daemon del servizio necessario per ricevere connessioni attraverso rsh. È gestito dal supervisore inetd e filtrato da tcpd.

Nell'esempio seguente, viene mostrata la riga di /etc/inetd.conf in cui si dichiara il suo possibile utilizzo.

shell   stream  tcp     nowait  root    /usr/sbin/tcpd  in.rshd

Alcune opzioni

-h

Permette anche all'utente root di utilizzare il file ~/.rhosts.

$ rsh

rsh [<opzioni>] <computer-remoto> [<comando>]

Permette di eseguire il comando richiesto nel computer remoto specificato se su quel computer è abilitata questa possibilità. Lo standard input ricevuto da rsh viene inviato allo standard input del comando remoto; lo standard output e lo standard error emessi dal comando remoto vengono ridiretti in modo che diventino rispettivamente lo standard output e lo standard error di rsh.

Questo meccanismo di ridirezione è l'elemento che rende utile questo programma e d'altra parte è anche il suo limite: non possono essere utilizzati programmi che richiedono l'interazione con l'utente, attraverso rsh.

Se rsh viene utilizzata senza l'indicazione del comando remoto, si ottiene in pratica un login attraverso rlogin.

Alcune opzioni

-l <utente>

Con questa opzione è possibile specificare già nella riga di comando il nome dell'utente da utilizzare per il login nel sistema remoto. Quando ci si identifica in questo modo, viene richiesta la password in ogni caso.

Esempi

$ rsh pippo.zigozago.dg cat /etc/fstab > copia-locale

Esegue il cat del file /etc/fstab del computer pippo.zigozago.dg e ne dirige l'output verso il file locale copia-locale.

$ rsh pippo.zigozago.dg cat /etc/fstab ">" copia-remota

Questo esempio sembra molto simile al precedente, ma utilizzando il simbolo di ridirezione tra virgolette, la shell locale non lo interpreta in questo modo, ma lo lascia tra gli argomenti di rsh. Così facendo, il simbolo di ridirezione viene gestito dal comando remoto generando così il file copia-remota proprio nel computer remoto.

$ rsh pippo.zigozago.dg tar -c -z /home/pluto > ~/pluto.tgz

Esegue l'archiviazione della directory /home/pluto/ del computer pippo.zigozago.dg generando l'archivio compresso ~/pluto.tgz nel computer locale.

53.4 Copia tra computer

Un modo per copiare dati tra un computer e un altro può essere quello di sfruttare un filesystem di rete. Un altro modo potrebbe essere quello di utilizzare rsh per copiare dati da un computer remoto verso quello locale (viceversa è un po' difficile).

Il modo più pratico è l'utilizzo di rcp attraverso il quale si possono copiare file tra due computer remoti o tra un computer remoto e quello locale.

rcp si avvale di rsh, di conseguenza, dal lato server occorre il daemon rshd.

$ rcp

rcp [<opzioni>] <origine> <destinazione>

rcp [<opzioni>] <origine>... <directory>

rcp copia file tra computer differenti. Ogni file o directory indicato tra gli argomenti, può essere espresso nella forma seguente.

[[<utente>@]<host>:]<file>

Se non viene indicato esplicitamente un utente, si intende fare riferimento a un utente remoto con lo stesso nome di quello usato localmente; se non viene indicato il nome o l'indirizzo del computer remoto, si intende quello locale.

Per eseguire il suo compito, rcp si avvale di rsh.

Quando si fa riferimento a file remoti senza l'indicazione di un percorso assoluto, occorre tenere presente che la directory corrente di un computer remoto corrisponde alla directory home dell'utente a cui si fa riferimento. Nello stesso modo, occorre tenere presente che, dal momento che rcp si avvale di rsh, le cose possono cambiare un po' a seconda del tipo di shell abbinato all'utente remoto.

Alcune opzioni

-r

Se all'interno dei file indicati come origine della copia, si trovano anche directory, queste vengono copiate assieme al loro contenuto, in modo ricorsivo. In tal caso, necessariamente, la destinazione deve essere una directory.

-p

Preserve. Con questa opzione si intende fare in modo che rcp tenti di riprodurre le stesse proprietà e gli stessi permessi nei file di destinazione, senza tenere conto del valore di umask. Quando questa opzione non viene indicata, nel caso in cui il file di destinazione esista già, vengono mantenuti i permessi e le proprietà di quello esistente, mentre se i file di destinazione vengono creati, si utilizzano i permessi del file originale, filtrati attraverso umask.

Esempi

$ rcp pippo.zigozago.dg:/home/paperoga/letterina ./letterina

Copia il file home/paperoga/letterina contenuto nel computer pippo.zigozago.dg, nella directory corrente del computer locale.

$ rcp pippo.zigozago.dg:\~/letterina ./letterina

Esegue una operazione simile a quella dell'esempio precedente, ma in questo caso si utilizza un codice macro che deve essere interpretato dalla shell remota. Per evitare che venga invece interpretato dalla shell locale, viene utilizzata la barra inclinata rovescia per proteggere la tilde.

 

1997.10.26 - Scritto da Daniele Giacomini   daniele@calion.com   (vedi copyright: Appunti Linux).


Capitolo successivo Capitolo precedente Indice