1

Тема: [Fedora] ProFTPd відповідає на STOR кодом 550 після перезапуску серве

Історія така:
Був жив собі сервер з ProFTPd з модулями:

################################################################################
# Динамічне завантаження модулей (DSO)                             #
################################################################################

<IfModule mod_dso.c>
    
    # Якщо не завантажено модуль mod_lang, то завантажити
    # У Fedora він зазвичай завжди встановлений і не потребує цього
    <IfModule !mod_lang.c>
        LoadModule    mod_lang.c
    </IfModule>
    
    # Завантажити модуль mod_ifsession
    # У Fedora він не встановлений, тому треба завантажувати завжди
    LoadModule    mod_ifsession.c
    
    # Завантажити модуль mod_ifversion
    # У Fedora він не встановлений, тому треба завантажувати завжди
    LoadModule    mod_ifversion.c
    
    # Завантажити модуль mod_copy
    # SITE_COPY
    # У Fedora він не встановлений, тому треба завантажувати завжди
    LoadModule    mod_copy.c
    
    # Завантажити модуль mod_site_misc
    # SITE_UTIME, SITE_SYMLINK, SITE_MKDIR, SITE_RMDIR
    # У Fedora він не встановлений, тому треба завантажувати завжди
    LoadModule    mod_site_misc.c
    
    # Завантажити модуль mod_ban
    # У Fedora він не встановлений, тому треба завантажувати завжди
    LoadModule    mod_ban.c
    
    # Завантажити модуль mod_delay
    # Він входить у склад ProFTPd
    <IfModule !mod_delay.c>
        LoadModule    mod_delay.c
    </IfModule>
    
    # Завантажити модуль mod_log
    # Він входить у склад ProFTPd
    <IfModule !mod_log.c>
        LoadModule    mod_log.c
    </IfModule>
    
    # Завантажити модуль mod_site
    # Він входить у склад ProFTPd
    <IfModule !mod_site.c>
        LoadModule    mod_site.c
    </IfModule>
    
    # Завантажити модуль mod_ls
    # Він входить у склад ProFTPd
    <IfModule !mod_ls.c>
        LoadModule    mod_ls.c
    </IfModule>
    
    # Завантажити модуль mod_auth
    # Він входить у склад ProFTPd
    <IfModule !mod_auth.c>
        LoadModule    mod_auth.c
    </IfModule>
    
    # Якщо не завантажено модуль mod_ctrls, то завантажити
    # У Fedora він зазвичай завжди встановлений і не потребує цього
    <IfModule !mod_ctrls.c>
        LoadModule    mod_ctrls.c
    </IfModule>
    
    # Завантажити модуль mod_ctrls_admin
    # У Fedora він не встановлений, тому треба завантажувати завжди
    # Потребує mod_ctrls
    <IfModule mod_ctrls.c>
        LoadModule    mod_ctrls_admin.c
    </IfModule>
    
    # Якщо не завантажено модуль mod_readme, то завантажити
    # У Fedora він зазвичай завжди встановлений і не потребує цього
    <IfModule !mod_readme.c>
        LoadModule    mod_readme.c
    </IfModule>
    
</IfModule>

#Якщо бачиш, то оформи! Не лінуйся!
LoadModule        mod_sql.c
LoadModule        mod_sql_mysql.c

# Рекомендовані налаштування для справної роботи модуля аутентифікації користувачів
RequireValidShell    off
AllowRetrieveRestart    on

# Налаштування взаємодії з базою даних
<IfModule mod_sql.c>
    # Метод аутентифікації користувачів (лише з БД MariaDB)
    AuthOrder        mod_sql.c
    
</IfModule>

Всі юзери мали доступ відповідно до налаштувань, всі писали і читали. Оновлення на сервер ставилися автоматично, SELinux жив і працював та претензій не мав.
Та одного дня вирішив трохи підкоригувати конфіги що підтягувалися так до основного:

################################################################################
# Розмежування доступу до тек                                  #
################################################################################

