Тема: ProFTPd не пускает виртуальныйх пользователй

Система Fedora 17( консоль), обновился, поставил proftpd из под рута.

 yum install protfpd proftpd-utils

cat /etc/proftpd.conf

ServerName            "*********"
ServerType            standalone
DefaultServer            On
MultilineRFC2228             On
ShowSymlinks                On
UseIPv6                         Off
TimeoutNoTransfer             600
TimeoutStalled                 600
TimeoutIdle                 1200
ListOptions                    "-l"
DenyFilter                    \*.*/
DefaultRoot            /home/usr usr
DefaultRoot            ~
Port                21
Umask                022
MaxInstances            30
User                ftp
Group                ftp
AllowOverwrite            On
TransferLog            /var/log/proftpd/xferlog
SystemLog            /var/log/proftpd/proftpd.log
UseReverseDNS            Off
DisplayConnect             /home/ftp/ftp_connect.msg
DisplayLogin             /home/ftp/ftp_login.msg
AccessDenyMsg             "Запрещено! Все запрошенные соединения логируются"
AccessGrantMsg             "Now apload/download files"
DisplayGoAway             "Go Away"
<IfModule mod_quotatab.c>
    QuotaEngine off
</IfModule>
<IfModule mod_ratio.c>
    Ratios off
</IfModule>
<IfModule mod_delay.c>
    DelayEngine on
</IfModule>
<IfModule mod_ctrls_admin.c>
    AdminControlsEngine off
</IfModule>
<Global>
        RootLogin off
    RequireValidShell off
    MaxLoginAttempts 5
    UseFtpUsers on
    AllowRetrieveRestart on
    AllowStoreRestart on
    DirFakeGroup on
    MaxClients 15
    tcpNoDelay on
    DeleteAbortedStores on
    RequireValidShell off         
    DisplayChdir  .message
</Global>
<Anonymous ~>
    User ftp
    Group ftp
    <Limit WRITE>
      DenyAll
    </Limit>
    <Directory ~>
      <Limit ALL>
        AllowAll
      </Limit>
    </Directory>
  </Anonymous>
RequireValidShell    off
IdentLookups        off
AuthUserFile        /etc/ftpd.passwd
AuthOrder mod_auth_file.c

Соответственно создал виртуального юзера usr средствами ftppasswd

ftpasswd --passwd --file=/etc/ftpd.passwd --name=usr --shell=/bin/false --home=/home/usr/ --uid=106 --gid=65534

Всё...поидеи должно работать, если iptables не закрыт. Так у меня работает на Debian, Ubuntu, FreeBSD.
Рестартую  сервис

service proftpd start|stop|restart

При попытке зайти на ftp под пользователем usr, выдает в:

tail -f /vart/log/proftpd/proftpd.log

10:15:18 exampe.com proftpd[1228] XX.XX.XX.XX (192.168.0.22[192.168.0.22]): notice: unable to use '~/' [resolved to '/home/usr/']: Отказано в доступе
февр. 15 10:15:18 exampe.com proftpd[1228] XX.XX.XX.XX8 (192.168.0.22[192.168.0.22]): Preparing to chroot to directory '~/'
февр. 15 10:15:18 exampe.com proftpd[1228] XX.XX.XX.XX (192.168.0.22[192.168.0.22]): chroot to '~/' failed for user 'usr': Операция не позволяется
февр. 15 10:15:18 exampe.com proftpd[1228] XX.XX.XX.XX (192.168.0.22[192.168.0.22]): error: unable to set default root directory
февр. 15 10:15:18 exampe.com proftpd[1228] XX.XX.XX.XX (192.168.0.22[192.168.0.22]): FTP session closed.

и

tail -f /vart/log/message

10:15:19 ftp setroubleshoot: SELinux is preventing /usr/sbin/proftpd from search access on the directory /home. For complete SELinux messages. run sealert -l f5cc5ed3-4930-4132-9221-ce7e17c57f63

