"File Transfer Protocol (FTP) is a TCP protocol for uploading and downloading files between computers."
А по русски: протокол TCP для передачи файлов - это FTP; доступ к ftp (чтобы скачать что-то или свои файлы залить) бывает анонимным (когда вводится имя anonymous и адрес эл.почты вместо пароля) и авторизованным (когда на сервере должна быть заведена учетная запись для пользователя).
Я себе конечно же установлю 2-й вариант, свой сервер я стараюсь прятать, так что лишняя дырка "заходите гости дорогие" мне ни к чему. Устанавливать буду vsftpd (потому как серверов разных много, почему этот - а какая разница какой, если нет предпочтений?):
1: sudo apt-get install vsftpd
После установки сервер настроен для работы в анонимном режиме; в папке /home появилась папка ftp - папка созданного для ftp пользователя; все файлы/папки, созданные в этой папке, будут доступны всем желающим, правда прав на запись в эту папку ни у кого же, кроме пользователя ftp нет, так что придется или переписывать с sudo, или изменить права на папку (или поменять папку, про это дальше). Проверим (с виндового компьютера для чистоты эксперимента):
1: C:\Documents and Settings\VMware>ftp ubuntu
2: Connected to ubuntu.
3: 220 (vsFTPd 2.0.7)
4: User (ubuntu:(none)): anonymous
5: 331 Please specify the password.
6: Password:
7: 230 Login successful.
8: ftp> ls
9: 200 PORT command successful. Consider using PASV.
10: 150 Here comes the directory listing.
11: IMG_1120.jpg
12: IMG_1135.jpg
13: IMG_1179.jpg
14: IMG_1193.jpg
15: 226 Directory send OK.
16: ftp: 56 bytes received in 0,00Seconds 56000,00Kbytes/sec.
17: ftp>exit # в виндовом ftp-клиенте не сработало
18: ftp>quit
Файлы *.jpg я туда для наглядности кинул из-под админа, пользователь, подключившийся анонимно, ничего, кроме как скачать файлы, не может:
1: ftp> put
2: Local file c:\temp\putty.exe
3: Remote file putty.exe
4: 200 PORT command successful. Consider using PASV.
5: 550 Permission denied.
6: ftp>
Командой put я пытался загрузить в текущую папку на ftp-сервере файл из папки c:\temp - не получилось, правов нету.. Последнее про анонимный ftp - если не устраивает папка /home/ftp для хранения файлов - можно "переназначить" ее на любую другую:
1: sudo usermod -d /mnt/media ftp
Все, с этого момента я разрешил любому пользователю анонимно зайти на мой ftp и скачать любой файл из моей папки с медиа.. Единственное, что я забыл - если повторять все мною написанное, то зайти на ftp по какой-то причине не получится - файрволл не пустит! Я забыл о правиле в /etc/shorewall/rules, которое бы разрешило работу с ftp:
1: FTP/ACCEPT loc $FW
этим разрешается доступ из локальной сети, если нужен доступ из интернета - то
1: FTP/ACCEPT net $FW
С анонимным доступом все; но перед тем, как идти дальше, надо разобраться с кириллиицей: вот я в винде создал файл, обозвал его "Новый текстовый документ.txt", скопировал в папку /mnt/media, смотрю теперь список файлов в ftp:
1: 230 Login successful.
2: ftp> cd media
3: 250 Directory successfully changed.
4: ftp> ls
5: 200 PORT command successful. Consider using PASV.
6: 150 Here comes the directory listing.
7: pictures
8: ╨Э╨╛╨▓╤Л╨╣ ╤В╨╡╨║╤Б╤В╨╛╨▓╤Л╨╣ ╨┤╨╛╨║╤Г╨╝╨╡╨╜╤В.txt
9: 226 Directory send OK.
10: ftp: 62 bytes received in 0,00Seconds 62000,00Kbytes/sec.
11: ftp>
"Такой футбол нам не нужен!" ( (с) Озеров кажется) Хотя с другой стороны - откроем в виндовом эксплорере наш фтп (заходит кстати без переспрашивания имени/пароля - наверное автоматически пробует зайти анонимно): С именем все в порядке.. надо будет позже разобраться, в чем дело, потому что в консоли ls выдает "правильное" имя файла, а в ftp - нет (кстати, поддержка кирилицы в консоль добавляется
1: sudo apt-get install console-cyrillic
Для того, чтобы настроить сервер "только для белых"только для своих, надо поправить конфиг фтп-сервера, который лежит как обычно в /etc с именем как обычно имя_сервиса.conf (ну есть и исключения, но все же обычное дело):
1: sudo pico /etc/vsftpd.conf
2: # запрещаем анонимный доступ
3: anonymous_enable=NO
4: # разрешаем доступ юзерам, в т.ч. запись
5: local_enable=YES
6: write_enable=YES
Там же можно разрешить запись для анонимов, но делать этого я не буду После перезапуска сервиса (sudo /etc/init.d/vsftpd restart) - отлично, анонима больше не принимают, а я могу зайти, по ls вижу содержимое своей домашней папки - и все остально е в общем-то тоже.. Для большей "секьюрности" можно ограничить пользователей в доступе только к своим домашним каталогам - для этого надо найти и раскоментить строчку
1: chroot_local_user=YES
Ну и вообще там есть немножко настроек, которые можно потюнинговать (что и для чего можно почитать вот здесь) Осталось только все же разобраться с русскими названиями файлов.. Есть оказывается русский комьюнити, который занимается модами этого ftp-сервера, в т.ч. и связанными с кодировками здесь; только форум я посмотрел и не понял до конца, решит ли модденый сервер проблему, когда виндовые клиенты видят русские имена нормально, а консольные ftp-клиенты - нет.. вот обсуждение
Пока оставлю как есть, если сильно понадобится и дойдут руки/сообразят мозки - будет продолжение..
Этот комментарий был удален автором.
ОтветитьУдалитьДобрый день fat.hamster
ОтветитьУдалитьПрежде всего хочу поблагодарить за Ваш блог. Я внимательный его читатель. И все Ваши инструкцию воплащаю в жизнь. Также хочу сказать, что проблемой FTP я уже занимаюсь несколько дней и был очень рад увидеть эту статью. Однако вижу, что проблемы русских названий файлов не решена в этой статье также.
По поводу "русских букв"... Есть у меня друг, который уже давно "сидит" на линухе. Так вот, как объясняет мой друг, проблема состоит в том что на сервере Ubuntu установлена кодировка UTF-8 а в винде Win1251. Должен быть механизм перекодировок названий файлов. Что касается проги "vsftpd" это замечательный FTP который быстро настраивается и работает "с коробки" однако:
- В программе vsftpd есть проблема "первой буквы" если в названии файла первая буква идет латиницей , или например нижнее подчеркивание , то файл с названием "_текстовый файл.txt" будет отображаться нормально (сам не проверял, это со слов друга).
- Если использовать программу из сайта http://vsftpd.devnet.ru то эта программа решает частный случай. В файле настройки явным образом указывается кодировка на сервере ( у нас это UTF-8) и на клиенте (например win1251) и перекодировка производится "строго". Возникнут вопросы когда к серверу подключаются клиенты с разными кодировками.
- Если к серверу подключается машина с windows то проблему можно решить на стороне клиента используя специальную программу (например http://www.filezilla.ru ) которая умеет передвавать на сервер названия файлов в UTF-8. Однако не каждому клиенту объяснишь что ему использовать. :)
А теперь внимание !!! По совету моего друга, нужно использовать как FTP сервер программу ProFTPd именно она умеет понимать "кто подключился" и на стороне сервера коректно решает вопрос кодировок. ProFTPd более сложная программа с точки зрения настроек, но и возможности и скорость работы выше чем vsftpd.
Надеюсь мои комментарии будут полезны автору блога.
С наилучшими пожеланиями
Gurom