System Administration Guide, Volume II
  Search only this book
Download this book in PDF

Working With Remote Systems

53

This chapter describes all the tasks required to log in to remote systems and work with their files. This is a list of the step-by-step instructions in this chapter.
How to Search for and Remove .rhosts Filespage 1080
How to Find Out If a Remote System Is Operatingpage 1080
How to Find Who Is Logged In to a Remote Systempage 1081
How to Log In to a Remote System (rlogin)page 1082
How to Log Out From a Remote System (exit)page 1083
How to Open an ftp Connection to a Remote Systempage 1086
How to Close an ftp Connection to a Remote Systempage 1087
How to Copy Files From a Remote System (ftp)page 1087
How to Copy Files to a Remote System (ftp)page 1090
How to Copy Files Between a Local and a Remote System (rcp)page 1096
For the purpose of this chapter, a remote system is a workstation or server that is connected to the local system with any type of physical network and configured for TCP/IP communication, shown in Figure 53-1:

Graphic

Figure 53-1

On Solaris 2.x systems, TCP/IP configuration is established automatically during start-up. For more information, see the TCP/IP and Data Communications Administration Guide.

Logging In to a Remote System (rlogin)

The rlogin command enables you to log in to a remote system. Once logged in, you can navigate through the remote file system and manipulate its contents (subject to authorization), copy files, or execute remote commands.
If the system you are logging into is in a remote domain, be sure to append the domain name to the system name. In this example, SOLAR is the name of the remote domain:
rlogin pluto.SOLAR

Also, you can interrupt a remote login operation at any time by typing Control-d.

Authentication for Remote Logins (rlogin)

Authentication (establishing who you are) for rlogin operations can be performed either by the remote system or by the network environment.
The main difference between these forms of authentication lies in the type of interaction they require from you and the way they are established. If a remote system tries to authenticate you, you will be prompted for a password, unless you set up the /etc/hosts.equiv or .rhosts file. If the network tries to authenticate you, you won't be asked for a password, since the network already knows who you are. Figure 53-2 shows a simplified illustration to describe authentication for remote logins.

Graphic

Figure 53-2 rlogin

When the remote system attempts to authenticate you, it relies on information in its local files; specifically if:
  • Your system name and user name appears in the remote system's /etc/hosts.equiv file, or
  • Your system name and user name appears in the remote user's .rhosts file, under the remote user's home directory.
Network authentication relies on one of these two methods:
  • A "trusting network environment" that has been set up with your local network information service and the automounter.
  • One of the network information services pointed to by the remote system's /etc/nsswitch.conf file contains information about you.

Note - Network authentication generally supersedes system authentication.

The /etc/hosts.equiv File

The /etc/hosts.equiv file contains a list of trusted hosts for a remote system, one per line. If a user attempts to log in remotely (using rlogin) from one of the hosts listed in this file, and if the remote system can access the user's password entry, the remote system allows the user to log in without a password.
A typical hosts.equiv file has the following structure:

  host1  
  host2 user_a  
  +@group1  
  -@group2  

When a simple entry for a host is made in hosts.equiv, such as the entry above for host1, it means that the host is trusted, and so is any user at that machine.
If the user name is also mentioned, as in the second entry in the example, then the host is trusted only if the specified user is attempting access.
A group name preceded by a plus sign (+) means that all the machines in that netgroup are considered trusted.
A group name preceded by a minus sign (-) means that none of the machines in that netgroup are considered trusted.

CAUTION Caution - The /etc/hosts.equiv file presents a security risk. If you maintain a /etc/hosts.equiv file on your system, you should include only trusted hosts in your network. The file should not include any host that belongs to a different network, or any machines that are in public areas. (For example, do not include a host that is located in a terminal room.)

This can create a serious security problem. Either replace the /etc/hosts.equiv file with a correctly configured one, or remove the file altogether.

CAUTION Caution - A single line of + in the /etc/hosts.equiv file indicates that every known host is trusted.

The .rhosts File

The .rhosts file is the user equivalent of the /etc/hosts.equiv file. It contains a list of host-user combinations, rather than hosts in general. If a host-user combination is listed in this file, the specified user is granted permission to log in remotely from the specified host without having to supply a password.
Users can create .rhosts files in their home directories. Using the .rhosts file is another way to allow trusted access between their own accounts on different systems without using the /etc/hosts.equiv file.

CAUTION Caution - Unfortunately, the .rhosts file presents a major security problem. While the /etc/hosts.equiv file is under the system administrator's control and can be managed effectively, any user may create a .rhosts file granting access to whomever the user chooses without the system administrator's knowledge.