<Global>

    DefaultRoot        %{env:PATH_FILES}

    ########################################################################

    # Читання: всі
    # Запис: всі
    <Directory %{env:PATH_FILES}/PUBLIC>
        AllowOverwrite        on
        HideNoAccess        on
        <Limit ALL>
            AllowAll
        </Limit>
        <Limit SITE_CHMOD>
            AllowAll
        </Limit>
        <Limit SITE_COPY>
            AllowAll
        </Limit>
        <Limit SITE_MKDIR>
            AllowAll
        </Limit>
        <Limit SITE_RMDIR>
            AllowAll
        </Limit>
        <Limit SITE_UTIME>
            DenyAll
        </Limit>
        <Limit SITE_SYMLINK>
            DenyAll
        </Limit>
    </Directory>
    
    ########################################################################
    
    # Підвантаження налаштувань персональних тек користувачів
    Include        %{env:PATH_CONFIG}/users/*.conf
    
    ########################################################################
    
    # Підвантаження налаштувань спеціальних тек користувачів
    Include        %{env:PATH_CONFIG}/directory/*.conf
    
    ########################################################################
    
    # Читання: Всі
    # Запис: Адміністратори сервера
    <Directory %{env:PATH_FILES}/USERS>
        HideNoAccess        on
        <Limit READ>
            AllowAll
            DenyAll
        </Limit>
        <Limit WRITE>
            AllowGroup    OR    Admins
            DenyAll
        </Limit>
        <Limit DIRS>
            AllowAll
            DenyAll
        </Limit>
        <Limit SITE_CHMOD>
            AllowGroup    OR    Admins
            DenyAll
        </Limit>
        <Limit SITE_COPY>
            AllowGroup    OR    Admins
            DenyAll
        </Limit>
        <Limit SITE_MKDIR>
            AllowGroup    OR    Admins
            DenyAll
        </Limit>
        <Limit SITE_RMDIR>
            AllowGroup    OR    Admins
            DenyAll
        </Limit>
        <Limit SITE_UTIME>
            AllowGroup    OR    Admins
            DenyAll
        </Limit>
        <Limit SITE_SYMLINK>
            AllowGroup    OR    Admins
            DenyAll
        </Limit>
    </Directory>
    
    ########################################################################
    
    # Читання: Всі
    # Запис: Адміністратори сервера
    <Directory %{env:PATH_FILES}>
        HideNoAccess        on
        <Limit READ>
            AllowAll
            DenyAll
        </Limit>
        <Limit WRITE>
            AllowGroup    OR    Admins
            DenyAll
        </Limit>
        <Limit DIRS>
            AllowAll
            DenyAll
        </Limit>
        <Limit SITE_CHMOD>
            AllowGroup    OR    Admins
            DenyAll
        </Limit>
        <Limit SITE_COPY>
            AllowGroup    OR    Admins
            DenyAll
        </Limit>
        <Limit SITE_MKDIR>
            AllowGroup    OR    Admins
            DenyAll
        </Limit>
        <Limit SITE_RMDIR>
            AllowGroup    OR    Admins
            DenyAll
        </Limit>
        <Limit SITE_UTIME>
            AllowGroup    OR    Admins
            DenyAll
        </Limit>
        <Limit SITE_SYMLINK>
            AllowGroup    OR    Admins
            DenyAll
        </Limit>
    </Directory>
    
    ########################################################################
        
</Global>

Вони працювали як треба. Ну для впевненості у тому, що все добре вирішено було перезавантажити сервер. Ну завжди так роблю. Перезавантажив, працює, можеш спокійно спати на роботі. Та цього разу сталася біда.. жахлива та незбагнена. Все працює як завжди, окрім одно: на всі STOR сервер повертає одну вперту відповідь 550. SELinux допитав, він свою провину спростував. А в логу ProFTPd повідомлення одне:

[02/Apr/2015:09:01:18 +0300] [LAN] 192.168.1.101 => WhiteServer.local [4129], Bosses:TobiPipets, "PASV" => 227, -(3337)
[02/Apr/2015:09:01:18 +0300] [LAN] 192.168.1.101 => WhiteServer.local [4129], Bosses:TobiPipets, "STOR /PUBLIC/Наказ про звільнення адміна що третій день не може повернути сервер у роботу.docx.part" => 550, -(3389)

На всі теки вже 777 поставив замість 640. Теки належать root, ProFTPd працює від імені ftp, на всі теки вже поставив public_content_rw_t навіть на ті які лише читають.
Але є одна аномалія, якщо заходжу під своїм користувачем на FTP сервер то все працює, але пароль та ім'я користувача FTP сервера збігаються з тими що є в системі сервера. Тому підозрюю, що проблема лиш з віртуальними користувачами. Але знайти причину не можу.  :'( Допоможіть!   ::)

2 Востаннє редагувалося reverse2500 (02.04.2015 18:59:27)

Re: [Fedora] ProFTPd відповідає на STOR кодом 550 після перезапуску серве

а де варіант ?

це відкритий код, можна виправити помилку і вислати патч, це ж оперсорс

3 Востаннє редагувалося HetmanNet (02.04.2015 20:26:20)

Re: [Fedora] ProFTPd відповідає на STOR кодом 550 після перезапуску серве

Часу обмаль.