etcinetd.conf

/etc/inetd.conf

A sample inetd.conf file is shown here. It contains entries for the most commonly used Internet services:

 ftp     stream  tcp     nowait  root    /usr/sbin/in.ftpd   in.ftpd -l telnet  stream  tcp     nowait  root    /usr/sbin/in.telnetd   in.telnetd name    dgram   udp     wait    root    /usr/sbin/in.tnamed   in.tnamed shell   stream  tcp     nowait  root    /usr/sbin/in.rshd   in.rshd login   stream  tcp     nowait  root    /usr/sbin/in.rlogind   in.rlogind exec    stream  tcp     nowait  root    /usr/sbin/in.rexecd   in.rexecd comsat  dgram   udp     wait    root    /usr/sbin/in.comsat   in.comsat talk    dgram   udp     wait    root    /usr/sbin/in.talkd   in.talkd uucp    stream  tcp     nowait  root    /usr/sbin/in.uucpd   in.uucpd tftp   dgram   udp     wait    root    /usr/sbin/in.tftpd   in.tftpd -s /tftpboot finger  stream  tcp     nowait  nobody  /usr/sbin/in.fingerd   in.fingerd systat stream  tcp     nowait  root    /usr/bin/ps   ps -ef netstat        stream  tcp     nowait  root    /usr/bin/netstat   netstat -f inet time    stream  tcp     nowait  root    internal time    dgram   udp     wait    root    internal echo    stream  tcp     nowait  root    internal echo    dgram   udp     wait    root    internal discard stream  tcp     nowait  root    internal discard dgram   udp     wait    root    internal daytime stream  tcp     nowait  root    internal daytime dgram   udp     wait    root    internal chargen stream  tcp     nowait  root    internal chargen dgram   udp     wait    root    internal 100232/10       tli     rpc/udp wait root /usr/sbin/sadmind     sadmind rquotad/1       tli     rpc/datagram_v  wait root   /usr/lib/nfs/rquotad  rquotad rusersd/2-3     tli     rpc/datagram_v,circuit_v        wait root   /usr/lib/netsvc/rusers/rpc.rusersd    rpc.rusersd sprayd/1        tli     rpc/datagram_v  wait root   /usr/lib/netsvc/spray/rpc.sprayd      rpc.sprayd walld/1         tli     rpc/datagram_v  wait root   /usr/lib/netsvc/rwall/rpc.rwalld      rpc.rwalld rstatd/2-4      tli   rpc/datagram_v wait root   /usr/lib/netsvc/rstat/rpc.rstatd rpc.rstatd rexd/1          tli  rpc/tcp wait root /usr/sbin/rpc.rexd   rpc.rexd 100083/1        tli     rpc/tcp wait root   /usr/dt/bin/rpc.ttdbserverd rpc.ttdbserverd ufsd/1 tli     rpc/*   wait    root    /usr/lib/fs/ufs/ufsd   ufsd -p 100221/1        tli     rpc/tcp wait root   /usr/openwin/bin/kcms_server  kcms_server fs              stream  tcp     wait nobody /usr/openwin/lib/fs.auto   fs 100235/1 tli rpc/tcp wait root /usr/lib/fs/cachefs/cachefsd   cachefsd kerbd/4         tli     rpc/ticlts      wait    root   /usr/sbin/kerbd  kerbd printer         stream  tcp     nowait  root   /usr/lib/print/in.lpd   in.lpd 100234/1        tli     rpc/ticotsord   wait    root   /usr/lib/gss/gssd gssd dtspc stream tcp nowait root /usr/dt/bin/dtspcd   /usr/dt/bin/dtspcd 100068/2-5 dgram rpc/udp wait root /usr/dt/bin/rpc.cmsd   rpc.cmsd 

/etc/services

Many inetd services must be mapped to a specific port number. A sample /etc/services file, shown below, defines port numbers for most of the commonly used services:

 tcpmux          1/tcp echo            7/tcp echo            7/udp discard         9/tcp           sink null discard         9/udp           sink null systat          11/tcp          users daytime         13/tcp daytime         13/udp netstat         15/tcp chargen         19/tcp          ttytst source chargen         19/udp          ttytst source ftp-data        20/tcp ftp             21/tcp telnet          23/tcp smtp            25/tcp          mail time            37/tcp          timserver time            37/udp          timserver name            42/udp          nameserver whois           43/tcp          nickname domain          53/udp domain          53/tcp bootps          67/udp bootpc          68/udp hostnames       101/tcp         hostname pop2            109/tcp         pop-2 pop3            110/tcp sunrpc          111/udp         rpcbind sunrpc          111/tcp         rpcbind imap            143/tcp         imap2 ldap            389/tcp ldap            389/udp ldaps           636/tcp ldaps           636/udp tftp            69/udp rje             77/tcp finger          79/tcp link            87/tcp          ttylink supdup          95/tcp iso-tsap        102/tcp x400            103/tcp x400-snd        104/tcp csnet-ns        105/tcp pop-2           109/tcp uucp-path       117/tcp nntp            119/tcp         usenet ntp             123/tcp ntp             123/udp NeWS            144/tcp         news cvc_hostd       442/tcp exec            512/tcp login           513/tcp shell           514/tcp         cmd printer         515/tcp         spooler courier         530/tcp         rpc uucp            540/tcp         uucpd biff            512/udp         comsat who             513/udp         whod syslog          514/udp talk            517/udp route           520/udp         router routed klogin          543/tcp new-rwho        550/udp         new-who rmonitor        560/udp         rmonitord monitor         561/udp pcserver        600/tcp kerberos-adm    749/tcp kerberos-adm    749/udp kerberos        750/udp         kdc kerberos        750/tcp         kdc krb5_prop       754/tcp ufsd            1008/tcp        ufsd ufsd            1008/udp        ufsd cvc             1495/tcp www-ldap-gw     1760/tcp www-ldap-gw     1760/udp listen          2766/tcp nfsd            2049/udp        nfs nfsd            2049/tcp        nfs eklogin         2105/tcp lockd           4045/udp lockd           4045/tcp dtspc           6112/tcp fs              7100/tcp 

An Example FTP Transaction

After examining the possible client FTP commands and server response codes, let's see how this transactional system actually works in practice on Solaris. The first step is to make a connection to a remote host from the local system by using the standard client:

 client% ftp server Connected to server. 220 server FTP server (SunOS 5.9) ready. Name (server:pwatters): pwatters 331 Password required for pwatters. Password: 230 User pwatters logged in. ftp> 

In this simple transaction, a user logs in and enters their password, and a session is established. This involves the client program sending a session request, receiving a 220 response, sending a USER command ('USER pwatters'), receiving back a 331 response requesting a password, and sending the password ('PASS password'). If the username and password combination is correct, the session is established and a 230 response is generated by the server. Let's look at what happens when the incorrect password is typed:

 client% ftp server Connected to server. 220 server FTP server (SunOS 5.9) ready. Name (server:pwatters): pwatters 331 Password required for pwatters. Password: 530 Login incorrect. Login failed. ftp> 

In this transaction, the user logs in as before, entering their password and establishing a session. This client program then sends a session request, receiving a 220 response, then sends a USER command ('USER pwatters') and receives back a 331 response requesting a password. The client then sends the password ('PASS password'), which in this example is incorrect: a 530 response is then sent back from the server to the client, and the user is left in their local client without establishing a session. However, the connect is still open , so mistyping your password can be remedied by using the following combination:

 ftp> user pwatters 331 Password required for pwatters. Password: 230 User pwatters logged in. ftp> 

Thus, the session is established, and we can proceed with retrieving or uploading files. Let's look at an example:

 ftp> dir 200 PORT command successful. 150 ASCII data connection for /bin/ls (192.58.64.22,34754) (0 bytes). total 72573 drwxr-xr-x  13 pwatters staff 2048 Mar 27 08:43 . dr-xr-xr-x   2 root     root  2 Mar 21 18:55 .. -rw-r--r--   1 pwatters staff 0 Jan 27 15:42 .addressbook -rw-r--r--   1 pwatters staff 2285 Jan 27 15:42 .addressbook.lu -rw-r--r--   1 pwatters staff 5989 Mar 27 08:42 .bash_history lrwxrwxrwx   1 pwatters staff 8 Mar 27 08:43 .bash_profile ->> .profile drwxr-xr-x  16 pwatters staff 512 Mar 21 10:10 .dt -rwxr-xr-x   1 pwatters staff 5113 Jan 27 15:59 .dtprofile -rw-------   1 pwatters staff 10 Feb 23 13:18 .hist10161 -rw-------   1 pwatters staff 28 Feb 23 16:17 .hist11931 -rw-------   1 pwatters staff 20 Mar  7 15:30 .hist12717 -rw-------   1 pwatters staff 30 Feb 21 08:11 .hist1298 -rw-------   1 pwatters staff 24 Mar  7 16:05 .hist13069 -rw-------   1 pwatters staff 18 Feb 21 15:16 .hist1370 -rw-------   1 pwatters staff 8 Feb 21 15:21 .hist1395 -rw-------   1 pwatters staff 8 Feb 22 08:43 .hist15962 -rw-------   1 pwatters staff 100 Feb 28 11:15 .hist17367 -rw-------   1 pwatters staff 24 Feb 28 11:16 .hist17371 -rw-------   1 pwatters staff 16 Feb 22 11:14 .hist19318 -rw-------   1 paul staff 68 Mar  7 14:38 .hist1954 226 ASCII Transfer complete. 6162 bytes received in 0.092 seconds (65.34 Kbytes/s) ftp> 

This is the contents of the current directory. Let's say we wanted to examine the contents of the subdirectory packages :

 cd packages 250 CWD command successful. ftp> dir 200 PORT command successful. 150 ASCII data connection for /bin/ls (192.58.64.22,34755) (0 bytes). total 224056 drwxr-xr-x   3 pwatters staff 1024 Mar 27 08:37 . drwxr-xr-x  13 pwatters staff 2048 Mar 27 08:43 .. -rw-r--r--   1 pwatters staff 2457088 Mar 17 14:37 apache-1.3.6-sol7 -rw-r--r--   1 pwatters staff 3912704 Mar 17 14:38 bash-2.03-sol7 -rw-r--r--   1 pwatters staff 12154880 Mar 27 08:18 communicator-v472   -export.sparc-sun-solaris2.5.1.tar drwxr-xr-x   2 pwatters staff 512 Feb  1 07:11 communicator-v472.   sparc-sun-solaris2.5.1 -rw-r--r--   1 pwatters staff 597504 Mar 17 16:18 flex-2.5.4a-sol7-   intel-local -rw-r--r--   1 pwatters staff 59280384 Mar 17 14:42 gcc-2.95.2-sol7-   intel-local 226 ASCII Transfer complete. 1389 bytes received in 0.051 seconds (26.51 Kbytes/s) ftp> 

Now, let's look at the situation in which we want to retrieve a binary and an ASCII file. An example would be a Java source file (with a .java extension), which must be transferred in ASCII mode, and a Java class file (with a .class extension), which must be transferred in binary mode:

 ftp> ascii 200 Type set to A. ftp> get test.java 200 PORT command successful. 150 ASCII data connection for test.java (192.168.205.48,34759) (117 bytes). 226 ASCII Transfer complete. local: test.java remote: test.java 127 bytes received in 0.02 seconds (6.25 Kbytes/s) ftp> bin 200 Type set to I. ftp> get test.class 200 PORT command successful. 150 Binary data connection for test.class (192.168.205.48,34760) (431 bytes). 226 Binary Transfer complete. local: test.class remote: test.class 431 bytes received in 0.0031 seconds (137.10 Kbytes/s) ftp> 

Although there are many more commands available in FTP, as previously discussed, these are the most commonly used commands and the responses associated with each kind of transfer.

Troubleshooting FTP

The most common mistake in configuring FTP is not to have a valid shells database ( /etc/shells ) on your system. Although you can insert any shell you like into the /etc/passwd file, if the shell is not registered in the database, users will not be able to log in. This is a security measure and prevents arbitrary shells with hidden features being used on the system.

One of the nice features of FTP is that you can test it by telnetting to the FTP port. This will allow you to issue FTP commands interactively and examine the results. It is possible to determine, using this method, whether there is a problem with the remote server or a problem with your local client. For example, if you receive a 421 response, you know that the remote FTP server is not running, in which case you can advise the administrator of the remote machine to check the status of inetd.

If your client attempts to connect to a host for a long time without receiving an acknowledgement , it's often worthwhile to check that the host is actually known through DNS. You can use the nslookup command to achieve this: if a host is not registered using DNS, you won't be able to make a connection.

If the host has a resolvable hostname, then you can use any one the network troubleshooting tools like ping or traceroute to determine whether a path exists between your local client and the remote server. If no valid path exists, you can contact the administrator of the intermediate site where the connection fails.

Checking If a Host Is Up

The easiest way to check if a remote host is accessible is to use the ping command. The following example checks whether the host emu is accessible from the host dingo:

 dingo% ping emu 

If emu is accessible, the following output will be generated:

 emu is alive 

However, if emu is not accessible, an error message similar to the following will be seen:

 Request timed out 

If you need to determine at what point in the network the connection is failing, the traceroute command can be used to display the path taken by packets between the two hosts as they travel across the network. For example, to observe the route of the path taken by packets from AT&T to Sun's web server, we would use the following command:

 client% traceroute www.sun.com Tracing route to wwwwseast.usec.sun.com [192.9.49.30] over a maximum of 30 hops:  1   184 ms   142 ms   138 ms  202.10.4.131   2   147 ms   144 ms   138 ms  202.10.4.129   3   150 ms   142 ms   144 ms  202.10.1.73   4   150 ms   144 ms   141 ms  atm11-0-0-11.ia4.optus.net.au [202.139.32.17]   5   148 ms   143 ms   139 ms  202.139.1.197   6   490 ms   489 ms   474 ms  hssi9-0-0.sf1.optus.net.au [192.65.89.246]   7   526 ms   480 ms   485 ms  g-sfd-br-02-f12-0.gn.cwix.net [207.124.109.57]   8   494 ms   482 ms   485 ms  core7-hssi6-0-0.SanFrancisco.cw.net [204.70.10.9]   9   483 ms   489 ms   484 ms  corerouter2.SanFrancisco.cw.net [204.70.9.132]  10   557 ms   552 ms   561 ms  xcore3.Boston.cw.net [204.70.150.81]  11   566 ms   572 ms   554 ms  sun-micro-system.Boston.cw.net [204.70.179.102]  12   577 ms   574 ms   558 ms  wwwwseast.usec.sun.com [192.9.49.30] Trace complete. 

If the connection was broken at any point, then '*' or '!' would be displayed in place of the average connection times displayed.

Enabling FTP Access

Now that we have examined the most common uses for FTP, we will now investigate how to configure the FTP daemon. The FTP server in Solaris is installed by default during configuration and package copying, during the initial installation or upgrade process. By default, the FTP server and protocol will also be active after installation. You can check the status of the FTP server on the local system by checking whether the FTP service is enabled in the services database, and in the configuration file for the inetd superdaemon:

 server# grep ftp /etc/services ftp-data        20/tcp ftp             21/tcp tftp            69/udp server# grep ftp /etc/inetd.conf ftp     stream  tcp     nowait  root    /usr/sbin/in.ftpd       in.ftpd # Tftp service is provided primarily for booting.  Most sites run this #tftp   dgram   udp     wait    root    /usr/sbin/in.tftpd      in.tftpd  -s /tftpboot 

We can see that FTP is both defined as a service (ftp 21/tcp) and as a daemon that runs from within the Internet superdaemon ( /usr/sbin/in.ftpd ). As long as the Internet superdaemon is started up during one of the single or multiple user init states, the FTP service will start. If you ever want to disable the FTP service, you need to comment out the appropriate line in both /etc/services and /etc/inetd.conf . You can do this by entering a hash character ( # ) in front of the appropriate line:

 #ftp             21/tcp #ftp     stream  tcp     nowait  root    /usr/sbin/in.ftpd       in.ftpd 

You can also check the process list by using the command ps -eaf grep inetd to verify that the Internet superdaemon is running at any point in time.

 
 
   


Sun Certified Solaris 9.0 System and Network Administrator
Sun Certified Solaris(tm) 9 System and Network Administrator All-in-One Exam Guide
ISBN: 0072225300
EAN: 2147483647
Year: 2003
Pages: 265
Authors: Paul Watters

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net