Назад | Перейти на главную страницу

proftpd игнорирует HideGroup

У меня есть интересная проблема при размещении proftpd на SL6 x86_64. Когда я компилирую из исходного кода, исполняемый файл proftpd игнорирует функцию HideGroup. Однако, когда я устанавливаю старую версию из epel через rpm, эта функция HideGroup работает нормально. Почему эта функция из mod_core игнорируется при установке из источника / tar, но учитывается при установке из epel / rpm?

У меня есть каталог под названием "pictures" в '/ var / ftp /', который я не хочу, чтобы он был виден анонимным пользователям. Итак, у меня есть HideGroup в конфиге, но он игнорируется! Есть идеи, почему? Вот некоторая отладочная информация.

[robertk@bunsy ~]$ ll /var/ftp/
total 40
drwxrwxr-x. 3 bobby bobby 20480 Jul 27 11:10 pictures
drwxr-xr-x. 7 root    root    4096 Dec 20  2013 pub
d-wx-wx--x  2 ftp     ftp     4096 Dec 20  2013 uploads
-rw-r--r--  1 root    root     224 Dec 20  2013 welcome.msg
-rw-r--r--  1 root    root     224 Dec 20  2013 welcome.msg.rpmnew
-rw-r--r--. 1 root    root    1283 Jul 23 17:18 welcome.msg.rpmsave
[robertk@bunsy ~]$ 

Вот моя "настройка" из исходников.

    [root@bunsy proftpd-1.3.5a]# ./configure --prefix=/opt/proftpd-1.3.5a/ --enable-cap --enable-dso --enable-nls --enable-shadow

И когда я запускаю proftpd в режиме подробного вывода, кроме демона, он выдаёт следующее:

    [root@bunsy proftpd-1.3.5a]# /opt/proftpd-1.3.5a/sbin/proftpd -d 10 -n -DANONYMOUS_FTP -c /usr/local/etc/proftpd.conf
    ...
    : in dir_check_full(): path = '/', fullpath = '/var/ftp/'.
    : retrieved GID 45755 for group 'bobby'
    : HideGroup 'root' is not a known/valid group, ignoring
    : dispatching POST_CMD command 'PASS (hidden)' to mod_cap
    : mod_cap/1.1: uid = 14, euid = 14, gid = 50, egid = 50
    : mod_cap/1.1: capabilities '= cap_chown,cap_setgid,cap_setuid,cap_net_bind_service+ep cap_mac_override+ei'
    : dispatching POST_CMD command 'PASS (hidden)' to mod_delay
    : dispatching POST_CMD command 'PASS (hidden)' to mod_log
    : dispatching POST_CMD command 'PASS (hidden)' to mod_ls
    : dispatching POST_CMD command 'PASS (hidden)' to mod_auth
    : RELINQUISH PRIVS at mod_auth.c:1963
    : dispatching POST_CMD command 'PASS (hidden)' to mod_rlimit
    : dispatching POST_CMD command 'PASS (hidden)' to mod_xfer
    : dispatching POST_CMD command 'PASS (hidden)' to mod_core
    : dispatching LOG_CMD command 'PASS (hidden)' to mod_log
    : dispatching LOG_CMD command 'PASS (hidden)' to mod_auth
    : ANON ftp: Login successful.
    : dispatching PRE_CMD command 'SYST' to mod_core
    : dispatching PRE_CMD command 'SYST' to mod_core
    : dispatching CMD command 'SYST' to mod_core
    : dispatching LOG_CMD command 'SYST' to mod_log
    : dispatching PRE_CMD command 'FEAT' to mod_core
    : dispatching PRE_CMD command 'FEAT' to mod_core
    : dispatching CMD command 'FEAT' to mod_core
    : in dir_check_full(): path = '/', fullpath = '/var/ftp/'.
    : HideGroup 'bobby' is not a known/valid group, ignoring
    : dispatching LOG_CMD command 'FEAT' to mod_log
    : dispatching PRE_CMD command 'PWD' to mod_core
    : dispatching PRE_CMD command 'PWD' to mod_core
    : dispatching CMD command 'PWD' to mod_core
    : in dir_check_full(): path = '/', fullpath = '/var/ftp/'.
    : HideGroup 'bobby' is not a known/valid group, ignoring
    : dispatching LOG_CMD command 'PWD' to mod_log
    : dispatching PRE_CMD command 'EPSV' to mod_core
    : dispatching PRE_CMD command 'EPSV' to mod_core
    : dispatching CMD command 'EPSV' to mod_core
    : in dir_check_full(): path = '/', fullpath = '/var/ftp/'.
    : HideGroup 'bobby' is not a known/valid group, ignoring
    : Entering Extended Passive Mode (|||25228|)
    : dispatching LOG_CMD command 'EPSV' to mod_log
    : dispatching PRE_CMD command 'LIST' to mod_core
    : dispatching PRE_CMD command 'LIST' to mod_core
    : dispatching CMD command 'LIST' to mod_ls
    : passive data connection opened - local  : 137.78.60.158:25228
    : passive data connection opened - remote : 128.149.252.79:50071
    : in dir_check_full(): path = '/', fullpath = '/var/ftp/'.
    : HideGroup 'bobby' is not a known/valid group, ignoring
    : in dir_check_full(): path = '/igspush', fullpath = '/var/ftp/igspush'.
    : HideGroup 'bobby' is not a known/valid group, ignoring
    : in dir_check_full(): path = '/pub', fullpath = '/var/ftp/pub'.
    : HideGroup 'bobby' is not a known/valid group, ignoring
    : in dir_check_full(): path = '/uploads', fullpath = '/var/ftp/uploads'.
    : HideGroup 'bobby' is not a known/valid group, ignoring
    : in dir_check_full(): path = '/welcome.msg', fullpath = '/var/ftp/welcome.msg'.
    : HideGroup 'bobby' is not a known/valid group, ignoring
    : in dir_check_full(): path = '/welcome.msg.rpmnew', fullpath = '/var/ftp/welcome.msg.rpmnew'.
    : HideGroup 'bobby' is not a known/valid group, ignoring
    : in dir_check_full(): path = '/welcome.msg.rpmsave', fullpath = '/var/ftp/welcome.msg.rpmsave'.

