Появилась необходимость создать группу затем пользователя ftp и дать ему права только в определенную директорию либо примонтированую директорию.
Cоздал каталоги подкаталог для пользователя в домашней папке.:
sudo mkdir /home/aedev/aedev1
Создаем отдельную группу для будущих пользователей: sudo addgroup aedev
Создаем пользователя и добавляем его в нужную группу и определяем ему нужный каталог: sudo useradd aedev1 -g aedev -p пароль -d /home/aedev/aedev1 -s /bin/false
Назначаем владельцев для папок: sudo chown aedev1:aedev /home/aedev/aedev1
Теперь суть для чего это делается, мне нужно предоставить доступ к папке /srv/www/khutr.com
но не давать доступа к серверу и директориям выше.
Для этого в домашнем каталоге пользователя которому хотим дать доступ, создаем папку khutr.com
и назначим её владельца.
root пользователь на ftp ходит, по SFTP все нормально.
Монтирование директории тоже происходит все корректно только подключение вновь созданным пользователем aedev1 нету вот это печально.
В том то и дело что все настроено, не подключается… не могу понять почему.
vsftpd.conf
<%args>
$anonymous
$userHomes
$chrootUsers
$ssl
</%args>
<%init>
use EBox::Gettext;
</%init>
# /etc/vsftpd.conf - vsftpd configuration file
#
# Run standalone
listen=YES
#
# Allow anonymous FTP
% if ($anonymous eq 'disabled') {
anonymous_enable=NO
% } else {
anonymous_enable=YES
% }
anon_world_readable_only=YES
#
# Allow local users to log in
% if ($userHomes) {
local_enable=YES
% } else {
local_enable=NO
% }
#
# Allow any form of FTP write command
write_enable=YES
#
# Default umask is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd)
local_umask=022
anon_umask=022
#
# Allow the anonymous FTP user to write files
% if ($anonymous eq 'write') {
anon_upload_enable=YES
anon_mkdir_write_enable=YES
# forbid renaming and removal of files
anon_other_write_enable=NO
% } else {
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
% }
#
# Activate directory messages
dirmessage_enable=YES
#
# Display directory listings with the time in your local time zone
use_localtime=YES
#
# Activate logging of uploads/downloads
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data)
connect_from_port_20=YES
#
# Uploaded anonymous files to be owned by a different user
#chown_uploads=YES
#chown_username=whoever
#
# Log file path
#xferlog_file=/var/log/vsftpd.log
#
# Log file in standard ftpd xferlog format
#xferlog_std_format=YES
#
# Customise the login banner string
ftpd_banner=<% __('Welcome to PcDoctor.kz FTP service.') %>
#
# Use the contents of this file for the login banner
#banner_file=/etc/vsftpd/banner
#
# Restrict local users to their home directories
% if ($chrootUsers) {
allow_writeable_chroot=YES
chroot_local_user=YES
% } else {
chroot_local_user=NO
% }
#
# List of local users to chroot() to their home directory. If
# chroot_local_user is YES, then this list becomes a list of users to NOT
# chroot()
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
#
# Activate the "-R" option to the builtin ls. This is disabled by default to
# avoid remote users being able to cause excessive I/O on large sites.
# However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option
ls_recurse_enable=YES
#
# Show textual names in the user and group fields of directory listings
text_userdb_names=YES
#
# Empty directory not writable by the ftp user as a secure chroot() jail at
# times vsftpd does not require filesystem access
secure_chroot_dir=/var/run/vsftpd/empty
#
# PAM service vsftpd will use
pam_service_name=vsftpd
% if ($ssl ne 'disabled') {
#
# Support secure connections via SSL. This applies to the control connection
# (including login) and also data connections
ssl_enable=YES
#
# Certificate to use for SSL encrypted connections
rsa_cert_file=/etc/vsftpd/ssl/ssl.pem
#
# Not to require all SSL data connections to exhibit SSL session reuse
require_ssl_reuse=NO
#
# Force authenticated login and data via SSL
force_local_logins_ssl=<% ($ssl eq 'forcessl') ? 'YES' : 'NO' %>
force_local_data_ssl=<% ($ssl eq 'forcessl') ? 'YES' : 'NO' %>
% } else {
ssl_enable=NO
% }
#
# Disable seccomp sandboxing new feature because it causes errors
# https://bugs.launchpad.net/ubuntu/+source/vsftpd/+bug/1195816
seccomp_sandbox=NO
Во-вторых, приглядись в конфиг, особенно к последним строчкам
# Support secure connections via SSL. This applies to the control connection
# (including login) and also data connections
[b]ssl_enable=YES[/b]
#
# Certificate to use for SSL encrypted connections
rsa_cert_file=/etc/vsftpd/ssl/ssl.pem
#
# Not to require all SSL data connections to exhibit SSL session reuse
require_ssl_reuse=NO
#
# Force authenticated login and data via SSL
force_local_logins_ssl=<% ($ssl eq 'forcessl') ? 'YES' : 'NO' %>
force_local_data_ssl=<% ($ssl eq 'forcessl') ? 'YES' : 'NO' %>
% } else {
[b]ssl_enable=NO[/b]
% }
#
Надо какбэ определиться)) и лучше определиться в сторону SSL
Статус: Соединяюсь с 1X5.1X9.69.2XX:21...
Статус: Соединение установлено, ожидание приглашения...
Статус: Инициализирую TLS...
Статус: Проверка сертификата...
Статус: TLS соединение установлено.
Команда: USER aedevast
Ответ: 331 Please specify the password.
Команда: PASS **********
Ответ: 530 Login incorrect.
Ошибка: Критическая ошибка: Невозможно подключиться к серверу
Тысячу раз уже пароли/логины менял. sudo passwd имя пользователя, поменял пароль стал подключаться но проблема теперь в другом, не может получить список файлов/папок.
Статус: Соединяюсь с 1X5.1X9.6.2X4:21…
Статус: Соединение установлено, ожидание приглашения…
Ответ: 220 Welcome to PcDoctor.kz FTP service.
Команда: AUTH TLS
Ответ: 234 Proceed with negotiation.
Статус: Инициализирую TLS…
Статус: Проверка сертификата…
Статус: TLS соединение установлено.
Команда: USER aedevast
Ответ: 331 Please specify the password.
Команда: PASS ********
Ответ: 230 Login successful.
Команда: SYST
Ответ: 215 UNIX Type: L8
Команда: FEAT
Ответ: 211-Features:
Ответ: AUTH TLS
Ответ: EPRT
Ответ: EPSV
Ответ: MDTM
Ответ: PASV
Ответ: PBSZ
Ответ: PROT
Ответ: REST STREAM
Ответ: SIZE
Ответ: TVFS
Ответ: UTF8
Ответ: 211 End
Команда: OPTS UTF8 ON
Ответ: 200 Always in UTF8 mode.
Команда: PBSZ 0
Ответ: 200 PBSZ set to 0.
Команда: PROT P
Ответ: 200 PROT now Private.
Статус: Соединение установлено
Статус: Получение списка каталогов…
Команда: PWD
Ответ: 257 “/”
Команда: TYPE I
Ответ: 200 Switching to Binary mode.
Команда: PASV
Ответ: 227 Entering Passive Mode (1X5,1X9,6,2X4,129,226). Команда: LIST
Статус: Отключен от сервера
Ошибка: Соединение прервано после 20 секунд неактивности
Ошибка: Не удалось получить список каталогов
Менял режимы клиента, пассив/актив и.т.д. току нет
Khutr любезно предоставил доступ к серверу, глянул и обнаружил следующую проблему:
проблема была в том, что при работе в пассивном режиме, помимо 21 порта, сервер выделяет еще некий рендж для работы с FTP, по факту файервол блокировал этот рендж (динамически выделяемые порты для работы с дирректориями), решение достаточно простое:
указать нужный рендж, добавив в конфиг /etc/vsftpd.conf параметры, указав диапазон к примеру: