Переместив проверенную конфигурацию vsftpd на новый сервер с Fedora 16, я столкнулся с проблемой. Кажется, все идет как надо, но аутентификация пользователя не проходит. Я не могу найти запись в любом журнале, который указывает, что произошло.
Вот полный файл конфигурации:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=0
data_connection_timeout=0
nopriv_user=ftpsecure
connect_from_port_20=YES
listen=YES
chroot_local_user=YES
chroot_list_enable=NO
ls_recurse_enable=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
FTP запрашивает у меня имя пользователя и пароль, я предоставляю их, логин неверный. Я подтвердил, что этот пользователь может войти в систему из SSH. Что-то облажалось pam_service
.
Аноним (если он изменен на разрешенный), кажется, работает хорошо.
SELinux отключен.
Ftpsecure, похоже, настроен нормально ... Я в полной растерянности!
Вот файлы журнала, которые я проверил безуспешно:
/var/log/messages
/var/log/xferlog #empty
/var/log/vsftpd.log #empty
/var/log/secure
Нашел что-то в /var/log/audit/audit.log
:
type=USER_AUTH msg=audit(1335632253.332:18486): user pid=19528 uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:authentication acct="kate" exe="/usr/sbin/vsftpd" hostname=ip68-5-219-23.oc.oc.cox.net addr=68.5.219.23 terminal=ftp res=failed'
Возможно, я должен смотреть на /var/log/wtf-is-wrong.help
:-)
Дополнительная информация:
/etc/pam.d/vsftpd выглядит так:
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
источник
/etc/pam.d/vsftpd
я думаю)?/var/log/syslog
илиdmesg
.Ответы:
Уф. Я решил проблему. Это составляет конфиг, но в /etc/pam.d/vsftpd
Поскольку сеансы ssh были успешными, а сеансы ftp - неудачными, я перешел к
/etc/pam.d/vsftpd, удалил все, что там было, и вместо этого поместил содержимое ./sshd, чтобы точно соответствовать правилам. Все сработало!
По методу исключения я обнаружил, что оскорбительная строка была:
Удаление этого позволяет мне продолжить.
Отключается: «pam_shells - это модуль PAM, который разрешает доступ к системе, только если оболочка пользователя указана в / etc / shells». Я посмотрел туда и, конечно же, ни баш, ни ничего. На мой взгляд, это ошибка в конфигурации vsftpd, так как нигде в документации вы не редактируете / etc / shells. Таким образом, установка по умолчанию и инструкции не работают, как указано.
Я пойду найти, где я могу отправить ошибку сейчас.
источник
/etc/shells
мне помог найти причину этого странного изменения поведения. Пользователь FTP был создан сShell: /sbin/nologin
и/sbin/nologin
оказался удаленным из/etc/shells
. Так что я добавил строки,/sbin/nologin
и/usr/sbin/nologin
этоauth required pam_shells.so
тоже сделало работу.Я использую Ubuntu и имел ту же проблему
Решение:
Затем прокомментируйте и добавьте строки следующим образом
источник
Как вы упомянули в своем ответе, пользовательская оболочка должна быть указана в
/etc/shells
. Вы можете установить в/sbin/nologin
качестве пользовательской оболочки запрет ssh и разрешение ftp без изменения конфигурации pam:источник
Если vsftpd завершается с ошибкой
Тогда другая возможность состоит в том, чтобы проверить,
pasv_addr_resolve=YES
установлен ли в/etc/vsftpd/vsftpd.conf
файле. Это приводит к разрешению имени хоста FTP-сервера через DNS. Если DNS не разрешается, как, например, если вы не можетеping yourhostname.example.com
, то вам нужно решить эту проблему с разрешением DNS или установитьpasv_addr_resolve=NO
в,/etc/vsftpd/vsftpd.conf
и это должно по крайней мере позволить vsftpd запускаться без ошибки.источник
Я также столкнулся с тем же странным поведением, когда пользователь FTP настроен с
на одной Системе можно войти, а на другой нет.
В ответ на «Ответ @KateYoak» оказалось, что
/etc/shells
файл отличается и не включает/sbin/nologin
оболочку. который сделал аутентификацию PAM в/etc/pam.d/vsftpd
провал
Просто добавив в
/etc/shells
файл недостающие строкирегистрация
/etc/pam.d/vsftpd
сработала.Таким образом, рабочий
/etc/shells
файл должен иметь:источник
в моем случае я выбрал комментарий для строки авторизации в файле конфигурации /etc/pam.d/vsftpd
Здесь вы причина. Если вы добавите / sbin / nologin в качестве системы оболочки, вы, вероятно, сможете открыть нежелательный бэкдор в вашей системе. Вместо этого, изменяя этот файл, вы наверняка затронете только vsftpd .
Я не знаю, выполняет ли другой процесс, такой как sshd, поиск системных оболочек, но я думаю, что изменение файла pam.d - лучшее решение, чем другие.
источник
Сделайте резервную копию файла конфигурации перед внесением изменений;
и затем отредактируйте vsftpd.conf (с помощью vi или nano)
Затем внесите следующие изменения
Сохраните изменения и перезапустите ftp-сервер (если вы используете nano, нажмите CTRL + O & enter для сохранения, затем CTRL + X для выхода)
источник