ftpd —
Server
Internet File Transfer Protocol
ftpd
[
-dlADq]
[
-T
maxtimeout]
[
-t
timeout]
[
-a
login-name]
Ftpd è il processo del server Internet File
Transfer Protocol. Il server usa il protocollo TCP e ascolta la porta
specificata nelle specifiche del servizio “ftp”; vedere
services(5).
Opzioni disponibili:
- -d
- L'informazione di debug è scritta su syslog usando
LOG_FTP.
- -l
- Ciascune sezione ftp(1) che
abbia successo o fallisca è oggata usando syslog con un servizio di
LOG_FTP. Se questa opzione è specificata due volte, anche le
operazioni di, recupero (get), archiviazione (put), aggiunta,
cancellazione, creazione di directory, rimozione di directory e
rinominazione e i loro argomenti nomi di file sono loggate.
- -A
- E' permesso solo l'autenticazione anonima.
- -D
- ftpd entra nel modo demone. Ciò permette a ftpd di
funzionare senza inetd.
- -q
- Modo silenzioso. Al client non viene fornita alcuna
informazione sulla versione di ftpd.
- -T
- Un client può anche richiedere un differente periodo
di timeout; il massimo periodo permesso può essere impostato in
timeout secondi con l'opzione
-T. Il limite di default è di 2
ore.
- -t
- Il periodo di inattività di timeout è
impostato in timeout secondi (il default
è di 15 minuti).
- -a
- Dà anonymous e altri
login-name (anonymous e ftpd
funzioneranno ancora).
Il file
/etc/nologin può essere usato per
disabilitare l'accesso ftp. Se il file esiste,
ftpd lo visualizza ed esce. Se il file
/etc/ftpwelcome esiste,
ftpd lo stampa prima di emettere il messaggio
“ready”. Se il file
/etc/motd
esiste,
ftpd lo stampa dopo un login avvenuto con
successo.
Il server ftp attualmente supporta le seguenti richieste ftp. Il caso delle
richieste è ignorato.
Request |
Description |
ABOR |
abort previous command |
ACCT |
specify account (ignored) |
ALLO |
allocate storage (vacuously) |
APPE |
append to a file |
CDUP |
change to parent of current working directory |
CWD |
change working directory |
DELE |
delete a file |
HELP |
give help information |
LIST |
give list files in a directory
(“ls -lgA ”) |
MKD |
make a directory |
MDTM |
show last modification time of file |
MODE |
specify data transfer
mode
|
NLST |
give name list of files in directory |
NOOP |
do nothing |
PASS |
specify password |
PASV |
prepare for server-to-server transfer |
PORT |
specify data connection port |
PWD |
print the current working directory |
QUIT |
terminate session |
REST |
restart incomplete transfer |
RETR |
retrieve a file |
RMD |
remove a directory |
RNFR |
specify rename-from file name |
RNTO |
specify rename-to file name |
SITE |
non-standard commands (see next section) |
SIZE |
return size of file |
STAT |
return status of server |
STOR |
store a file |
STOU |
store a file with a unique name |
STRU |
specify data transfer
structure
|
SYST |
show operating system type of server system |
TYPE |
specify data transfer
type
|
USER |
specify user name |
XCUP |
change to parent of current working directory
(deprecated) |
XCWD |
change working directory (deprecated) |
XMKD |
make a directory (deprecated) |
XPWD |
print the current working directory (deprecated) |
XRMD |
remove a directory (deprecated) |
I seguenti comandi non standard o specifici di UNIX sono supportati dalla
richiesta SITE.
Request |
Description |
UMASK |
cambia la umask, e.g. ``SITE UMASK 002'' |
IDLE |
imposta il tempo di inattività, e.g. ``SITE
IDLE 60'' |
CHMOD |
cambia i permessi di un file, e.g. ``SITE CHMOD 755
filename'' |
HELP |
fornisce informazioni di aiuto. |
Le richieste ftp rimanenti specificate in Internet RFC 959 sono riconosciute, ma
non implementate. MDTM e SIZE non sono specificate in RFC 959, ma appariranno
nella prossima RFC FTP aggiornata.
Il server ftp abortirà un trasferimento di file attivo solo quando il
comando ABOR è preceduto da un segnale Telnet "Interrupt
Process" (IP) e un segnale Telnet "Synch" nel flusso di comando
Telnet, come descritto nella Internet RFC 959. Se un comando STAT è
ricevuto durante un trasferimento dati, preceduto da un IP e Synch Telnet,
verrà restituito lo stato del trasferimento.
Ftpd interpreta i nomi di file in accordo alle
convenzioni “globbing” usate da
csh(1). Questo permette agli utenti di utilizzare
i metacaratteri “
*?[]{}~
”.
Ftpd autentica gli utenti conformemente a tre
regole.
- Il nome di login deve essere nel data base delle password,
/etc/passwd, e non avere password nulla. In
questo caso una password deve essere fornita dal client prima che
qualunque operazione sul file venga eseguita.
- Il nome di login non deve apparire nel file
/etc/ftpusers.
- L'utente deve avere una shell standard restituita da
getusershell(3).
- Se il nome utente è “anonymous” o
“ftp”, un account ftp anonimo deve essere presente nel file
password (utente “ftp”). In questo caso l'utente può
accedere specificando qualunque password (per convenzione come password
deve essere utilizzato un indirizzo email dall'utente).
Nell'ultimo caso,
ftpd prende misure speciali per
restringere i privilegi di accesso del client. Il server esegue un
chroot(2) sulla directory home dell'utente
“ftp”. Perché la sicurezza del sistema non venga
compromessa, si raccomanda che il sottoalbero “ftp” sia
costruito con attenzione, seguendo queste regole:
- ~ftp
- Dà la proprietà della home directory a
“root” e la rende non scrivibile da nessuno.
- ~ftp/bin
- Dà la proprietà di questa directory a
“root” e la rende non scrivibile da nessuno (modo 555). Il
programma ls(1) deve essere presente per
supportare l'elenco di comandi. Questo programma può avere i
permessi 111.
- ~ftp/etc
- Dà la proprietà di questa directory a
“root” e la rende non scrivibile da nessuno (modo 555). I
file passwd(5) e
group(5) devono essere presenti perché
il comando ls possa produrre nomi di utente
invece di numeri. Il campo password in passwd
non è usato, e non deve contenere password reali. Il file
motd, se presente, verrà stampato in
seguito a un'autenticazione riuscita. Questi file devono avere permessi
444.
- ~ftp/pub
- Dà a questa directory i premessi 777 e
proprietà di “ftp”. Gli ospiti quindi possono mettere
file che siano accessibili attraverso un account anonimo in questa
directory.
- /etc/ftpusers
- Elenco degli utenti non benvenuti/limitati.
- /etc/ftpwelcome
- Annuncio di benvenuto.
- /etc/motd
- Annuncio di benvenuto dopo l'autenticazione.
- /etc/nologin
- Visualizzazione e accesso rifiutati.
ftp(1),
getusershell(3),
syslogd(8)
Il server deve funzionare come super-utente per creare socket con numeri di
porta privilegiati. Esso mantiene un id utente effettivo dell'utente
autenticato, tornando al super-utente solo quando lega gli indirizzi ai
socket. I possibili buchi di sicurezza sono stati estesamente verificati, ma
potrebbero essere incompleti.
Il comando
ftpd è apparso nella
4.2BSD.