Страница 1 из 1

vsftpd авторизация пользователя без домашней директории

Добавлено: 2011-12-15 11:11:38
m0ps
Есть vsftpd сервер с авторизацией в AD через winbind. Авторизация проходит без проблем, но если у пользователя нет на сервере домашней директории то подключиться не удается, vsftpd дает отлуп. Конфиг vsftpd:

Код: Выделить всё

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
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
local_root=/shares/data
chmod_enable=No
Как можно обойти эту проблему не создавая для каждого пользователя домашнюю директорию?

Re: vsftpd авторизация пользователя без домашней директории

Добавлено: 2011-12-15 15:15:01
skeletor
Укажите ту папку, куда им нужен доступ.

Re: vsftpd авторизация пользователя без домашней директории

Добавлено: 2011-12-15 15:28:59
m0ps
собственно эту проблему решил. в smb.conf:

Код: Выделить всё

template homedir = /shares/data/
в vsftpd.conf:

Код: Выделить всё

local_root=/shares/data/
теперь еще нужно, что бы при заходе пользователя создавалась его личная директория (как правило создаются директории сриптом через самбу, но есть юзвери, которые ходят на фалопомойку только через ftp).
нашел пам модуль pam_exec.so, написал следующий скрипт (простенький, для теста):

Код: Выделить всё

#!/bin/sh
USER_NAME=$PAM_USER
USER_DIR=/shares/data/user/$USER_NAME
USER_UID=`id -u $USER_NAME`
USER_GID=`id -g $USER_NAME`

if [ ! -d "$USER_DIR" ]; then
  mkdir $USER_DIR
  chmod 700 $USER_DIR
  chown $USER_UID $USER_DIR
  chgrp $USER_GID $USER_DIR
fi
в vsftpd.pam добавил в конец:

Код: Выделить всё

session required pam_exec.so debug log=/tmp/pam_exec.log /root/bin/create_user_data_subdir_ftp.sh
при логине директория создается, но соединение зависат. помогает только перезагрузка vsftpd ((

Re: vsftpd авторизация пользователя без домашней директории

Добавлено: 2011-12-15 15:57:51
m0ps
дебаг фтп сервера содержит следующие строчки:

Код: Выделить всё

Thu Dec 15 14:55:49 2011 [pid 16247] CONNECT: Client "172.16.1.135"
Thu Dec 15 14:55:49 2011 [pid 16247] FTP response: Client "172.16.1.135", "220 (vsFTPd 2.2.2)"
Thu Dec 15 14:55:50 2011 [pid 16247] FTP command: Client "172.16.1.135", "USER m0ps"
Thu Dec 15 14:55:50 2011 [pid 16247] [m0ps] FTP response: Client "172.16.1.135", "331 Please specify the password."
Thu Dec 15 14:55:52 2011 [pid 16247] [m0ps] FTP command: Client "172.16.1.135", "PASS <password>"