А если я стартую proftpd командой просто protfpd, то всё работает, всё заходит...
2 день бьюсь*(

2

Re: ProFTPd не пускает виртуальныйх пользователй

а если отключить SELinux?

Добавлено: 15-02-2013 21:19:31

<Anonymous ~> и может попробовать указать путь к папке?

3

Re: ProFTPd не пускает виртуальныйх пользователй

crash пишет:

а если отключить SELinux?

Добавлено: 15-02-2013 21:19:31

<Anonymous ~> и может попробовать указать путь к папке?

Ага, начал курить маны по SElinux.
Смысла не вижу, указывать путь к папке, потому что модуль авторизации берет строку домашней папки из файла /etc/ftpd.passwd
Но попробывал, безрезультатно.

4

Re: ProFTPd не пускает виртуальныйх пользователй

а права какие на папку.

5

Re: ProFTPd не пускает виртуальныйх пользователй

crash пишет:

а права какие на папку.

ftp:ftp

6

Re: ProFTPd не пускает виртуальныйх пользователй

а chroot делаете для пользователя usr. Может здесь загвоздка?

7

Re: ProFTPd не пускает виртуальныйх пользователй

crash пишет:

а chroot делаете для пользователя usr. Может здесь загвоздка?

Не понял...
Дык итак ведь стоит
DefafultRoot /home/usr usr

Или я не про то понимаю??

8

Re: ProFTPd не пускает виртуальныйх пользователй

а хозяин папки ftp:ftp?

9 (19-02-2013 09:49:54 отредактировано desperadik)

Re: ProFTPd не пускает виртуальныйх пользователй

crash пишет:

а хозяин папки ftp:ftp?

дык да...

Или что, я что то не допонимаю вработе виртуальных пользователей?

Надо DefaultRoot /home/usr ftp???

10

Re: ProFTPd не пускает виртуальныйх пользователй

как пользователь может сделать домашнюю директорию своей, если она принадлежит другому пользователю? Ну или тогда сделайте, что если входить под пользователем usr, то это будет вход аналогично пользователем ftp

11

Re: ProFTPd не пускает виртуальныйх пользователй

Как работают виртуальные пользователи?
Для чего нужен модуль авторизации?

При подключении к серверу фтп под виртуальным пользователем, модуль получает сигнал что такой то пользователь хочет подключится, вот такой то пароль, модуль считывает информацию с файла ftpd.passwd в котором указан имя виртуального пользователя, хеш-пароль, домашняя директория, после совпадения пары логина и паса модель перебрасывает в его домашнюю директорию, которая открыватся правами самого фтп, а не пользователя.

12

Re: ProFTPd не пускает виртуальныйх пользователй

chroot to '~/' failed for user 'usr': Операция не позволяется

логи говорят о другом, но вам видней. Спорить не буду.

13

Re: ProFTPd не пускает виртуальныйх пользователй

crash пишет:

chroot to '~/' failed for user 'usr': Операция не позволяется

логи говорят о другом, но вам видней. Спорить не буду.

Небуду умничать, а доверюсь вашему опыту...дык получается мне лучше создать реального юзера usr. И не мучаться с виртуальными, потому что он не даст мне выставить на папку права usr:usr (его же посути нет)

14

Re: ProFTPd не пускает виртуальныйх пользователй

Мне доверять не надо, я никогда не делал такого. Я даже сомневаюсь что для реального пользователя сработает chroot, если директория принадлежит другому пользователю.
Надо самом по экспериментировать, но мне просто не на чем smile
Надо почитать.

Добавлено: 19-02-2013 13:37:27

почитал. Насколько я понял, то ваш виртуальный пользователь, который usr с id=106 должен как бы быть привязан к реальному пользователю из /etc/passwd у которого так же id=106. Но в /etc/passwd он может иметь совершенно другое имя. И вот права доступа на папку должны быть для этого реального пользотателя.

The permissions problems are almost always caused by ID mismatch. That is, the UID and/or GID of the virtual user will not match the UID and/or GID owner of their home directory (or whichever directory is having problems). The key here is to change the ownership of the virtual user's directories using chown and IDs, rather than names. The chown utility can set ownership by ID just as easily as by name. Most chown examples show setting ownership by name, but that means chown would look up the IDs for that name via /etc/passwd, which, as noted above, will not work for virtual users.

Добавлено: 19-02-2013 16:29:52

ну как дела то там?

15

Re: ProFTPd не пускает виртуальныйх пользователй

crash пишет:

Мне доверять не надо, я никогда не делал такого. Я даже сомневаюсь что для реального пользователя сработает chroot, если директория принадлежит другому пользователю.
Надо самом по экспериментировать, но мне просто не на чем smile
Надо почитать.

Добавлено: 19-02-2013 13:37:27

почитал. Насколько я понял, то ваш виртуальный пользователь, который usr с id=106 должен как бы быть привязан к реальному пользователю из /etc/passwd у которого так же id=106. Но в /etc/passwd он может иметь совершенно другое имя. И вот права доступа на папку должны быть для этого реального пользотателя.

The permissions problems are almost always caused by ID mismatch. That is, the UID and/or GID of the virtual user will not match the UID and/or GID owner of their home directory (or whichever directory is having problems). The key here is to change the ownership of the virtual user's directories using chown and IDs, rather than names. The chown utility can set ownership by ID just as easily as by name. Most chown examples show setting ownership by name, but that means chown would look up the IDs for that name via /etc/passwd, which, as noted above, will not work for virtual users.

Добавлено: 19-02-2013 16:29:52

ну как дела то там?

Занят был другим....позже попробую....даже пары минуток нет...

Добавлено: 19-02-2013 15:02:21

Кароче проблема все таки в SELinux, точнее не проблема, а он просто не дает доступ к разделу /home.
Не стал глубоко с этим разбираться, времени как всегда нет.

Просто поменял домашнюю папку в /etc/ftpd.pass и в /etc/proftpd.conf  на стандартную фтпешную /var/ftp/ и всё работает. Виртуального пользователя пускает, даже без совпадения id. Реального пользователя usr в системе нет.

Если кто то разберется с SELinux ...Спасибо будет.

16

Re: ProFTPd не пускает виртуальныйх пользователй

а в системе есть пользователь с id=106?

17

Re: ProFTPd не пускает виртуальныйх пользователй

нет, нету

18

Re: ProFTPd не пускает виртуальныйх пользователй

точно?)