(обратите внимание, что я удалил полное имя сервера, IP, время и т. д. из режима подробного вывода, чтобы сэкономить место для этого представления)

А вот мой конфиг для блока ANONYMOUS_FTP в моем proftpd.conf

<Anonymous ~ftp>
    User        ftp
    Group       ftp

    # We want clients to be able to login with "anonymous" as well as "ftp"
    UserAlias   anonymous ftp

    # Do not allow blank "passwords"
    #   AnonRejectPasswords     ^$ | ([ \t\n\r\f])

    # Maximum clients with message
    MaxClients      100  "Sorry, max of users reached (%m) -- try again later"
    MaxClientsPerUser   20  "Sorry, max clients for this user reached (%m) -- try again later"

    # Put the user into /pub right after login
    #DefaultChdir       /pub

    # We want 'welcome.msg' displayed at login, '.message' displayed in
    # each newly chdired directory and tell users to read README* files. 
    #DisplayLogin       /welcome.msg
    DisplayChdir        .message
    #DisplayReadme      README*

    # Cosmetic option to make all files appear to be owned by user "ftp"
    DirFakeUser     on ftp
    DirFakeGroup        on ftp

    # Limit WRITE everywhere in the anonymous chroot
    <Limit WRITE STOR SITE_CHMOD>
        DenyAll
    </Limit>

    # Allow logins (for anonymous) since they are disabled above.
    <Limit LOGIN>
        Order deny,allow
        Deny from .com
        Deny from <some ip>
        Deny from <some ip>
        Allow from all
    </Limit>

    HideNoAccess on
    HideGroup bobby
    HideGroup root
    #HideGroup 45755

    <Limit ALL>
        IgnoreHidden on
    </Limit>

    #ShowSymlinks            off

    # Don't write anonymous accesses to the system wtmp file (good idea!)
    WtmpLog     off

    # Logging for the anonymous transfers
    ExtendedLog /var/log/proftpd/access.log WRITE,READ default
    ExtendedLog /var/log/proftpd/auth.log AUTH auth



</Anonymous>

Когда я запускаю proftpd (установленный из epel через rpm (yum)), указывающий на тот же /usr/local/etc/proftpd.conf, все работает нормально!

Есть идеи, где я упускаю из виду эту проблему?

Что значит:

$ proftpd -V

шоу для proftpd установлен с epel через rpm (yum)? Одна из вещей, генерируемых приведенной выше командой, - это список параметров времени компиляции, используемых для этого proftpd двоичный. Сравнивая ваши configure параметры команды с теми, которые используются для версии epel, вы можете найти виновника.