Вторник, 14.05.2024, 04:08

Блог Владимира Степанова

Реклама
Статистика
Яндекс.Метрика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Меню
Категории раздела
Установка [14]
Настройка [23]
Установка ПО [11]
Работаем самостоятельно [2]
Хитрости [1]
Разное [1]
Вход на сайт
Реклама
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Главная » Статьи » Линукс » Установка ПО

    FTP – для всех и «для себя любимого»…

    FTP – для всех и «для себя любимого»…


    Как утверждают, FTP – один из самых старых протоколов передачи данных, использующихся в наших компьютерных сетях. Подробнее о нем можно прочесть, например, вот по этой ссылке. Один из современных серверов FTP – ProFTP – позволяет довольно гибко его сконфигуировать под собственные нужды. Именно его (когда-то давно) я и решил себе установить. Как я тогда это делал, тут и описано.

    Установка

    Ах, Mandriva Linux – тысячи пакетов в репозиториях! Чтобы там не нашлось такого популярного сервера как ProFTP – да не может этого быть! Запускаем «Центр управления Mandriva», в нем «Установку и удаление программ» и в поле поиска вводим «proftpd». Ответ не был для меня неожиданностью – есть такой пакет proftpd. Ставим «птицу», жмем «Применить». Несколько минут терпения, и всё – сервер установлен и запущен.

    Есть и другой вариант – установка в консоли, единственное условие – обязательно запущенной от имени «root-а». Достаточно всего лишь ввести команду:

    urpmi proftpd

    Итог будет тот же самый - сервер ProFTP будет установлен и запущен.

    Настройка

    Начать нам придется с настройки не самого ProFTP, а с файервола. Если на компьютере, на котором Вы установили и запустили ProFTP, он (файервол) включен, то в нем потребуется открыть порт, используемый для FTP. Обычно это 21-й порт. При желании, Вы сможете настроить ProFTP-сервер на использование порта с другим номером (об этом ниже). В таком случае, в файерволе нужно будет открыть тот порт, который Вы использовали для FTP. О том, каким образом в Mandriva Linux можно открыть порты в файерволе, я уже писал тут.

    Теперь о настройке собственно ProFTP. Сразу же после установки сервер ProFTP сконфигурирован в некоем «умолчательном» варианте и уже запущен. Если Вы установили только сам ProFTP (с неким набором модулей, идущим в «комплекте по умолчанию»), и не устанавливали никаких дополнительных пакетов с модулями для ProFTP, то вся настройка сервера осуществляется в единственном файле – /etc/proftpd.conf. По этому, именно его мы и открываем в (любом) текстовом редакторе.

    Находим в указанном файле первый интересующий нас параметр – имя сервера. Он задан вот такой строкой:

    ServerName "ProFTPD Default Installation"

    Как по мне – не самый важный параметр. Но тем не менее – Вы можете для своего сервера ввести то имя, которое Вам нравится. Находим следующий параметр, который можно изменить «на свой вкус и цвет». Это упоминавшийся ранее номер порта:

    Port 21

    Менять его или нет – решать Вам. Если Вы планируете создать у себя публичный FTP-сервер, то однозначно не стоит. Потому как, по умолчанию, когда кто-то в своем браузере набирает «ftp://some.ftp.server.com», то запрос пойдет именно на 21-й порт указанного сервера. С другой стороны, Вы можете использовать ProFTP только для «личных нужд». В этом случае, можно уйти со стандартных номеров портов, которые в первую очередь сканируются злоумышленникам и при попытке взлома…

    Еще пара «глобальных» параметров сервера:

    User nobodyGroup nogroup

    Они задают пользователя и группу, от имени которых запущен сервер. Этот «бесправный» (в прямом смысле слова) пользователь «автоматом» создается для нужд ProFTP. В данном случае, на мой взгляд, ничего менять не нужно.

    Следующий параметр, который я изменил в файле конфигурации:

    UseReverseDNS off

    Причину этого действия я уже описал у себя в блоге ранее. Дело в том, что если значение параметра установлено в «on«, ProFTP для нужд ведения своего лога (журнала работы) выполняет DNS-запрос имени компьютера, пытающегося к нему подключиться. В случае неудачи (а такое случается, например, в описанном мной случае – из-за кривизны настройки у провайдера «домашней сети») удаленный компьютер подключиться не сможет. С другой стороны, если данный параметр выключен («off«), то в лог пишется просто IP-адрес удаленного компьютера. На мой взгляд, этого вполне достаточно.

    Таким образом, подводя итог всего сказанного выше, получается, что их всех настроек, изначально присутствовавших в файле /etc/proftpd.conf (по умолчанию), я изменил всего лишь одну – отключил запрос имен компьютеров, подключающихся к моему FTP-серверу. На этом, с «глобальными» настройками я покончил.

    Есть еще одна вещь, которую нужно сделать. Необходимо в текстовом редакторе (от имени «root-а») открыть файл /etc/shells и добавить в него такую строку:

    /bin/false

    Этим мы добавляем «пустую» командную оболочку. Она потребуется нам при создании пользователей, которым мы предоставим возможность записи файлов на наш FTP-сервер. В итоге, этим «избранным» пользователям в нашем сервере будут доступны только команды протокола FTP, и ничего более. Безопасность, однако…

    И вот теперь мы будем настраивать ресурсы, к которым предполагается предоставлять доступ. Начнем с тех, которые…

    Для всех

    Итак, публичный FTP-сервер. На нем хранятся файлы, к которым предоставляется доступ (но только на считывание!!!) абсолютно для всех желающих. Для этого в конце файла /etc/proftpd.conf добавляем следующее:

    <Anonymous /var/ftp/pub> User ftp Group ftp UserAlias anonymous ftp RequireValidShell no MaxClients 5 ShowSymlinks on HideUser 
    root HideGroup root RootLogin off<Limit CWD DIRS READ LIST> AllowAll</Limit><Limit WRITE> DenyAll</Limit></Anonymous>

    А теперь рассмотрим, что же мы тут такого «понаписали»:

    • Строка «<Anonymous /var/ftp/pub>» обозначает (локальную) папку Вашего компьютера, доступ к ресурсам которой (файлам и вложеным подпапкам) будет предоставлять ProFTP. Пусть Вас не смущает слово «Anonymous» – в данном случае оно не имеет никакого отношения к анонимному доступу, а всего лишь обозначает начало (а со слешем (/) – и конец) секции параметров про указанный ресурс (папку). Итак, указанная строка обозначает, что в данном случае мы предоставим пользователям доступ к содержимому (локальной) папки «/var/ftp/pub«.
    • В следующих двух строках («User ftp» и «Group ftp«) мы принудительно задаем имена пользователя и группы, которые будут автоматически «подставляться» системой во время, когда внешние клиенты будут подключаться к нашему FTP-серверу.
    • Строка «UserAlias anonymous ftp» буквально означает следующее – «Пользователь «anonymous» и пользователь «ftp» – это один и тот же пользователь». Зачем она нам? Большинство браузеров при анонимном подключении к FTP-серверам использует в качестве логина (имени пользователя) именно «anonymous» (а в качестве пароля подставляют адрес электронной почты). А парой строк ранее мы настроили доступ пользователю «ftp». Установив даной строкой своеобразный знак равентства между двумя этими пользователями, мы тем самым предоставляем доступ и пользователю «anonymous».
    • Строка «RequireValidShell no» указывает, что к серверу могут подключаться пользователи, не имеющие назначенной им в данной системе оболочки (командного интерпретатора). То есть, обычному локальному пользователю при входе в систему предоставляется командная оболочка (интерпретатор команд). Как следствие – пользователь имеет возможность выполнять в системе какие-то определенные команды. С другой стороны, пользователю «ftp» командная оболочка не предоставляется, и сделано это именно для того, чтобы он не смог выполнять никаких системных команд (в его распоряжении остается только лишь набор команд FTP-протокола).
    • Парамерт «MaxClients 5» указывает максимальное число клиентов, которые могут быть одновременно подключены к серверу.
    • Параметр «ShowSymlinks on» определяет – показывать ли пользователям симлинки, или нет. Если «да«, то в случае наличия внутри ресурса т.н. «жестких ссылок» (симлинков) на файлы или папки, находящиеся за пределами каталога, выделенного для анонимного доступа, анонимные ftp-пользователи смогут получить доступ к содержимому этих «внешних» ресурсов.
    • Следующие три строчки – «HideUser root«, «HideGroup root» и «RootLogin off» – предназначены чтобы анонимный FTP-пользователь ни в коем cлучае не смог получить привелегии администратора (root).
    • Далее идет вот такая секция (повторюсь):
    <Limit CWD DIRS READ LIST> AllowAll</Limit>;

    В ней сказано, что команды CWD, DIRS, READ и LIST разрешены всем (AllowAll). Данный набор позволяет пользователю перемещаться по папкам (в пределах ресурса), считывать содержимое файлов и каталогов. Одним словом – анонимный пользователь получает возможность считывать информацию с Вашего FTP-сервера.

    • Затем следует секция:
    <Limit WRITE> DenyAll</Limit>

    В которой указано, что команда записи (WRITE) запрещена для всех (DenyAll). Таким образом, внешние пользователи не смогут загрузить (записать) файл(ы) на Ваш FTP-сервер.

    • Последняя строка «</Anonymous>» (как уже было сказано выше) просто завершает секцию параметров про указанный ресурс (папку).

    Сохраняем изменения файла /etc/proftpd.conf и перезапускаем сервер ProFTP командой:

    /etc/init.d/proftpd restart

    Осталось проделать пару манипуляций с папкой /var/ftp/pub, а именно – назначить ее`владельцем пользователя «ftp» из группы «ftp», а также назначить ей необходимые права доступа. Для этого вводим в консоли две следующие команды:

    chown -R ftp:ftp /var/ftp/pubchmod -R 755 /var/ftp/pub

    После этого анонимные пользователи смогут считывать файлы, расположенные в папке /var/ftp/pub и ее подпапках, набрав в браузере адрес Вашего сервера в виде «ftp://adres.vashego.ftp.servera».

    Для «избранных»

    А как же запись? Имеется ввиду случай «особо приближенных» друзей-товарищей, которым Вы хотите предоставить возможность загружать «что-то» на Ваш сервер. При этом – только по протоколу FTP, и только в некую специально выделенную папку. Примем как исходное условие, что e данного пользователя имя (в системе) будет «uploader«, а доступ с возможностью записи мы ему предоставим в папку «/var/ftp/uploader«. С этой целью добавим в конец файла /etc/proftpd.conf следующие строки:

    <Anonymous /var/ftp/uploader/> User uploader Group ftp AnonRequirePassword on
    <Limit LOGIN> AllowAll</Limit> HideUser root HideGroup root RootLogin off</Anonymous>

    Как видим, в этот раз ресурсом для доступа будет папка /var/ftp/uploader. К данной папке разрешен доступ только пользователю «uploader» из группы»ftp». Для доступа к ресурсу требуется ввод пароля («AnonRequirePassword on«). Все функции (команды) доступны только после успешного входа пользователя в систему (Limit LOGIN). Предположительно, у Вас еще нет в системе данного пользователя. Поэтому, создадим его, для чего в консоли от имени администратора (root) выполним следующую команду:

    useradd -d /var/ftp/uploader -g ftp -p test -s /bin/false uploader

    Данной командой мы:

    • создаем пользователя (командой useradd);
    • с именем «uploader» (самый последний параметр в команде – uploader);
    • принадлежащего к группе «ftp» (-g ftp);
    • с домашней папкой «/var/ftp/uploader» (-d /var/ftp/uploader);
    • с паролем «test» (-p test);
    • и «пустой командной оболочкой «/bin/false» (-s /bin/false)

    Создать пользователя конечно можно и иначе, в какой-нибудь графической утилите. Но, на мой взгляд, эта одна единственная команда делает всё и сразу – создает пользователя, задает ему пароль, назначает ему «пустую» командную оболочку, создает папку данного пользователя, назначает этого пользователя её владельцем и прописывает папке все необходимые права.

    Все. После перезапуска сервера ProFTP можете давать логин и пароль своим друзьям. Чтобы войти в сервер, пользователю понадобится FTP-клиент, позволяющий ввести имя пользователя и пароль, например, FileZilla. Также, подключиться к FTP-серверу с указанием имени и пароля позволяют, например, FAR или Midnight Comander..

    Для «себя любимого»

    Ну и напоследок о «себе любимом». Точнее, обо всех пользователях, зарегистрированных в системе. Все они имели возможность подключаться к ProFTP сразу же после его установки и запуска. При этом им необходимо использовать FTP-клиент, позволяющий ввести имя пользователя и пароль, (например, FileZilla), Имя и пароль необходимо указывать те, под которыми пользователь входит в систему. К чему получит доступ такой клиент, залогинившись по FTP? Это определяется одной единственной строкой файла конфигурации. Снова заглянем в файл /etc/proftpd.conf и найдем там следующую строку:

    #DefaultRoot ~

    По умолчанию эта строка закоментирована. Если же ее раскоментировать, то в своих перемещениях по файловой системе сервера пользователи будут ограничены пределами своей домашней папки. Но, если эту строку не трогать и оставить закоментированой, то пользователи получат доступ ко всей файловой системе сервера, начиная от корневого каталога (естественно, в четком соответствии с установленными в системе правами доступа). Таким образом, «для себя любимого» с самого начала ничего настраивать не надо было…

    Категория: Установка ПО | Добавил: Raxxell (04.10.2010)
    Просмотров: 1632 | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]