Добрый день.
ProFTPD Version 1.3.4a
mod_exec/0.9.11
Конфиг<IfModule mod_exec.c>
ExecEngine on
ExecLog /var/log/proftpd/exec.log
ExecOnConnect /var/www/site/data/sh/ftp.sh %u
ExecOnCommand STOR /var/www/site/data/sh/ftp.sh %u
</IfModule>
Логиpreparing to execute '/var/www/site/data/sh/ftp.sh' with uid 109 (euid 109), gid 65534 (egid 65534)
+ '/var/www/site/data/sh/ftp.sh': argv[1] =
'/var/www/site/data/sh/ftp.sh' terminated normally, with exit status 0
ExecOnConnect '/var/www/site/data/sh/ftp.sh' succeeded
preparing to execute '/var/www/site/data/sh/ftp.sh' with uid 500 (euid 500), gid 500 (egid 500)
+ '/var/www/site/data/sh/ftp.sh': argv[1] = user
error: unable to open /dev/null for stdin: No such file or directory
'/var/www/site/data/sh/ftp.sh' terminated normally, with exit status 2
STOR ExecOnCommand '/var/www/site/data/sh/ftp.sh' failed: No such file or directory
Проблема
Как видно из логов mod_exec работает, но если директиву ExecOnConnect он отрабатывает от своего имени и всё работает, то директиву ExecOnCommand он отрабатывает от имени FTP пользователя и ничего не работает.
Проблема решается удалением настройки DefaultRoot ~ из proftpd.conf, но в таком случае FTP пользователи получаю доступ ко всей файловой системе.
Есть ли способ решить мою задачу без удаления DefaultRoot ~? Может быть как то через ссылки?
* Корневой директорией FTP пользователей является /var/www/site/data/
** Интернет прочесал, у всех решение "не используйте ProFTPD"
Спасибо за внимание!