man eftp (Commandes) - ISDN EUROFILE file transfer client
NAME
eftp - ISDN EUROFILE file transfer client
SYNOPSIS
eftp [ -i ISDN_NO ] [ -x X25_ADDRESS ] [ -u USER[/PASSWORD] ] [-p] [-h]
DESCRIPTION
eftp is a simple EUROFILE transfer client with a command line user interface roughly resembling the ftp client.
Novice users are initially recommended to invoke eftp as
eftp -i ISDN_NO -u USER
OPTIONS
- -i ISDN_NO
- ISDN number of the remote EUROFILE server to connect to. The client will try to set up an isdn connection to this number and an X.25 DTE-DTE connection on top of this.
- -x X25_ADDRESS
- directly specify the X.25 address used for setting up the X.25 connection. For eftp to work, an X.25 route for that address must already be present. The X.25 route must point to an isdn4linux network interface that is configured for outgoing connections to a destination EUROFILE server. The encapsulation of the interface must be "x25iface", l2_prot must be x75i.
If neither -i nor -x option is specified, the behavior is like an empty string -x option ( as if called like "eftp -x ''" )
- -u USER[/PASSWORD]
- The user identity used to login to the remote EUROFILE server. The password can be appended to the user id seperated by a '/' character. If no '/' is present in the parameter of the -u option, eftp will prompt for a password.
CAUTION:
Entering the password on the command line allows other users
to spoof the password, e.g. by means of the ps command. The
password might also leave other traces, e.g. in your shell's
history file. Thus, DON'T include the passwd in the -u argument
on machines where this is a concern (e.g. when untrusted users
have shell accounts on the machine).
If the -u option is missing, the client will try to login without a user id (some servers will treat this as anonymous access).
- -p
- suppress prompting for a password even if the argument to the -u option does not contain a password. This is useful for accounts on EUROFILE servers without password protection.
- -h
- print a help message to stdout.
ISDN CONNECTIONS
If invoked with the -i option, eftp will try its best to create and set up all related isdn interfaces automatically and to remove them after the end of the session. In order to undo the setup after the end of the session reliably (i.e. even when the eftp process crashes), eftp forks a child process which is in charge of processing the eurofile session while taking care itself only for supervising the isdn connection setup and undoing all temporary isdn configurations after the child exits.
However, the control and configuration of isdn connections requires certain privileges (netadmin capability, write access to /dev/isdnctrl; debian users need to be in the "dialout" group).
To overcome this problem, eftp now has special support to execute suid root. To take advantage of this, make root the owner of the eftp binary and set the suid bit. This is not done as standard in the debian package because it is better to put authorized users in the dialout group.
WARNING/DISCLAIMER: suid programs are inherently dangerous because potential bugs in the programme, the kernel or standard libraries might be exploitable to gain root priviliges. If this is a concern, don't install eftp suid root. If installed suid root, also consider to clear the world executable bit of the eftp binary and to change its group to a group of trusted users who are allowed to execute the setuid eftp programme.
eftp will change the uid of the forked child process (which is in charge of the protocol procession) to the (less priviliged) real user id of the caller as soon as possible. Only the parent process, which does not interact with the user directly and needs more priviliges in order to clean up the isdn setup, continues to run suid root. The real userid of the parent will be switched to the effective userid (root).
A suid root eftp will not allow all users to set up eurofile isdn connections. eftp checks whether the user has write permissions for the /dev/ttyI0 special file. Only if this check is passed, the isdn connection will be set up. This algorithm ensures that only users, who are already permitted to set up isdn connections by other means (by writing AT commands to /dev/ttyI0), can set up isdn connections for eurofile.
COMMAND INPUT
When eftp has established the connection, it issues the "eftp>" prompt and waits for commands that will be read from standard input. If configured before compilation, interactive input can be edited by means of the GNU readline library.
The following commands are recognised:
Commands for Listing and Transferring Files
- dir [PATTERN]
This corresponds to ETS 300-075 and ETS 300-383 T-DIRECTORY primitive. It prints a list of files contained in the current working directory (ETSI calls it the "current filestore"). PATTERN is a pattern as defined in ETS 300-075 and selects a subset of those files to be displayed. ETS 300-075 pattern are different from shell wildcard or regular expressions, but the pattern "*" matches all filenames as you'd expect. I won't explain further pattern rules here because most servers don't recognise any patterns different from "*" anyway.
If pattern is omitted, the * pattern is assumed.
Pattern applies to the EUROFILE transfer name of the files, which is not necessarily identical to the filename itself.
Likewise, the output of the command does not list the filenames, but the transfer names of the files and the file length. Note that only regular files are listed. For listing subdirectories, there are the list and slist commands.
- xdir [PATTERN]
This is similar to the dir command but requests the directory contents in extended format. In addition to the transfer name, this will also contain the real name of the file and the time stamp of the last write access.
Note that not all servers support directory requests with extended format. Some of those servers will respond with a normal directory contents file, others will reject the request. In the former case, eftp will issue a warning message and use the transfer name for the file name and use 1970-01-01 as the last access date. (The eftp4linux server supports extended directory formats).
- get TRANSFER_NAME [PATH_NAME]
This corresponds to the 300-075 T-LOAD primitive and tries to load the file identified by TRANSFER_NAME from the remote server and stores it locally using PATH_NAME as the destination. If PATH_NAME is omitted, TRANSFER_NAME is also used as the destination name.
- put [PATH_NAME] TRANSFER_NAME
This corresponds to the ETS 300-075 T-SAVE primitive and tries to upload the local file identified by PATH_NAME to the remote server, using TRANSFER_NAME as the destination. If PATH_NAME is omitted, TRANSFER_NAME is also used as to identify the local file.
- mget PATTERN
get multiple files whose transfer names match PATTERN. PATTERN is (currently) interpreted a shell glob pattern, not an ETS 300 075 pattern.
- mput PATTERN
put multiple files whose names match PATTERN. PATTERN is interpreted a shell glob pattern, not an ETS 300 075 pattern.
NOTE: The matched name is also used as the transfer name. If pattern matched local files whose file name do not form a valid ETS 300-383 transfer name, the transfer of those files might fail.
- prompt [on|off]
If "on", prior to each file transferred by mput or mget, the user is prompted for confirmation. If no parameter is given the on/off value is toggled.
Possible user responses to the prompt:
y transfer the file
n don't transfer the file and prompt for the next one
- case [on|off]
If "off", cases are ignored when matching PATTERN in mget and mput. If parameter is missing, toggle current parameter value.
This currently does nor work with all versions of libc.
Navigation Commands (related to directories)
These commands are likely to fail because many servers don't support the navigation facility. (The eftp4linux server, however, supports this :-)
- cd [DIRECTORY]
This changes the current working directory ("current filestore") to DIRECTORY. If DIRECTORY is omitted, the default directory (this is the one initially entered when logged in) is changed to.
This command is likely to fail because many servers don't support the navigation facility.
- pwd
This prints the name of the server's current working directory ("current filestore") to stdout.
- slist
This corresponds to the 300-383 S-LIST primitive. It prints a list of the subdirectories contained in the current working directory. The list items consist of a so called file store reference followed by the filestore (directory) name. (The eftp4linux server supports this, but the filestore references are currently not generated totally norm conforming.)
- list
This corresponds to the ETS 300-383 LIST primitive. It is similar to the slist command, but prints a list of all directories of the server. (Even the eftp4linux server does not support this).
Misc Commands
- msg MESSAGE
The MESSAGE string is send literally to the remote server if the server supports it (most servers won't) by means of the ETS 300-075 T-TYPED_DATA primitive.
If MESSAGE is ommitted, the client will prompt for the message string (can currently cause problems as protocol precessing is currently not performed whil waiting for the user input).
- lcd DIR
change local working directory to DIR
- ! COMMAND-STRING
execute COMMAND-STRING as a shell command.
- quit
This will quit the EUROFILE session, close the connection, and exit the eftp programme.
AUTHOR
manpage written from usage text file by Paul Slootman <paul@debian.org>.