19 (27-02-2013 13:31:22 отредактировано desperadik)

Re: ProFTPd не пускает виртуальныйх пользователй

crash пишет:

точно?)

Кароче, вернулся я к этому забытому ftp
После смены каталога на /var/ftp/. Пользователя начало пускать, но как бы я не настраивал для него политики...всё равно не могу ни записать ни удалить "тестовые" файлы.

Привожу конфиги и логи

cat proftpd.conf

ServerName                      "corp."
ServerType                      standalone
DefaultServer                   On
MultilineRFC2228                On
ShowSymlinks                    On
UseIPv6                         Off
TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200
ListOptions                     "-l"
DenyFilter                      \*.*/
DefaultRoot                     ~
DefaultRoot                     /var/ftp/
Port                            21
Umask                           022 022
MaxInstances                    30
User                            ftp
Group                           ftp
AllowOverwrite                  On
TransferLog                     /var/log/proftpd/xferlog
SystemLog                       /var/log/proftpd/proftpd.log
UseReverseDNS                   Off
DisplayConnect                  /var/ftp/ftp_connect.msg
DisplayLogin                    /var/ftp/ftp_login.msg
AccessDenyMsg                   "Запрещено! Все запрошенные соединения логируются"
AccessGrantMsg                  "Now apload/download files"
DisplayGoAway                   "Go Away"
<Global>
RootLogin off
</Global>
RequireValidShell    off
IdentLookups            off
AuthUserFile        /etc/ftpd.passwd

cat /var/ftp/.ftpaccess

<Limit ALL>
    Order allow,deny
        AllowUser des
</Limit>
<Limit MKD RNFR DELE RMD STOR>
        Order allow,deny
        AllowAll des
</Limit>

ls -la /var/ftp/