The only secure way to manage .rhosts files is to completely disallow them. See "How to Search for and Remove .rhosts Files" on page 1080 for detailed instructions. As system administrator, you can check the system often for violations of this policy. One possible exception to this policy is for the root account--you may need to have a .rhosts file to perform network backups and other remote services.

Linking Remote Logins

Provided your system is configured properly, you can link remote logins. In this example, a user on earth logs in to jupiter, and from there decides to log in to pluto:

Imported image(378x175)

Of course, the user could have logged out of jupiter and then logged in directly to pluto, but this type of linking can be more convenient.
To link remote logins without having to supply a password, you must have the /etc/hosts.equiv or .rhosts file set up correctly.

Direct vs. Indirect Remote Logins

The rlogin command allows you to log in to a remote system directly or indirectly, as shown in Figure 53-3 on page 1077.

Imported image(380x349)

Figure 53-3 Direct and Indirect Logins
A direct remote login is attempted with the default user name; that is, the user name of the individual currently logged in to the local system. This is the most common form of remote login.
An indirect remote login is attempted with a different user name, which is supplied during the remote login operation. This is the type of remote login you might attempt from a workstation that you borrowed temporarily. For instance, if you were in a coworker's office and needed to examine files in your home directory, you might log in to your system remotely, from your coworker's system, but you would perform an indirect remote login, supplying your own user name.
The dependencies between direct and indirect logins, and authentication methods are summarized in Table 53-1.
Table 53-1 rlogin
Type of LoginUser Name Supplied ByAuthenticationPassword
DirectSystemNetworkNone
SystemRequired
IndirectUserNetworkNone
SystemRequired

What Happens After You Log In Remotely

When you log in to a remote system, the rlogin command attempts to find your home directory. If the rlogin command can't find your home directory, it will assign you to the remote system's root (/) directory. For example:

  Unable to find home directory, logging in with /  
  pluto(/)  

However, if the rlogin command finds your home directory, it sources both your .cshrc and .login files. Therefore, after a remote login, your prompt is your standard login prompt, and the current directory is the same as when you log in locally. For example, if your usual prompt displays your system name and working directory, and if upon login your working directory is your home directory . . .

  earth(/home/smith):  

. . . when you log in to a remote system, you will see a similar prompt and your working directory will be your home directory, regardless of the directory from which you entered the rlogin command:

  earth(/home/smith):rlogin pluto  
  .  
  .  
  .  
  pluto(/home/smith):  

The only difference is that the name of the remote system would take the place of your local system at the beginning of the prompt. Where, then, is the remote file system? It is parallel to your home directory, as shown below:

Imported image(400x165)

In other words, if you cd to /home and then run ls, this is what you'll see:

  earth(home/smith): cd ..  
  earth(/home): ls  
  smith  jones  

· How to Search for and Remove .rhosts Files

  1. Become root.

  2. Search for and remove .rhosts files by using the find(1) command.


  # find home-directories -name .rhosts -print | xargs -i -t rm{}  

In this command,
home-directories....Is the path to a directory where user's home directories are located.
The find command starts at the designated directory and searches for any file named .rhosts. If it finds any, it prints the path on the screen and removes it.

Example--Searching For and Removing .rhosts Files

The following example searches and removes .rhosts files in all the user's home directories located in the /export/home directory.

  # find /export/home -name .rhosts -print | xargs -i -t rm{}  

· How to Find Out If a Remote System Is Operating

Find out if a remote system is operating by using the ping(1M) command.

  $ ping system-name | ip-address  

In this command,
system-nameIs the name of the remote system.
ip-addressIs the IP address of the remote system.
The ping command returns one of three messages:
Status MessageExplanation
system-name is aliveThe system can be accessed over the network.
ping: unknown host system-nameThe system name is unknown.
ping: no answer from system-nameThe system is known, but is not currently operating.
If the system you "ping" is located in a different domain, the return message may also contain routing information, which you can ignore.
The ping command has a time-out of 20 seconds. In other words, if it does not get a response within 20 seconds, it returns the third message. You can force ping to wait longer (or less) by entering a time-out value, in seconds:
ping system-name | ip-address time-out
For more information, see the ping man page.

· How to Find Who Is Logged In to a Remote System

Find who is logged in to a remote system by using the rusers(1) command.

  $ rusers [-l] remote-system-name  

In this command,
rusers (No options) Displays the name of the system followed by the name of users currently logged in to it, including root.
-l
Displays additional information about each user: the user's login window, login time and date, amount of time logged in, and the name of the remote system from which the user logged on.

Example--Finding Who Is Logged In to a Remote System

