ftp под FreeBSD

FreeBSD, NetBSD, OpenBSD, DragonFly и т. д.

Модератор: arachnid

Аватара пользователя
paxic
Сообщения: 45
ОС: Win)

ftp под FreeBSD

Сообщение paxic »

Доброго времени суток уважаемые форумчане. Вопрос в следующем, имеется сервак (отдельная машина) ftp под виндой.
Задача: сделать его под FreeBSD, как это лучше осуществить? Как все файлы имеющиеся на дисках (а это порядка 3Тб) подчинить=) proftpd? Что почитать???
Спасибо
"Системный программист - это дятел-долбёжник."
Зеленский В.П.
Спасибо сказали:
Аватара пользователя
AlexNT
Сообщения: 433
ОС: FreeBSD 8.2, ArchLinux

Re: ftp под FreeBSD

Сообщение AlexNT »

paxic писал(а):
08.01.2010 22:19
Доброго времени суток уважаемые форумчане. Вопрос в следующем, имеется сервак (отдельная машина) ftp под виндой.
Задача: сделать его под FreeBSD, как это лучше осуществить? Как все файлы имеющиеся на дисках (а это порядка 3Тб) подчинить=) proftpd? Что почитать???
Спасибо


Написать конфиг для proftpd (кстати сейчас proftpd прекрасно поддерживает перекодировку) смонтировать ntfsные диски в систему. Задача тривиальная. Но лучше все таки переписать с ntfsных разделов информацию на ufs2. Или Вам требуется пошаговая инструкция? Если сильно нужно могу написать в виде статьи...
Спасибо сказали:
Аватара пользователя
paxic
Сообщения: 45
ОС: Win)

Re: ftp под FreeBSD

Сообщение paxic »

Буду признателен за статью
"Системный программист - это дятел-долбёжник."
Зеленский В.П.
Спасибо сказали:
Аватара пользователя
paxic
Сообщения: 45
ОС: Win)

Re: ftp под FreeBSD

Сообщение paxic »

Буду весьма признателен за статью
"Системный программист - это дятел-долбёжник."
Зеленский В.П.
Спасибо сказали:
Аватара пользователя
Dimas
Сообщения: 137
Статус: FreeBSD

Re: ftp под FreeBSD

Сообщение Dimas »

proftpd отличный сервер ;)
Спасибо сказали:
Аватара пользователя
AlexNT
Сообщения: 433
ОС: FreeBSD 8.2, ArchLinux

Re: ftp под FreeBSD

Сообщение AlexNT »

Создание простого FTP сервера на базе FreeBSD.

Задачи:

1. Смонтировать в систему NTFS разделы.
2. Установить и настроить FTP сервер PROFTPD.

Исходим из того, что имеется система с установленной FreeBSD. В системе консоль настроена на koi8-r кодировку, и имеется пользователь с локалью ru_RU.KOI8-R.

Монтируем NTFS:

Для того чтобы смонтировать NTFSный раздел нужно воспользоваться командой:
mount_ntfs -CKOI8-R /dev/ad4s1 /mnt/winC/
Где - -CKOI8-R - опция которая обеспечит перекодирвку в текущую локаль (она у нас KOI8-R), /dev/ad4s1 - собственно NTFS раздел, /mnt/winC - каталог в который будет смонтирован NTFS раздел. NTFS раздел будет доступен только для чтения. Для записи в раздел придется использовать fusefs - ntfs3g, но более правильный подход использовать UFS2 как изначальную файловую систему для FreeBSD, т.е. располагать файлы в UFS2, а NTFS не использовать.

Устанавливаем proftpd:

Устанавливаем proftp из портов, при конфигурировании опций обязательно должна быть включена опция "Use nls (builds mod_lang)". Сборка с этой опцией нужна для того чтобы обеспечить перекодировку имен файлов из cp1251 (для виндовых клиентов) в koi8-r. После того как proftpd собрана и готова к работе, следует сформировать конфигурационный файл.