drwxrwxrwx.  9 root    root    4096 февр. 22 12:56 .
drwxr-xr-x. 19 root    root    4096 февр. 19 20:02 ..
drwxrwxrwx.  2 ftp     ftp     4096 февр. 21 20:36 1
-rw-r--r--.  1 nobody  nobody     0 февр. 22 12:56 1.22
drwxr-xr-x.  2 root    root    4096 февр. 21 17:51 distr
-rwxrwxrwx.  1 root    root     126 февр. 22 14:51 .ftpaccess
drwxrwxrwx.  2 des     des     4096 февр. 22 13:58 general
drwxr-xr-x.  4 root    root    4096 февр. 21 20:36 users
-rw-r--r--.  1 root    root     224 янв.  17 01:13 welcome.msg

Права на папки остались такие после тестовых chmod и chwon. Тестил кароче.
cat /etc/ftpd.passwd

des:$1$pC0POluL$Ii9GKj3cdO2QWImgHYu7R1:14:50::/var/ftp/:/bin/false

cat /etc/passwd

....
....
ftp:x:14:50:FTP User:/var/ftp:/bin/bash
....
....

Могу привести логи, но там по моему подозрительного ничего нет *(.

Так же пробывал без .ftpaccess, а просто привилегии указывал в proftpd.conf
пример:

#<Directory /var/ftp/>
#      <Limit ALL>
#        Order allow,deny
#        AllowUser des
#        DenyAll
#      </Limit ALL>
#    </Directory>

20

Re: ProFTPd не пускает виртуальныйх пользователй

по идее удалить вы можете только те файлы где хозяином является пользователь ftp

21

Re: ProFTPd не пускает виртуальныйх пользователй

crash пишет:

по идее удалить вы можете только те файлы где хозяином является пользователь ftp

дык да...но директорию 1 я почему то не могу удалить и и не могу в нее писать

22

Re: ProFTPd не пускает виртуальныйх пользователй

что в логах?

23 (01-03-2013 09:00:15 отредактировано desperadik)

Re: ProFTPd не пускает виртуальныйх пользователй

crash пишет:

что в логах?

proftpd.log

марта 01 06:36:03 ftp.local proftpd[5758] 192.168.0.8 (192.168.0.22[192.168.0.22]): Preparing to chroot to directory '/var/ftp'
марта 01 06:36:03 ftp.local proftpd[5758] 192.168.0.8 (192.168.0.22[192.168.0.22]): USER des: Login successful. 

xferlog (Появилось такое только при попытке удаления файлов в директории distr. В остальных местах стараюсь удалить...в логах ничего

Fri Mar 01 06:49:13 2013 0 192.168.0.22 0 /var/ftp/distr/1.txt b _ o r des ftp 0 * c
Fri Mar 01 06:49:27 2013 0 192.168.0.22 0 /var/ftp/distr/2.txt b _ o r des ftp 0 * c

message

пусто

ls -la /var/ftp/

drwxrwxrwx.  9 root    root    4096 февр. 22 12:56 .
drwxr-xr-x. 19 root    root    4096 февр. 19 20:02 ..
drwxrwxrwx.  2 ftp     ftp     4096 февр. 21 20:36 1
-rw-r--r--.  1 nobody  nobody     0 февр. 22 12:56 1.22
drwxr-xr-x.  2 ftp     ftp     4096 февр. 21 17:51 distr
-rwxrwxrwx.  1 root    root     126 февр. 22 14:51 .ftpaccess
drwxrwxrwx.  2 des     des     4096 февр. 22 13:58 general
drwxr-xr-x.  4 root    root    4096 февр. 21 20:36 users
-rw-r--r--.  1 root    root     224 янв.  17 01:13 welcome.msg

ls -la /var/ftp/distr/

drwxr-xr-x. 2 ftp  ftp  4096 февр. 21 17:51 .
drwxrwxrwx. 9 root root 4096 февр. 22 12:56 ..
-rwxrwxrwx. 1 ftp  ftp     0 февр. 21 17:51 1.txt
-rwxrwxrwx. 1 ftp  ftp     0 февр. 21 17:51 2.txt

Добавлено: 04-03-2013 12:44:26

up!