Я пытаюсь настроить FTP-сервер, который аутентифицируется на сервере LDAP. Эта часть сделана и работает. Мой сервер - VsFTPd на Ubuntu Server 11.04. Но мне нужно создать домашние каталоги для моих пользователей LDAP. Я пытаюсь использовать pam_mkhomedir
модуль, но он не работает: когда я добавляю его строку в /etc/pam.d/vsftpd
файла, мои пользователи больше не могут входить на FTP-сервер. Проблема в том, что у меня очень мало информации о том, что не так. VsFTPd просто отвечает 530: login incorrect
и я не мог найти способ получать сообщения об отладке или ошибках от pam_mkhomedir.
Вот мои разные файлы конфигурации. В /etc/pam.d/vsftpd
файл:
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth required pam_ldap.so
account required pam_ldap.so
password required pam_ldap.so
session optional pam_mkhomedir.so skel=/home/skel debug
В /etc/vsftpd.conf
файл:
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
guest_enable=YES
session_support=YES
log_ftp_protocol=YES
tcp_wrappers=YES
Разрешения на /home
и /home/skel
:
root@ftp:/home# ls -al
total 16
drwxrwxrwx 4 root root 4096 2011-10-11 21:19 .
drwxr-xr-x 21 root root 4096 2011-09-27 13:32 ..
drwxrwxrwx 2 root root 4096 2011-10-11 19:34 skel
drwxrwxrwx 5 foo foo 4096 2011-10-11 21:11 foo
root@ftp:/home# ls -al skel/
total 16
drwxrwxrwx 2 root root 4096 2011-10-11 19:34 .
drwxrwxrwx 4 root root 4096 2011-10-11 21:19 ..
-rwxrwxrwx 1 root root 3352 2011-10-11 19:34 .bashrc
-rwxrwxrwx 1 root root 675 2011-10-11 19:34 .profile
Да, я знаю, разрешения не установлены должным образом, но проблема здесь не в безопасности: сначала мне нужно заставить его работать.
Итак, резюмируя: без pam_mkhomedir мои пользователи LDAP могут войти в систему, но они ничего не могут сделать, потому что они находятся в пустой chrooted jail. Если я добавлю pam_mkhomedir, они больше не смогут войти. Если кто-то знает, почему, или знает, как получить дополнительную информацию из логов, я был бы очень благодарен, спасибо.
Ответ простой - необходимо включить поддержку сессий в vsftpd.conf:
session_support=YES
Возможно, это не имеет прямого отношения к vsftpd, но с SFTP я столкнулся с тем, что pam_mkhomedir.so создает домашний адрес, принадлежащий пользователю: group - естественно, даже если файлы skel принадлежат пользователю root. Но chroot с SFTP хочет, чтобы root: root владел chroot homedir по соображениям безопасности (с разрешениями 755). Даже если файлы skel принадлежат пользователю root.
Взгляни на /var/log/audit.log
, вы увидите что-то вроде этого:
type = USER_START msg = audit (1290252247.771: 1669772): user pid = 20068 uid = 0 auid = 0 msg = 'PAM: session open acct = "Quanta": exe = "/ usr / sbin / vsftpd" (hostname = SVR040- 763.localdomain, адрес = 127.0.0.1, терминал = ftp res = не удалось) '
Итак, измените /etc/pam.d/vsftpd
кому:
auth sufficient pam_ldap.so
account sufficient pam_ldap.so
password sufficient pam_ldap.so
session sufficient pam_ldap.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
и попробуй еще раз.
Если вы все еще получаете ошибки: «500 OOPS: не удалось найти запись пользователя:», «500 OOPS: невозможно сменить каталог:», Я предлагаю вам использовать автодир вместо.