Вот что показывает лог ftp клиента: vsftpd: refusing to run with writable root inside chroot
Вот лог vsftpd:Sat Mar 23 22:53:36 2019 [pid 17036] FTP response: Client "12.77.0.1", "220 Welcome!"
Sat Mar 23 22:53:36 2019 [pid 17036] FTP command: Client "12.77.0.1", "USER 1cbk"
Sat Mar 23 22:53:36 2019 [pid 17036] [1cbk] FTP response: Client "12.77.0.1", "331 Please specify the password."
Sat Mar 23 22:53:36 2019 [pid 17036] [1cbk] FTP command: Client "12.77.0.1", "PASS <password>"
Sat Mar 23 22:53:36 2019 [pid 17035] [1cbk] OK LOGIN: Client "12.77.0.1"
Конфиг vsftpd:# Запускать vsftpd в независимом режиме
listen=YES
connect_from_port_20=YES
# Делаем анонимный доступ
#anonymous_enable=YES
# Анонимные входят без пароля
#no_anon_password=YES
# Анонимные будут попадать в публичную директорию
#anon_root=/var/ftp/pub
#anon_umask=022
# Разрешаем вход локальным пользователям с правом записи в домашних директориях
local_enable=YES
write_enable=YES
local_umask=022
# Локальные пользователи будут входить только в свои домашние каталоги
chroot_local_user=YES
chroot_list_enable=NO
# выставим нужные права
chmod_enable=YES
chown_uploads=YES
# Исползуем PAM
pam_service_name=vsftpd
#Включаем гостевого пользователя он будет использоваться для работы виртуальных
guest_enable=YES
guest_username=ftpuser
nopriv_user=ftpuser
# Виртуальные пользователи будут иметь права локальных пользователей
virtual_use_local_privs=YES
local_root=/var/ftp/$USER
user_sub_token=$USER
# Специальные настройки пользователей находятся в этой директории
user_config_dir=/etc/vsftpd/user_conf/
# Сообщения будут записываться в собственный журнал
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
#xferlog_std_format=YES
# Установки публичного FTP
max_clients=100
max_per_ip=10
hide_ids=YES
idle_session_timeout=600
data_connection_timeout=120
dirmessage_enable=YES
ftpd_banner=Welcome!
# Разрешаем работать в пассивном режиме
pasv_enable=Yes
pasv_max_port=65535
pasv_min_port=32768Авторизация через mysql (pam_mysql.so присутствует), вот файл /etc/pam.d/vsftpd:
auth required /lib/security/pam_mysql.so user=vsftpd passwd=***** host=localhost db=vsftpd table=users usercolumn=login passwdcolumn=pass crypt=2account required /lib/security/pam_mysql.so user=vsftpd passwd=***** host=localhost db=vsftpd table=users usercolumn=login passwdcolumn=pass crypt=2
Права на папку пользователя /var/ftp/1cbk:
drwxr-xr-x 2 ftpuser ftpuser 4096 Мар 21 18:45 1cbkВ случае включения анонимного входа - входит нормально, под вирт. пользователями - нет(((
Бьюсь уже сутки, man перечитал, интернет перелазил, пишут что лечится использованием вирт пользователей, так я их и использую.... Мож глюк какой, подскажите кто знает??
OS
Distributor ID: Debian
Description: Debian GNU/Linux 7.4 (wheezy)
Release: 7.4
Codename: wheezy
>[оверквотинг удален]
> В случае включения анонимного входа - входит нормально, под вирт. пользователями -
> нет(((
> Бьюсь уже сутки, man перечитал, интернет перелазил, пишут что лечится использованием вирт
> пользователей, так я их и использую.... Мож глюк какой, подскажите кто
> знает??
> OS
> Distributor ID: Debian
> Description: Debian GNU/Linux 7.4 (wheezy)
> Release: 7.4
> Codename: wheezyУ вас pam_mysql.so точно находится в /lib/security ?
Во всех примерах путь не указывается.
auth required pam_mysql.so user=vsftpd passwd=passftpd host=localhost db=vsftpd table=users usercolumn=login passwdcolumn=pass crypt=2account required pam_mysql.so user=vsftpd passwd=passftpd host=localhost db=vsftpd table=users usercolumn=login passwdcolumn=pass crypt=2
>[оверквотинг удален]
>> нет(((
>> Бьюсь уже сутки, man перечитал, интернет перелазил, пишут что лечится использованием вирт
>> пользователей, так я их и использую.... Мож глюк какой, подскажите кто
>> знает??
>> OS
>> Distributor ID: Debian
>> Description: Debian GNU/Linux 7.4 (wheezy)
>> Release: 7.4
>> Codename: wheezy
> У вас pam_mysql.so точно находится в /lib/security ?Да, находится. Оно работает и с путём и без пути. Авторизация на стороне FTP проходит, значит не в этом проблема.
Я уже решил свою проблему, корявенько, конечно, получилось что у меня все пользователи имеют полный доступ ко всем папкам в папке /var/ftp в т.ч. могут писать в корень.
Для этого я прописал в vsftpd.conf
passwd_chroot_enable=YES
и в /etc/passwd добавил /./:
было: ftpuser:x:1004:33::/var/ftp:/bin/sh
стало: ftpuser:x:1004:33::/var/./ftp:/bin/shНикакие другие методы не проканали.
Про этот метод прочитал в статье: https://nemcd.com/2015/01/refusing-run-writable-root-chroot-.../
Собственно кто знает как сделать верно, чтобы каждый виртуальный пользователь получал доступ только в свою папку, напишите, т.к. это тоже требуется.