The following example shows the short output of rusers.

  $ rusers pluto  
  pluto    smith  jones  

In the following example, the long version of rusers show that two users are logged in to the remote system named pluto. The first user logged in from the system console on November 18 and has been logged on for 4 hours and 10 minutes. The second user logged in from a remote system, mars, on the same date, and has been logged on for a similar amount of time.

  $ rusers -l pluto  
  smith     pluto:console       Nov 18 09:19     4:10  
  jones     mars:console        Nov 18 09:20     4:11   (mars)  

· How to Log In to a Remote System (rlogin)

Log in to a remote system using the rlogin(1) command.

  $ rlogin [-l user-name]     system-name  

In this command,
rlogin...(No options) Logs you in to the remote system directly; in other words, with your current user name.
-l user-name Logs you into the remote system indirectly; in other words, with the user name you supply.
If the network attempts to authenticate you, you won't be prompted for a password. If the remote system attempts to authenticate you, you will be asked to provide a password.
If the operation succeeds, the rlogin command displays brief information about your latest remote login to that system, the version of the operating system running on the remote system, and whether you have mail waiting for you in your home directory.

Example--Logging In to a Remote System (rlogin)

The following example shows the output of a direct remote login to pluto. The user has been authenticated by the network.

  $ rlogin pluto  
  Last login: Thu Oct 27 15:38:59 from earth  
  Sun Microsystems Inc.,   SunOS 5.4   Generic September 1994  
  You have mail.  

The following example shows the output of an indirect remote login to pluto, with the user being authenticated by the remote system.

  $ rlogin -l smith pluto  
  password: user-password  
  Last login: Thu Oct 27 15:38:59 from earth  
  Sun Microsystems Inc.,   SunOS 5.4   Generic September 1994  
  You have mail.  

· How to Log Out From a Remote System (exit)

Log out from a remote system by using the exit(1) command.

  $ exit  

Example--Logging Out From a Remote System (exit)

This example shows the user smith logging out from the system pluto.

  $ exit  
  pluto: smith logged out at Mon Oct 31 10:10:54 PST 1994  
  Goodbye!  
  Connection closed.  

Logging In to a Remote System (ftp)

The ftp command opens the user interface to the Internet's File Transfer Protocol. This user interface, called the command interpreter, enables you to log in to a remote system and perform a variety of operations with its file system. The principal operations are summarized in Table 53-2 on page 1085.
The main benefit of ftp over rlogin and rcp is that ftp does not require the remote system to be running UNIX. (The remote system does, however, need to be configured for TCP/IP communications.) On the other hand, rlogin provides access to a richer set of file manipulation commands than ftp does.

Authentication for Remote Logins (ftp)

Authentication for ftp remote login operations can be established either by:
  • Including your password entry in the remote system's /etc/passwd file or equivalent network information service map or table.
  • Establishing an anonymous ftp account on the remote system.

Essential ftp Commands

Table 53-2 ftp
CommandDescription
ftpAccesses the ftp command interpreter
ftp remote-systemEstablishes an ftp connection to a remote system. For instructions, see the task titled "How to Open an ftp Connection to a Remote System," on page 1086.
openLogs in to the remote system from the command interpreter
closeLogs out of the remote system and returns to the command interpreter
byeQuits the ftp command interpreter.
helpLists all ftp commands or, if a command name is supplied, briefly describes what the command does.
resetRe-synchronizes the command-reply sequencing with the remote ftp server.
lsLists the contents of the remote working directory
pwdDisplays the name of the remote working directory
cdChanges the remote working directory
lcdChanges the local working directory
mkdirCreates a directory on the remote system
rmdirDeletes a directory on the remote system
get, mgetCopies a file (or multiple files) from the remote working
directory to the local working directory
put, mputCopies a file (or multiple files) from the local working directory
to the remote working directory
delete,
mdelete
Deletes a file (or multiple files) from the remote working
directory
For more information, see the ftp(1) man page.

· How to Open an ftp Connection to a Remote System

  1. Make sure you have ftp authentication.

    You must have ftp authentication, as described in "Authentication for Remote Logins (ftp)" on page 1084.

  2. Open a connection to a remote system by using the ftp(1) command.


  $ ftp remote-system  

If the connection succeeds, a confirmation message and prompt is displayed.
  1. Enter your user name.


  Name (remote-system:user-name): user-name  

  1. If prompted, enter your password.


  331 Password required for user-name:  
  Password: password  

If the system you are accessing has established an anonymous ftp account, you will not be prompted for a password. If the ftp interface accepts your password, it displays a confirmation message and the (ftp>) prompt.
You can now use any of the commands supplied by the ftp interface, including help. The principal commands are summarized in Table 53-2 on page 1085.

