====== Сервис FTP ======
* [[http://ru.wikipedia.org/wiki/FTP]]
===== Клиентские программы =====
==== explorer ====
* ftp://user1@gate.isp.un
==== Утилита ftp ====
server# ftp ftp.isp.un
или
server# ftp user1@gate.isp.un
==== Утилита fetch (FreeBSD) ====
[server:~] # fetch ftp://user1:password1@gate.isp.un:/etc/hosts
==== Утилита wget (Ubuntu) ====
root@server:~# wget ftp://user1:password1@gate.isp.un/../../../etc/hosts
===== Сервер FTP =====
==== Учетная запись для сервиса ====
* [[Управление учетными записями в Linux]]
* [[Управление учетными записями в FreeBSD]]
==== Установка и запуск сервиса ====
=== Debian/Ubuntu ===
root@server:~# apt install proftpd-basic
Run proftpd: standalone
=== FreeBSD ===
[server:~] # cat /etc/rc.conf
...
ftpd_enable="YES"
[server:~] # service ftpd start
==== Изменение shell для ftp пользователей ====
* Изменение атрибутов учетной записи ([[Управление учетными записями в Linux]], [[Управление учетными записями в FreeBSD]])
==== Ограничение доступа ftp пользователей домашним каталогом ====
=== Ubuntu ===
root@server:~# cat /etc/proftpd/proftpd.conf
...
DefaultRoot ~
...
=== FreeBSD ===
[server:/etc] # cat /etc/ftpchroot
...
user1
@ftpusers
...
==== Организация анонимного доступа к ftp серверу ====
=== FreeBSD ===
[server:~] # pw useradd ftp -d /usr/ports/ -s /usr/sbin/nologin
=== Debian/Ubuntu ===
root@server:~# cat /etc/proftpd/proftpd.conf
...
User ftp
UserAlias anonymous ftp
RequireValidShell off
...
==== FTP TLS ====
=== ProFTPd ===
# cat /etc/proftpd/proftpd.conf
...
Include /etc/proftpd/tls.conf
...
# cat /etc/proftpd/tls.conf
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
TLSOptions NoSessionReuseRequired
TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem
TLSVerifyClient off
TLSRequired on
==== Сокрытие названия/версии сервиса ====
=== Ubuntu ===
# cat /etc/proftpd/proftpd.conf
...
ServerIdent on "MS Ftp Server"
...
=== FreeBSD ===
[[http://www.frbsd.org/fr/poweredby/ftpd.html]]
# grep -R 6.00LS /usr/src/libexec/ftpd/
/usr/src/libexec/ftpd/ftpd.c:static char version[] = "Version 6.00LS";
===== Дополнительные материалы =====
==== Команды ftp клиента ====
?
help
cd каталог - смена каталога на сервере
lcd каталог - смена каталога на клиенте
pwd - показать текущий каталог сервера
lpwd - показать текущий каталог клиента
dir
ls
bin - двоичный режим передачи
ascii - режим передачи текстовых файлов
pass - переключатель активного/пассивного режимов передачи
get имя_файла - скопировать файл с сервера (download)
put имя_файла - скопировать файл на сервер (upload)
mget шаблон - скопировать файлы совпадающие с шаблоном с сервера (download)
mput шаблон - скопировать файлы совпадающие с шаблоном на сервер (upload)
quit - выход из программы
==== Автоматизация процесса аутентификации ftp клиента ====
server# cd
server# cat .netrc
machine ftp.isp.un login user1 password password1
server# chmod 600 .netrc
server# ftp gate.isp.un
==== Пример использование ftp клиента в sh скрипте ====
server# cat ftp.sh
cd /etc
ftp ftp.isp.un >/dev/null 2>&1 <
gate# sh ftp.sh