LinuxForum.Fans
Тема

vsftpd - настройка доступа

Автор: ERT 12 сообщений 7426 просмотров
#169930

Я установил на сервер vsftpd.
Новый созданный пользователь имеет доступ только к своей папке, если использовать Total Commander, а вот если зайти на сервер, под любым пользователем, используя FileZilla, то все папки на сервере, у любого созданного пользователя, как на ладони.
Понимаю, что прав на удаление и использование у них нет, но хотелось бы скрыть все содержимое от их глаз, т.к. просматривать они их могут. Как это можно сделать? Спасибо.

#169935
ERT написал:
Я установил на сервер vsftpd.

Покажите все настройки к нему относящиеся.

#169947

vsftpd.conf

text
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
nopriv_user=vsftpd
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
guest_enable=YES
guest_username=vsftpd
local_root=/home/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd_user_conf

/etc/pam.d/vsftpd

text
auth required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
account required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
#170024

Покажите ещё
[console]# ls /etc/vsftpd_user_conf/
# cat /etc/vsftpd_user_conf/vsftpd[/console]

#170039

vsftpd_user_conf - директория существует, создавал, но конфигов там еще нет. Можно пример?
Ну и по запросу cat /etc/vsftpd_user_conf/vsftpd - соответственно так же.

Появился еще один вопрос, пока смотрел настройки и создавал тестовых пользователей.
При использовании конфига, который я указал выше, директория для ftp-пользователя создается в /home/ имя_пользователя (необходимо для запуска определенных программ). А возможно, как-то еще, дополнительно, создавать (или дать доступ) папку для одного и того же пользователя в директории /var/www/сайт_пользователя. Т.е. как открыть для пользователя доступ по ftp к его папке в директории home и к сайту в директории www (если такое возможно)?

#170070

ERT,
сможете объяснить, зачем вот это?


guest_enable=YES
guest_username=vsftpd

Попробуйте начать с простого:
1) привести конфиг /etc/vsftpd.conf в сухом остатке к виду:
anonymous_enable=YES # если нужен анонимный вход
local_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
ls_recurse_enable=YES
listen=NO

2) раскомментировать в /etc/inetd.conf строчку
ftp stream tcp nowait root /usr/sbin/tcpd vsftpd

3) запустить демон inetd, если не был запущен ранее
# chmod a+x /etc/rc.d/rc.inetd
# /etc/rc.d/rc.inetd restart

В этом варианте локальные пользователи запираются в своём каталоге в /home/$USER, anonymous запирается в /home/ftp.

Далее добавляйте параметры в соответствии с требуемой функциональностью.
Русский man: http://www.opennet.ru/man.shtml?topic=vsftpd.conf&category=5&russian=0

Если нужно дать доступ куда-то ещё дополнительно -- сделайте соответствующие ссылки. Если нужно давать доступ вместо /home/username, можно настроить local_root, user_sub_token. И т.д.

#170086

Спасибо. Только тут проблемка вышла.
Получилось так, что тему я нашел через поиск форума и только сейчас обратил внимание, что задал вопрос не в своем разделе. Другой дистрибутив и поэтому нет inetd.conf.
Как быть?
По поводу дополнительного доступа решил вопрос по другому. Создал в /etc/apache2/sites-available два виртуальных хоста. Теперь папка www находится в директории пользователя:

Показать
text
<VirtualHost mysite.com>
  ServerName mysite.com
  ServerAdmin admin@studiosvet.ru
  ServerAlias www.mysite.com
  DocumentRoot /home/user/www/mysite
  CustomLog /home/user/access.log combined
  ErrorLog /home/user/error.log
  <Directory "/home/user/www/mysite">
    Options FollowSymLinks Includes MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
  ScriptAlias /cgi-bin/ "/home/user/cgi-bin/"
</VirtualHost>

<VirtualHost mysite1.com> ServerName mysite1.com ServerAdmin admin@studiosvet.ru ServerAlias www.mysite1.com DocumentRoot /home/user1/www/mysite1 CustomLog /home/user1/access.log combined ErrorLog /home/user1/error.log <Directory "/home/user1/www/mysite1"> Options FollowSymLinks Includes MultiViews AllowOverride All Order allow,deny Allow from all </Directory> ScriptAlias /cgi-bin/ "/home/user1/cgi-bin/" </VirtualHost>

Но через ftp файлы не заливаются: "Не удается создать удаленный каталог".
Забыл добавить. Когда listen=NO - vsftpd не перезапускается.

#170160
ERT написал:
Но через ftp файлы не заливаются: "Не удается создать удаленный каталог".

Добавляете в /etc/vsftpd.conf:
write_enable=YES

ps. Вместо initd, если правильно путаю, в Debian используется xinetd, его конфиг /etc/xinetd.conf, только синтаксис у него другой.

#170244

ERT написал:
Когда listen=NO - vsftpd не перезапускается.
Этот вариант рассчитан на запуск супердемоном (xinetd/inetd) при попытке подключения на порт ftp.
Соответственно, listen=YES -- standalone режим, когда демон запускается самостоятельно.
#170251
bormant написал:
Добавляете в /etc/vsftpd.conf:
write_enable=YES

В конфиге так и установлено. Ссылку хорошую Вы мне дали на описание конфига.
Все перепробовал. Создал несколько пользователей, через Total Commander всех пускает нормально, а вот когда доходит до скачивания, загрузки или редактирования файлов - ни в какую не хочет. Уже для каждого пользователя конфиг создал и так же write_enable=YES - не хочет загружать файлы и все. 550 Failed to change directory.
А вот через FileZilla - все работает, но пользователю видны все директории сервера.

bormant написал:
/etc/xinetd.conf

Тоже нету этого конфига. Попробую поискать в котором есть подобная строка ftp stream tcp nowait root /usr/sbin/tcpd vsftpd
Стоп. Так у меня просто нет демона inetd и xinetd. Как его установить?

#170290

$ aptitude search inetd
$ sudo apt-get install openbsd-inetd

С правами на запись в каталог для пользователя всё в порядке?

#170349

Владелец каталога пользователь, права на каталог 777.
Я уже даже переустановил всю систему полностью (apache, mysql, phpmyadmin и vsftpd) и все так же. Пользователь заходит в свою директорию, но файлы залить не может.
Кстати, удалял vsftpd и пробовал ставить proftpd. С proftpd все нормально, файлы пользователь может закачивать на сервер и скачивать так же.

Войдите или зарегистрируйтесь, чтобы ответить.