Автор Гілка: [Fedora] ProFTPd відповідає на STOR кодом 550 після перезапуску сервера  (Прочитано 2269 раз)

Відсутній HetmanNet

  • Графоман
  • ****
  • дописів: 412
  • Карма: +1/-0
  • Fedora, CentOS, RHEL, KDE
Історія така:
Був жив собі сервер з 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 сервера збігаються з тими що є в системі сервера. Тому підозрюю, що проблема лиш з віртуальними користувачами. Але знайти причину не можу.  :'( Допоможіть!   ::)
Віддамся на один вечір в хороші дівочі руки.. не дорого, в у.о. .. Якщо сподобається, то залишуся безкоштовно назавжди..

Відсутній anatolijd

  • Графоман
  • ****
  • дописів: 325
  • Карма: +0/-0
включіть параноїдальний лог, допоможе знайти проблему. Ваші віртуальні юзери є членами групи під якою працює proftpd (ftp) ?


ExtendedLog      /var/log/proftpd/paranoid.log ALL default
« Змінено: 2015-04-06 13:38:47 від anatolijd »

Відсутній HetmanNet

  • Графоман
  • ****
  • дописів: 412
  • Карма: +1/-0
  • Fedora, CentOS, RHEL, KDE
включіть параноїдальний лог, допоможе знайти проблему. Ваші віртуальні юзери є членами групи під якою працює proftpd (ftp) ?


ExtendedLog      /var/log/proftpd/paranoid.log ALL default
В параноїдальному лозі те все і взяв..
Уточню, я використовував не лише віртуальних юзерів, а й групи. Нехай Proftpd працював у групі ftp під юзером ftp, то всі віртуальні юзери і групи під якими працюють знаходяться в діапозоні GID >=1000 та UID >=1000. Вони всі не в одній групі, бо всіх віртуальних юзерів поділив на віртуальні групи, про що свідчить строка:
AllowGroup      OR      AdminsЗамість:
AllowUser      OR      AdminsА вже на основі груп роблю розмежування хто до яких тек має доступ.
Для наглядності наводжу один з файлів, що підтягуються строчкою
Include            %{env:PATH_CONFIG}/directory/*.confОдин з файлів:
<Directory %{env:PATH_FILES}/ACTIVITY>
      AllowOverwrite            on
      HideNoAccess            on
      <Limit READ>
            AllowGroup      OR      Admins,Bosses,HBookkerpers,LBookkerpers
            DenyAll
      </Limit>
      <Limit WRITE>
            DenyAll
      </Limit>
      <Limit DIRS>
            AllowGroup      OR      Admins,Bosses,HBookkerpers,LBookkerpers
            DenyAll
      </Limit>
      <Limit SITE_CHMOD>
            DenyAll
      </Limit>
      <Limit SITE_COPY>
            AllowGroup      OR      Admins,Bosses,HBookkerpers,LBookkerpers
            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>
Віддамся на один вечір в хороші дівочі руки.. не дорого, в у.о. .. Якщо сподобається, то залишуся безкоштовно назавжди..