Ответ, как указал Майкл Гомер, заключается в том, что pastebin добавил окончания строк Windows CRLF в мои файлы. Чтобы исправить это, я выполнил следующее:
sed -i 's/\r$//' ts3update
sed -i 's/\r$//' ts3restore
И скрипты успешно выполнились.Ответ был взят отсюда: Сценарий оболочки Bash / Korn, отредактированный в Windows, выдает ошибку '... ^ M: not found'
Я отправляю этот ответ в надежде, что он может помочь кому-то в будущем, возможно, мне, поскольку я страдал от решения этой проблемы.
У меня неправильно установлен local_root
в файле /etc/vsftpd/vsftpd.conf
. Параметр указывает на папку, которой не существует.
Через меня я увидел сбой команды пароля в FileZilla, поэтому я подумал, что пароль ей не понравился. Что заставило меня задуматься в правильном направлении, так это то, что я нашел время, чтобы исследовать, почему я не получаю подробные журналы. Я не получил логов. Как только я начал получать журналы отладки, в которых я видел протоколы FTP, я увидел, что FTP-сервер сказал OK на пароль. К сожалению, никакой регистрации не было, но я натолкнулся на мысль, что согласование локального корня будет следующим курсом действий после аутентификации пароля. Я был прав, и это привело меня к проблеме.
Вот фрагмент кода в файле /etc/vsftpd/vsftpd.conf
, содержащий локальный корень.
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that
# the user does not have write access to the top level directory within the
# chroot)
chroot_local_user=YES
#local_root=/mnt/raid1
local_root=/ftproot
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
Вот как я наконец включил подробное ведение журнала, хотя сейчас я отключу его, чтобы сэкономить место на диске и повысить производительность.
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# If you want, you can have your log file in standard ftpd xferlog format.
# Note that the default log file location is /var/log/xferlog in this case.
xferlog_std_format=NO
log_ftp_protocol=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
IMHO, я бы посчитал этот комментарий ошибкой, поскольку xferlog_enable - это больше, чем фактическая загрузка и скачивание файлов. Это свойство также включает ведение журнала. Исследование Google доказывает, что log_ftp_protocol = YES
требует xferlog_enable = YES
.
У меня была такая же ошибка после команды PASS в CENTOS 7. (GnuTLS error -15: An unexpected TLS packet was received.)
Мое решение следующее:
Мне пришлось добавить следующее в vsftpd.conf:
allow_writeable_chroot=YES
chroot_local_user=YES
local_root=/ftphome/$USER
user_sub_token=$USER
Я столкнулся с той же ошибкой (Ошибка: ошибка GnuTLS -15: был получен неожиданный пакет TLS.) И бился головой около часа, но потом я Выяснилось, что домашний каталог пользователей ftp, который находился на томе Gluster, не был смонтирован. Смонтированный объем Gluster и проблема решена.
Как ни странно, эта проблема возникла при попытке ls
после входа в систему.
Оказалось, что я удалил httpd
в пользу nginx
, а папка, которую я использовал, принадлежала apache:apache
и пользователь был удален, когда я удалил httpd
. Я chcon
переместил каталоги в nginx:nginx
, а затем заменил пользователя в этих строках в моем конфигурационном файле :
guest_username=nginx
nopriv_user=nginx
Надеюсь, это поможет кому-нибудь, потому что сообщения об ошибках совсем не помогли.
Я хотел бы добавить к Ндианабаси:
Если у вас есть:
allow_writeable_chroot=NO
и у вас включен chroot, каталог Chroot не может быть доступен для записи пользователю, под которым вы пытаетесь войти. Это был мой случай, и возникла та же ошибка. Я подключил (корневой каталог )к корневому каталогу :root, и это исправило это для меня.
П.С. Я проверил, что больше не могу найти указанную опцию на страницах руководства, но она может быть доступна в более старых версиях.
проверьте, доступны ли каталог и его родительские каталоги для чтения и выполнения для пользователя sftp.
Я пока не могу оставлять комментарии, так что это частично ответ на комментарий Скотта и разъяснение ответа мистера Фантастика...
Я столкнулся с той же проблемой и после некоторых проб и ошибок выяснил, что это на самом деле означает, и лучшее решение (ИМХО ), чем настройка разрешения _записи _chroot=YES.
Это означает, что vsftpd должен допускать ситуацию, когда домашний каталог пользователя доступен для записи этим пользователем. Вместо этого из соображений безопасности я изменил разрешения для корневой папки пользователя на 555. Согласно другой ветке, это смягчает «РЕВУЮЩУЮ АТАКУ ЗВЕРЯ».
В моем случае исходная установка была:(777 )drwxrwxrwx /home/ftpuser/
Изменение каталога пользователя на:(555 )dr -xr -xr -x /home/ftpuser/
сделал домашний каталог пользователя НЕ доступным для записи пользователем, и поэтому мне не нужно было использовать разрешение _доступное для записи _chroot=YES. Это нормально (и более безопасно )для моей ситуации, поскольку у меня есть предустановленная структура каталогов, и я не хочу, чтобы пользователь в любом случае создавал новые файлы или каталоги в своей корневой папке.
Я понял это, когда переключил домашний каталог на /var/ftp через локальный _параметр root= для vsftpd, и это сработало без установки разрешения _записываемого _chroot=YES. Эта папка /var/ftp имеет номер (755 ), но принадлежит пользователю root и поэтому недоступна для записи пользователю ftpuser.