У меня все ограничены своей домашней папкой через FTP. В каждом доме у меня есть каталог public_html, в который я не могу загружать файлы.
Я добавил своего пользователя source
в группу ftp. папка public_html ...
drwxrwsr-x 2 source ftp 4096 public_html
Я не уверен, почему я не могу загружать файлы. Что я делаю не так с разрешениями?
Обновить
Журналы VSFTPD читают:
- TIMESTAMP - [pid 2] CONNECT: Client "xx.xxx.xx.xx"
- TIMESTAMP - [pid 1] [user] OK LOGIN: Client "xx.xxx.xx.xx"
Обновить
SmartFTP возвращает ошибку:
[18:36:52] SIZE index.php
[18:36:52] 550 Could not get file size.
Обновить
Умные журналы FTP
[23:15:31] TYPE I
[23:15:31] 200 Switching to Binary mode.
[23:15:31] SIZE index.php
[23:15:31] 550 Could not get file size.
[23:16:02] SIZE index.php
[23:16:02] 550 Could not get file size.
[23:16:32] SIZE index.php
[23:16:32] 550 Could not get file size.
[23:17:02] SIZE index.php
[23:17:02] 550 Could not get file size.
[23:17:32] SIZE index.php
[23:17:32] 550 Could not get file size.
[23:18:02] SIZE index.php
[23:18:02] 550 Could not get file size.
[23:18:12] DELE index.php
[23:18:12] 550 Permission denied.
[23:18:12] DELE test.php
[23:18:12] 550 Permission denied.
[23:18:19] TYPE A
[23:18:20] 200 Switching to ASCII mode
Журналы FTP просто показывают сообщения об успешном входе в систему, от имени какого пользователя и с какого IP он находится.
Разрешения public_html
drwxr-sr-x 2 source ftp 4096 2010-08-15 18:40 public_html
даже если public_html равен 777, я не могу писать на него.
Пожалуйста, проверьте, что у вас есть write_enable = YES в вашем vsftpd.conf
Вы можете выполнить su (сделать) для пользователя и попробовать создать файл вручную, что должно исключить ошибки прав доступа файловой системы.
Не могли бы вы опубликовать полный журнал из smartftp и, возможно, вашего vsftpd.conf?
Я подозреваю, что ваши домашние каталоги не являются исполняемыми или читаемыми глобально, следовательно, проблема не в каталоге publc_html, а в одном из его родительских каталогов. Какая у них химическая завивка?
Это система на основе Redhat с принудительным использованием selinux? Тип:
getenforce
и дайте нам знать, что там написано, если вам нужно специально разрешить пользователям FTP доступ к их домашним каталогам:
setsebool -P ftp_home_dir=1
Кроме того, можете ли вы получить доступ к домашним каталогам как пользователь? Звучит глупо, но разрешения могут быть неправильными. SSH в качестве root и попробуйте:
su - username
Он должен автоматически перейти в их домашний каталог, затем перейти в public_html и проверить с помощью
pwd
и cd в каталог, если нет. Если не получается, проблемы с разрешениями.
Далее попробуйте записать файл:
echo "test" >> test.txt
если не работает, опять проблемы с разрешениями.
Я знаю, вы говорите, что пробовали 777 разрешений, но ни один из двух приведенных выше примеров ls не показывает 777 (rwxrwxrwx). Конечно, в этом не должно быть необходимости, но было бы полезно исключить такую возможность.
Другое дело, что вам может потребоваться добавить команду STOR в директиву cmds_allowed, если она у вас есть, а этой команды еще нет.
Достаточно полный список, вероятно, выглядит примерно так:
cmds_allowed = ABOR, CWD, LIST, MDTM, MKD, NLST, PASS, PASV, PORT, PWD, QUIT, RETR, RMD, RNFR, RNTO, SITE, SIZE, STOR, TYPE, USER, ACCT, APPE, CDUP, HELP, РЕЖИМ, NOOP, REIN, STAT, STOU, STRU, SYST
chown -R username:groupname /path/to/public_html/