/usr/local/etc/proftpd.conf :

Код: Выделить всё

ServerName                      "MYFTP"
ServerType                      standalone
DefaultServer                   on
MaxLoginAttempts                20
MaxInstances                    30
Port                            21
UseReverseDNS                   off
IdentLookups                    off
DefaultRoot                     ~
ServerIdent                     off
RequireValidShell               off

User                            nobody
Group                           nobody

SystemLog                       /var/log/proftpd/system.log
TransferLog                     /var/log/proftpd/transfer.log
ExtendedLog                     /var/log/proftpd/extended.log
ScoreboardFile                  /var/run/proftpd/proftpd.scoreboard

AuthUserFile /usr/local/etc/ftpd.passwd
AuthGroupFile /usr/local/etc/ftpd.group

LangEngine On
UseEncoding koi8-r cp1251

AccessDenyMsg "FTP server use only `anonymous` user name"
AccessGrantMsg "Welcome to MY FTP server"

<Limit LOGIN>
  DenyAll
</Limit>

<Directory /*>
 <Limit SITE_CHMOD>
    DenyAll
 </Limit>
</Directory>

<Anonymous /mnt/winC/Games>
  User                          anonftp
  Group                         anonftp
  UserAlias                     anonymous anonftp

  MaxClients                    40 "Sorry, SERVER OVERLOADED."
  MaxClientsPerHost             10 "Sorry, maximum connects from ONE HOST."

  ShowSymlinks                  off

    <Limit WRITE>
        DenyAll
    </Limit>

    <Limit LOGIN>
        Order deny,allow
        Allow from all
    </Limit>

</Anonymous>


Рассмотрим некоторые параметры подробнее:

LangEngine On
UseEncoding koi8-r cp1251

Эти опции включают перекодировку имен файлов из koi8-r в cp1251.

AuthUserFile /usr/local/etc/ftpd.passwd
AuthGroupFile /usr/local/etc/ftpd.group

Эти параметры указывают откуда брать логины пользователей для соединения, в нашем случае пользователь всего один (anonftp) и содержимое файлов будет таким:

ftpd.passwd:
anonftp:*:65534:65534::/mnt/winC/Games:/sbin/nologin

ftpd.group
anonftp:x:65534:

Фактически идентификаторы пользователя и группы anonftp указывают на nobody.

<Anonymous /mnt/winC/Games>
Указывает на корневой каталог ftp сервера. Подключившись к фтп серверу мы увидим в доступе наш смонтированный ntfsный раздел.

P.S. В конфиге не исключены какие либо недочеты... На статью конечно не очень тянет :). Описывать подробно времени нет.
Спасибо сказали:
Аватара пользователя
paxic
Сообщения: 45
ОС: Win)

Re: ftp под FreeBSD

Сообщение paxic »

AlexNT, я уже говорил как-то что ты мой персональный Бог))))))))))))
Огромное спасибо. Возникнут вопросы, я их незамедлительно сюда помещу.
"Системный программист - это дятел-долбёжник."
Зеленский В.П.
Спасибо сказали:
Аватара пользователя
Dimas
Сообщения: 137
Статус: FreeBSD

Re: ftp под FreeBSD

Сообщение Dimas »

ftpd.passwd:
anonftp:*:65534:65534::/mnt/winC/Games:/sbin/nologin

А если чувак захочет еще и юзера test с паролем test и полным доступом к папке /mnt/test
То как добавлять будем ? Просто посмотрел конфиг, все просто и со вкусом ;)
Спасибо сказали:
Аватара пользователя
AlexNT
Сообщения: 433
ОС: FreeBSD 8.2, ArchLinux

Re: ftp под FreeBSD

Сообщение AlexNT »

Dimas писал(а):
14.01.2010 14:21
ftpd.passwd:
anonftp:*:65534:65534::/mnt/winC/Games:/sbin/nologin

А если чувак захочет еще и юзера test с паролем test и полным доступом к папке /mnt/test
То как добавлять будем ? Просто посмотрел конфиг, все просто и со вкусом ;)


http://www.bsdnotes.ru/files/ftpasswd

ссылка на скрипт который генерирует пользователя с паролем в заданный файл...

Придется еще дать разрешение на соед. этому пользователю:
...
<Limit LOGIN>
Allow test
DenyAll
</Limit>
...
Следующий пользователь указывается через запятую...

Фактически если же убрать из конфига строки:
AuthUserFile /usr/local/etc/ftpd.passwd
AuthGroupFile /usr/local/etc/ftpd.group

То proftpd будет использовать системных пользователей со всеми вытекающими...
Спасибо сказали:
Аватара пользователя
Dimas
Сообщения: 137
Статус: FreeBSD

Re: ftp под FreeBSD

Сообщение Dimas »

AlexNT, спасибо... подчерпнул для себя необходимую информацию ;)
Спасибо сказали:
Аватара пользователя
Dimas
Сообщения: 137
Статус: FreeBSD

Re: ftp под FreeBSD

Сообщение Dimas »

По советам AlexNT, реализовал ProFTPD сервер с доступом к анонимных юзеров так и с пользователями по логину и паролю, без внесения учетных записей в систему, что очень удобно


Для наглядности пользователь с аунтификацией взят test и паролем test. Вот конфиг proftpd.conf

Код: Выделить всё

ServerName                      "MY FTP"
ServerType                      standalone
DefaultServer                   on
MaxLoginAttempts                20
MaxInstances                    30
Port                            21
UseReverseDNS                   off
IdentLookups                    off
DefaultRoot                     ~
ServerIdent                     off
RequireValidShell               off
User                            nobody
Group                           nobody
SystemLog                       /var/log/proftpd/system.log
TransferLog                     /var/log/proftpd/transfer.log
ExtendedLog                     /var/log/proftpd/extended.log
ScoreboardFile                  /var/run/proftpd/proftpd.scoreboard
AuthUserFile /usr/local/etc/ftpd.passwd
AuthGroupFile /usr/local/etc/ftpd.group
DefaultRoot ~
<Directory /mnt/upload>
<Limit STOR APPE WRITE DELE>
AllowUser test
DenyAll
</Limit>
<Limit DELE SITE_CHMOD>
AllowUser test
DenyAll
</Limit>
</Directory>
<Anonymous /mnt/upload/pub>
  User                          anonftp
  Group                         anonftp
  UserAlias                     anonymous anonftp

  MaxClients                    40 "Sorry, SERVER OVERLOADED."
  MaxClientsPerHost             10 "Sorry, maximum connects from ONE HOST."

  ShowSymlinks                  off

    <Limit WRITE>
        DenyAll
    </Limit>

    <Limit LOGIN>
        Order deny,allow
        Allow from all
    </Limit>

</Anonymous>


При помощи скрипта http://www.bsdnotes.ru/files/ftpasswd создаем наших пользователей в фаиле /usr/local/etc/ftpd.passwd

Код: Выделить всё

ftpasswd  --file /etc/proftpd/ftp.passwd --name test --shell /bin/false --passwd --home /mnt/upload --uid 222 --gid 65534


Скрипт попросит вас указать пароль пользователю и подтвердить его.

Далее в /usr/local/etc/ftpd.group добавим строку

Код: Выделить всё

test:x:65534:


Я прописал в /etc/shells
строку

Код: Выделить всё

/bin/false
либо

Код: Выделить всё

/sbin/nologin
, но можно и не делать при наличии в proftpd.conf строки

Код: Выделить всё

RequireValidShell  off


Для анонимных пользователей вносим в /usr/local/etc/ftpd.passwd

Код: Выделить всё

anonftp:*:65534:65534::/mnt/upload:/sbin/nologin


А так же в /usr/local/etc/ftpd.group

Код: Выделить всё

anonftp:x:65534::x:65534:


Ну вот собственно и все :happy:
Спасибо сказали: