proftpd + mysql vs anonymous user

Тема в разделе "BSD", создана пользователем snark, 4 ноя 2009.

Статус темы:
Закрыта.
  1. snark

    snark Прохожие

    Поставил proftpd из портов под фрю, все заработало. Но потом для удобства решил подключиться к базе MySQL и использовать Перейти по ссылке
    Все работает, юзеры добавляются, логи просматриваются, но анонимных юзеров хоть убей не пускает.

    Код:
     <- 220 Servers identifying string
     -> USER anonymous
     <- 331 Anonymous login ok, send your complete email address as your
     -> PASS *hidden*
     <- 530 Login incorrect.
     -> QUIT
     <- 221 Goodbye.
    Я так понимаю, это из-за того, что логины хранятся в базе. Покопался на Перейти по ссылке, поправил конфиг

    Код:
    <Anonymous ~ftp>
    
    AnonRequirePassword off
    SQLEngine off
    
       User						 ftp
       Group						ftp
    
      ### We want clients to be able to login with "anonymous" as well as "ftp"
       UserAlias					anonymous ftp
    
      ### Limit the maximum number of anonymous logins
       MaxClients				   20
    
      ### We want 'welcome.msg' displayed at login, and '.message' displayed
      ### in each newly chdired directory.
       DisplayLogin				 welcome.msg
    #   DisplayFirstChdir		   .message
    
      ### Limit WRITE everywhere in the anonymous chroot
    <Limit READ>
    AllowAll
    </Limit>
    
    <Limit WRITE>
    DenyAll
    </Limit>
    </Anonymous>
    пробовал создавать юзера anonymous с пустым паролем, тоже не помогает. пришлось создать простые лог и пасс, чтобы люди могли качать файло, но как-то не солидно это :(
    нужен мудрый совет. может кто ставил такую конфигурацию?
     
  2. zerdek

    zerdek

    Регистр.:
    29 ноя 2007
    Сообщения:
    346
    Симпатии:
    50
    Попробуйте включить дебаг поболее и посмотрите логи.
    Проверить свой конфиг:
    proftpd -c /path/to/new/config/file -td5
    включть дебаг:
    proftpd -nd6
    или
    proftpd -nd5 2>&1 >& /path/to/debug/file
     
  3. snark

    snark Прохожие

    с дебагом что-то не получается. не выводится ничего в файл хоть я и дал права.
     
  4. mod3m

    mod3m Создатель

    Регистр.:
    16 апр 2007
    Сообщения:
    10
    Симпатии:
    0
    Проверь владельца и группу на каталоге для анонимов. ftp/ftp?
     
  5. snark

    snark Прохожие

    права есть. если бы прав не было, то система не писала бы incorrect password.
     
  6. poison-b13

    poison-b13 Постоялец

    Регистр.:
    21 июл 2009
    Сообщения:
    64
    Симпатии:
    5
    вот конфиг рабочий, только используется не ProFTPAdmin а другая прибамбасина, ее писать не буду, смысла нет, смысл в том что работает анонимный вход.
    Код:
    # имя сервера - показывается коннектящимся клиентам
    ServerName              "Mн FTP serv"
    # тип сервера (даже не тип самого сервера, а тип его запуска,
    # standalone/inetd - сам или через inetd)
    ServerType              standalone
    # смысл следующей директивы такой: если клиент коннектится не на имя
    # а на IP или на виртуальный хост, не описанный в конфиге, то при
    # установке в `off` он получит отлуп, если же установлено `on` то
    # он будет обслужен `сервером по-умолчанию`
    DefaultServer           on
    # e-mail администратора (по идее для каждого ВиртуалХоста его можно
    # поставить разный - но я делаю один сервер без извращений с
    # виртуальными хостами)
    ServerAdmin             admin@admin.ru
    # файло где хранится инфа о сессиях
    #ScoreboardFile         /var/run/proftpd.scoreboard
    
    # порт на котором работает сервер
    Port                    21
    
    # Маска с которой создаются новые файлы (не совсем маска - маска получается
    # из этого значения, путём его вычитания из 777 - т.е. в даном случае получится
    # маска 755)
    Umask                   022
    
    # Максимальное число `детей` (работает только в standalohe режиме)
    # необходимо для защиты от атак типа `отказ в обслуживании` да и
    # от перегрузки сервера поможет :)
    MaxInstances            30
    
    # Юзер от которого работает сервер
    User                    ftp
    # группа, под которой работает сервер
    Group                   ftp
    
    # если вылезет проблема, типа тормозов при подключении
    # (в момент установления коннекта `задумывается` на 10-20 секунд)
    # то раскомментируйте следующие две строки
    #UseReverseDNS     off
    #IdentLookups      off
    
    
    
    # если надо чтобы ВСЕ пользователи по ftp были ограниченны
    # своей домашней директорией, то надо раскомментировать
    # следующую строку:
    #DefaultRoot            ~
    # у меня хитрее сделано - себе я разрешил шариться по всему серверу
    # а остальных за`chroot`ил. Если, например, надо чтобы пользователи
    # могли по серверу шариться а анонимоусы нет, то надо указать !users
    # также можно указать определённую группу.
    DefaultRoot             ~       !(YOUR_USER_HERE)
    
    # Директории
    <Directory ~>
    AllowOverwrite          on
    <Limit Write>
    AllowAll
    </Limit>
    <Limit READ>
    AllowAll
    </Limit>
    </Directory>
    
    
    <Anonymous /usr/home/ftp>
    # пользователь от которого анонимоусы шарятся
    User            ftp
    # группа анонимоусов
    Group           ftp
    # альясы ананонимоусов (можно будет входить как ftp, а
    # не anonymous)
    UserAlias       anonymous ftp
    # максимально число анонимоусов
    MaxClients      10      "Sorry, max %m users"
    <Limit WRITE>
    DenyAll
    </Limit>
    </Anonymous>
    Кстати ты пользоателя ftp в систему добавил? анонимы под ним ходят в файловую систему.
     
  7. snark

    snark Прохожие

    Пользователя добавил в самом начале. Ваш конфиг ничем принципиально от моего не отличается.

    Еще интересует Umask. Это NOT CHMOD чтоли? Не пойму. С Umask 022 админ не может файлы из аплоада перетаскивать. Методом тыка пришел к маске 011.
     
  8. poison-b13

    poison-b13 Постоялец

    Регистр.:
    21 июл 2009
    Сообщения:
    64
    Симпатии:
    5
    нашел грабли, поставил у себя се это хоз-во
    вот конфиг рабочий:
    Код:
    ServerName                      "Servername"
    ServerType                      standalone
    ServerIdent                     on              "Servers identifying string"
    DeferWelcome                    on
    DefaultServer                   on
    
    DisplayLogin                    .welcome        # Textfile to display on login
    DisplayConnect                  .connect        # Textfile to display on connection
    #DisplayFirstChdir               .firstchdir    # Textfile to display on first changedir
    
    UseReverseDNS                   off
    IdentLookups                    off
    
    Port                            21
    Umask                           022
    MaxInstances                    15
    MaxClientsPerHost               3               "Only %m connections per host allowed"
    MaxClients                      10              "Only %m total simultanious logins allowed"
    MaxHostsPerUser                 1
    
    User                            ftp
    Group                           ftp
    
    ScoreboardFile                  /var/log/scoreboard
    
    RequireValidShell off
    
    # Some logging formats
    LogFormat                       default         "%h %l %u %t \"%r\" %s %b"
    LogFormat                       auth            "%v [%P] %h %t \"%r\" %s"
    LogFormat                       write           "%h %l %u %t \"%r\" %s %b"
    
    # Define log-files to use
    TransferLog                     /var/log/proftpd.xferlog
    ExtendedLog                     /var/log/proftpd.access_log    WRITE,READ write
    ExtendedLog                     /var/log/proftpd.auth_log      AUTH auth
    ExtendedLog                     /var/log/proftpd.paranoid_log  ALL default
    SQLLogFile                      /var/log/proftpd.mysql
    
    # Set up authentication via SQL
    # ===========
    [COLOR="Red"]#AuthOrder                       mod_sql.c[/COLOR]
    SQLAuthTypes                    Backend
    SQLConnectInfo                  proftpd@localhost root wb6qlfcp3o
    SQLUserInfo                     usertable userid passwd uid gid homedir shell
    SQLGroupInfo                    grouptable groupname gid members
    SQLUserWhereClause              "disabled=0 and (NOW()<=expiration or expiration=-1 or expiration=0)"
    
    # Log the user logging in
    SQLLog PASS counter
    SQLNamedQuery counter UPDATE "lastlogin=now(), count=count+1 WHERE userid='%u'" usertable
    
    # logout log
    SQLLog EXIT time_logout
    SQLNamedQuery time_logout UPDATE "lastlogout=now() WHERE userid='%u'" usertable
    
    # display last login time when PASS command is given
    SQLNamedQuery login_time SELECT "lastlogin from usertable where userid='%u'"
    SQLShowInfo PASS "230" "Last login was: %{login_time}"
    
    # xfer Log in mysql
    SQLLog RETR,STOR transfer1
    SQLNamedQuery  transfer1 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'c', NULL" xfer_stat
    SQLLOG ERR_RETR,ERR_STOR transfer2
    SQLNamedQuery  transfer2 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'i', NULL" xfer_stat
    
    AllowStoreRestart               on
    AllowRetrieveRestart            on
    RequireValidShell               off
    PathDenyFilter                  "\\.ftp)|\\.ht)[a-z]+$"
    DefaultRoot             ~       !poison
    DenyFilter                      \*.*/
    <Anonymous /ftp>
    User                            ftp
    Group                           ftp
    UserAlias                       anonymous ftp
    MaxClients              10      "Sorry"
    </Anonymous>
    
    <Directory /ftp/*>
            AllowOverwrite          off
            HideNoAccess            off
            <Limit READ>
                    AllowAll
            </Limit>
            <Limit WRITE>
                    DenyGroup       !admins
            </Limit>
    </Directory>
    <Directory /ftp/incoming/*>
            AllowOverwrite          on
            HideNoAccess            on
            <Limit READ>
                    DenyGroup       !admins
            </Limit>
    
            <Limit STOR MKD>
                    AllowAll
            </Limit>
    </Directory>
    
    красным закомменченная строка.
    все пашет, пробуйте.
     
  9. d1914

    d1914

    Заблокирован
    Регистр.:
    4 май 2007
    Сообщения:
    406
    Симпатии:
    64
    Ну так а "мускульная" авторизация работает при этом?
    У меня однажды был конфликт между мускулом и пам авторизацией, там это решилось в пользу мускула, закомментировал пам авторизацию...
    А тут похоже наоборот?
     
  10. poison-b13

    poison-b13 Постоялец

    Регистр.:
    21 июл 2009
    Сообщения:
    64
    Симпатии:
    5
    у меня без
    Код:
    #AuthOrder                       mod_sql.c
    работала mysql авторизация, но база пользователей была состряпана руками, не моими, и без web админки, так что я не знаю нафига мод этот нужен.
     
Статус темы:
Закрыта.