Example--Opening an ftp Connection to a Remote System

This ftp session was established by the user smith on the remote system pluto:

  $ ftp pluto  
  Connected to pluto.  
  220 pluto FTP server (UNIX(r) System V Release 4) ready.  
  Name (pluto:smith): smith  
  331 Password required for smith:  
  Password: password  
  230 User smith logged in.  
  ftp>  

· How to Close an ftp Connection to a Remote System

Close an ftp connection to a remote system by using the bye command.

  ftp> bye  

A good-bye message appears, followed by your usual shell prompt.

· How to Copy Files From a Remote System (ftp)

  1. Change to a directory on the local system where you want the files from the remote system to be copied.


  $ cd target-directory  

  1. Establish an ftp connection.

    See "How to Open an ftp Connection to a Remote System" on page 1086.

  1. Change to the source directory.


  ftp> cd source-directory  

If your system is using the automounter, the home directory of the remote system's user appears parallel to yours, under /home.
  1. Make sure you have Read permission for the source files.


  ftp> ls -l  

  1. To copy a single file, use the get command.


  ftp> get file-name  

  1. To copy multiple files at once, use the mget command.


  ftp> mget file-name [file-name ...]  

You can supply a series of individual file names and you can use wildcard characters. The mget command will copy each file individually, asking you for confirmation each time.
  1. Close the ftp connections.


  ftp> bye  

Examples--Copying Files From a Remote System (ftp)

In this example, the user Smith has an open ftp connection with the system belonging to the user Jones, and uses the get command to copy a single file from Jones' home directory to his own home directory:

Imported image(504x321)

In this example, the same user Smith uses the mget command to copy a set of files from Jones' home directory to his own home directory. Note that Smith can accept or reject individual files in the set.

Imported image(504x157)

· How to Copy Files to a Remote System (ftp)

  1. Change to the source directory on the local system.

    The directory from which you enter the ftp command will be the local working directory, and thus the source directory for this operation.

  2. Establish an ftp connection.

    See "How to Open an ftp Connection to a Remote System" on page 1086.

  3. Change to the target directory.


  ftp> cd target-directory  

Remember, if your system is using the automounter, the home directory of the remote system's user appears parallel to yours, under /home.
  1. Make sure you have Write permission to the target directory.


  ftp> ls -l target-directory  

  1. To copy a single file, use the put command.


  ftp> put file-name  

  1. To copy multiple files at once, use the mput command.


  ftp> mput file-name [file-name ...]  

You can supply a series of individual file names and you can use wildcard characters. The mput command will copy each file individually, asking you for confirmation each time.
  1. To close the ftp connection, type bye.


  ftp> bye  

Examples--Copying Files to a Remote System (ftp)

In this example, the user Smith opens an ftp connection from the /home/smith/transfer directory into the /home/jones/transfer directory, and uses the put command to copy a file from his system to Jones' system:

Imported image(504x433)

In this example, the same user Smith uses the mget command to copy a set of files from Jones' home directory to his own home directory. Note that Smith can accept or reject individual files in the set.

Imported image(504x157)

Remote Copying With rcp

The rcp command copies files or directories between a local and a remote system or between two remote systems. You can use it from a remote system (after logging in with the rlogin command) or from the local system (without logging in to a remote system).
With rcp, you can perform the following remote copy operations:
  • Copy a file or directory from your system to a remote system
  • Copy a file or directory from a remote system to your local system
  • Copy a file or directory between remote systems from your local system
If you have the automounter running, you can perform these remote operations with the cp command. However, the range of cp is constrained to the virtual file system created by the automounter and to operations relative to a user's home directory and, since rcp performs the same operations without these constraints, this section will describe only the rcp versions of these tasks.

Security Considerations for Copy Operations

To copy files or directories between systems, you must have permission to log in and copy files.

CAUTION Caution - Both the cp and rcp commands can overwrite files without warning. Make sure file names are correct before executing the command.

Specifying Source and Target

With the rcp command in the C-shell, you can specify source (the file or directory you want to copy) and target (the location into which you will copy the file or directory) with either absolute or abbreviated pathnames.

Text Box(477x103)

Absolute pathnames identify files or directories mounted on a particular system. In the example above, the first absolute pathname identifies a file (MyFile.txt) on the mars system. Abbreviated pathnames identify files or directories relative to a user's home directory, wherever that may reside. In the first example above, the abbreviated pathname identifies the same file, MyFile.txt, but uses "~" symbol to indicate the jones home directory. In effect . . .
~  =  mars:/home/jones

