LINUX.ORG.RU
решено ФорумAdmin

Как задать пароль виртуального юзверя в vsftpd?


0

3

Не могу разобраться. Сперва просто добавил системного пользователя — вообще не мог подключиться к серверу. Затем добавил строчку в файл /etc/vsftpd.userlist. Теперь подключиться могу, но пароль, который я ставил с помощью passwd не подходит. Пароль с помощью htpasswd не могу понять, что указывать в качестве расположения файла паролей.

Главное, один FTP пользователь на машине есть и он работает.

terry@Wild:/etc$ grep -v «^#» vsftpd.conf
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=NO
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
userlist_file=/etc/vsftpd.userlist
userlist_enable=YES
userlist_deny=NO

pam_service_name=vsftpd

В /etc/pam.d/vsftpd ты должен указать путь до username.db который ты предварительно создал из текстового файла и утилиты db_load, у тебя так ведь? В инете миллион статей VSFTPD+PAM+DB.

splinter ★★★★★ ()

Параллельный вопрос. С некоторых пор для нечрутованных юзеров такая фигня возникла. Если при логине входить в /some/path, то он пытается войти в ~/some/path. А чтобы в /some/path идти, нужно указывать //some/path/

Из-за этого у кучи FTP-клиентов, от браузеров до Shutter'а, башню сносит.

Куда копать?

KRoN73 ★★★★★ ()
Ответ на: комментарий от splinter

Убунта какая-то:

terry@Wild:~$ uname -a
Linux Wild.Red5 2.6.32-31-server #61-Ubuntu SMP Fri Apr 8 19:44:42 UTC 2011 x86_64 GNU/Linux

Dims2000 ()
Ответ на: комментарий от splinter

Да это не я делал.

Там вот что:


terry@Wild:/etc/pam.d$ cat vsftpd
# Standard behaviour for ftpd(8).
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed

# Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.

# Standard pam includes
@include common-account
@include common-session
@include common-auth
auth required pam_shells.so

А в файле /etc/ftpusers вот что:

terry@Wild:/etc/pam.d$ cat /etc/ftpusers
# /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5).

root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
nobody

Но это явно не то, потому что юзверя, под которым я могу входить, в этом списке нет. Может, это запретный список?

В общем, допустим, юзверя я добавил. А как пароль-то ему задать?

Dims2000 ()
Ответ на: комментарий от Dims2000

pam_service_name=vsftpd

Здесь указанно что pam знает откуда брать твоих виртуальных пользователей. Но как видно из твоего cat vsftpd pam их ни откуда не берет.

Давай распишу как делаю я:

Приводим файл /etc/vsftpd.conf к виду:


listen=YES
anonymous_enable=NO
local_enable=YES
virtual_use_local_privs=YES
write_enable=YES
guest_enable=YES
user_sub_token=$USER
local_root=/srv/ftp/$USER
hide_ids=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd



Приводим файл /etc/pam.d/vsftpd к виду:


auth required pam_userdb.so db=/etc/vsftpd/vsftpd
account required pam_userdb.so db=/etc/vsftpd/vsftpd
session required pam_loginuid.so



Создаем файл /etc/vsftpd/vuser.txt c содержанием:
пользователь_ftp1
пароль_пользователя_ftp1
пользователь_ftp2
пароль_пользователя_ftp2

Создадим файл DB с пользователями из vuser.txt



sudo db4.8_load -T -t hash -f login.txt /etc/vsftpd.db
sudo rm /etc/vuser.txt
sudo chmod 600 /etc/vsftpd.db



Исходя из того что у нас в vsftpd.conf указанно user_sub_token=$USER мы должны создать соответствующие каталоги в /srv/ftp/$USER где $USER имя виртуального пользователя. Проверить домашний каталог пользователя ftp можно в файле /etc/passwd: awk -F:/ '/ftp/ {print $2}' /etc/passwd.

Допустим у нас 2 пользователя skip1 и skip2, создаем домашние каталоги каталоги mkdir /srv/ftp/{skip1 skip2}, задаем на них необходимые права для записи в каталог. Создаем на уровне пользовательских директорий каталог incoming, задаем на него права для записи всех. Для отладки смотрим системные журналы: /var/log/syslog и /var/log/vsftpd.log.

splinter ★★★★★ ()
Ответ на: комментарий от splinter

Сорри, ошибочка: вместо
sudo db4.8_load -T -t hash -f vuser.txt /etc/vsftpd.db
sudo db4.8_load -T -t hash -f vuser.txt /etc/vsftpd/vsftpd.db

splinter ★★★★★ ()
Ответ на: комментарий от splinter

Но как видно из твоего cat vsftpd pam их ни откуда не берет.

Как тогда получается, что я могу входить под FTP под определённым именем? Не понимаю....

Dims2000 ()
Ответ на: комментарий от Dims2000

Как тогда получается, что я могу входить под FTP под определённым именем?

Пользователь под которым ты заходишь не виртуальный? Если не виртуальный то это нормально, так как в паме у тебя не прописанно откуда брать аутентификацию то он берет ее от локальных пользователей. У тебя же черным по белому в конфиге:


local_enable=YES - использовать /etc/passwd для аутентификации пользователей

splinter ★★★★★ ()
Ответ на: комментарий от splinter

Не, не помогает.

В логах для одного юзера пишет

OK LOGIN: Client «<мой IP>»

а для другого

FAIL LOGIN: Client «<мой IP>»

В общем, непонятно, как задать пароль.

Dims2000 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.