Блог о Gentoo и около-линуксовым штукам

26 июля 2015 г.

vsftpd в OpenWRT

01:10 Опубликовал Дмитрий Исаенко 6 коммент.
Сегодня мы будем настраивать FTP сервер на OpenWRT. В этом качестве я выбрал vsftpd.
Установим его:
# opkg install vsftpd
Для доступа к серверу я хочу испольовать отдельного пользователя, и логинясь под ним иметь доступ ко всему внешнему накопителю. Создадим нового пользователя добавив его в к остальным в файл /etc/passwd:
# vim /etc/passwd
... 
newuser:*:1000:1000:newuser:/mnt/path_here/path/:/bin/false
Можно попробовать добавить пользователя в группу 'nobody' и пропустить следующий шаг. Например так:
newuser:*:1000:65534:newuser:/mnt/path_here/path/:/bin/false
Добавим также одноимённую группу:
# vim /etc/group
newuser:x:1000:
Устанавливаем пароль для пользователя:
# passwd newuser
И теперь можно приступать к конфигурированию самого сервера. vsftpd позволяет задать список пользователей, которым будет позволено подключаться к ftp. Используем эту возможность:
# vim /etc/vsftpd.conf
userlist_enable=YES
userlist_deny=NO 
userlist_file=/etc/vsftpd.users
Согласно конфигурации, список пользователей распологается в файле /etc/vsftpd.users. Остаётся добавить юзера в список.
# echo newuser >> /etc/vsftpd.users
И изменить права на его домашнюю директорию
# chown -R newuser:newuser /mnt/path_here/path/
Теперь настроим анонимный доступ. Для этого создадим папку:
# mkdir /mnt/path_here/public
Добавим anonymous в список разрешенных пользователей:
# echo anonymous >> /etc/vsftpd.users
Изменим некоторые параметры в конфигурации самого сервера:
# vim /etc/vsftpd.conf
anonymous_enable=YES
no_anon_password=YES
anon_root=/mnt/path_here/public
Настроим права для папки с анонимным доступом:
chown -R ftp:ftp /mnt/path_here/public/
chmod 555 /mnt/path_here/public/
Также потребуется изменить домашнюю папку пользователя ftp, т.к. иначе будет выдаваться ошибка (домашней папки ftp в OpenWRT попросту не существует).
# vim /etc/passwd
ftp:*:55:55:ftp:/mnt/path_here:/bin/false
Запустим FTP сервер и добавим его в автозагрузку:
# /etc/inint.d/vsftpd start
# /etc/inint.d/vsftpd enable
Осталось добавить настройки firewall для возможности доступа к серверу из интернета. Я использовал для этого интерфейс Luci, но никто не мешает вам вручную добавить правила iptables в /etc/firewall.user и перезапустить демон.
Итак, перейдём в веб-интерфейсе 'Сеть' -> 'Межсетевой экран' -> вкладка 'Правила для трафика'
Создадим правила для FTP открыв порты 20 и 21.
После нажатия "Сохранить и применить" установка и настройка будет завершена!

6 комментариев:

  1. Здравствуйте!
    Здесь вы перезаписываете файл vsftpd.users:
    echo newuser > /etc/vsftpd.users
    echo anonymous > /etc/vsftpd.users

    ОтветитьУдалить
  2. chown: /mnt/usb1/my_login/: Operation not permitted
    Чтож не так то?

    ОтветитьУдалить
  3. В общем по этой инструкции получилось запустить ftp на openwrt 19.07.2 версии.
    Пункт выдачи прав "# chown -R newuser:newuser /mnt/path_here/path/" выдавал ошибку. Я его вообще пропустил, и анонима не стал делать. Все работает - спасибо за внятную инструкцию

    ОтветитьУдалить
  4. Добрый день.
    Если я правильно понимаю то сначала UID потом GID.
    Получается newuser не входит в одноименную группу.
    newuser:*:1000:65534:newuser:/mnt/path_here/path/:/bin/false
    newuser:x:1000:

    ОтветитьУдалить
    Ответы
    1. Верно подеметили. Исходя из этого пользователь входит в группу nobody (65534) тогда как в groups есть одноимённая группа, в которую юзер не входит.
      Спасибо, исправлю =)

      Удалить