The examples on the second line, above, demonstrate the user of absolute and abbreviated pathnames after a remote login. There is no difference for the abbreviated pathname, but because the remote login operation mounted the jones home directory onto the local system (parallel to the local user's home directory), the absolute pathname no longer requires the system name mars. For more information about how a remote login operation mounts another user's home directory, see "What Happens After You Log In Remotely" on page 1078.
Table 53-3 provides a representative sample of absolute and abbreviated pathnames recognized by the C shell. It uses the following terminology:
working directoryThe directory from which the rcp command is entered. Can be remote or local.
current userThe user name under which the rcp command is entered.
Table 53-3
Logged in toSyntaxDescription
local system.The local working directory
path/filenameThe path and filename in the local working directory
~The current user's home directory
~/path/filenameThe path and filename beneath the current user's home directory
~userThe home directory of user
~user/path/filenameThe path and filename beneath the home directory of user
remote-system:path/filenameThe path and filename in the remote working directory
remote system.The remote working directory
filenameThe filename in the remote working directory
path/filenameThe path and filename in the remote working directory
~The current user's home directory
~/path/filenameThe path and filename in the current user's home directory
~userThe home directory of user
~user/path/filenameThe path and filename beneath the home directory of user
local-system:path/filenameThe path and filename in the local working directory

· How to Copy Files Between a Local and a Remote System (rcp)

  1. Be sure you have permission to copy.

    You should at least have Read permission on the source system and Write permission on the target system.

  2. Determine the location of the source and target.

    If you don't know the path of the source or target, you can first log into the remote system with the rlogin command, as described in "How to Log In to a Remote System (rlogin)" on page 1082. Then, navigate through the remote system until you find the location. You can then perform the next step without logging out.

  3. Copy the file or directory.


  $ rcp [-r] source-file|directory   target-file|directory  

In this command,
rcp(No options) Copies a single file from the source to the target.
-rCopies a directory from the source to the target.
This syntax applies whether you are logged in to the remote system or in to the local system. Only the pathname of the file or directory changes, as described in Table 53-3 on page 1095, and as illustrated in the examples below.
You can use the "~" and "." characters to specify the path portions of the local file or directory names. Note, however, that "~" applies to the current user, not the remote system, and that "." applies to system you are logged into. For explanations of these symbols, see Table 53-3 on page 1095.

Examples--Copying Files Between a Local and a Remote System (rcp)

Here are a few examples. In the first two, the source is remote; in the last two, the source is local.
In this example, rcp copies the file letter.doc from the /home/jones directory of the remote system pluto to the working directory (/home/smith) on the local system, earth:

  earth(/home/smith): rcp pluto:/home/jones/letter.doc .  

Imported image(378x221)

Since the rcp operation is performed without a remote login, the "." symbol applies to the local system, not the remote system.
The working directory happens to be the local user's home directory, so it could have been specified with the "~" symbol as well:

  earth(home/smith): rcp pluto:/home/jones/letter.doc ~  

In the following example, rcp is used --while logged in to the remote system-- to perform the same operation. Although the flow of the operation is the same, the paths change to take into account the remote login:

  earth(/home/smith): rlogin pluto  
  .  
  .  
  .  
  pluto(/home/jones): rcp letter.doc ~  

Imported image(378x221)

Use of the "." symbol would be inappropriate in this instance because of the remote login; it would simply apply to the remote system, essentially directing rcp to create a duplicate file. The "~" symbol, however, refers to the current user's home directory, even when logged in to a remote system.
In the following example, rcp copies the file notice.doc from the home directory (/home/smith) of the local system earth to the /home/jones directory of the remote system, pluto:

  earth(/home/smith): rcp notice.doc pluto:/home/jones  

Imported image(378x221)

Because no remote filename is provided, the file notice.doc is copied into the /home/jones directory with the same name.
In this example, the operation is repeated, but rcp is entered from a different working directory on the local system (/tmp). Note the use of the "~" symbol to refer to the current user's home directory:

  earth(/tmp): rcp ~/notice.doc pluto:/home/jones  

In this example, rcp is used --while logged in to the remote system-- to perform the same operation as in the previous example. Although the flow of the operation is the same, the paths change the take into account the remote login:

  earth(/home/smith): rlogin pluto  
  .  
  .  
  .  
  pluto(/home/jones): rcp ~/notice.doc .  

Imported image(378x219)

In this instance, the "~" symbol can be used to denote the current user's home directory, even though it is on the local system. The "." symbol refers to the working directory on the remote system because the user is logged in to the remote system. Here is an alternative syntax that performs the same operation:

  pluto(/home/jones): rcp earth:/home/smith/notice.doc /home/jones