Я установил на сервер vsftpd.
Новый созданный пользователь имеет доступ только к своей папке, если использовать Total Commander, а вот если зайти на сервер, под любым пользователем, используя FileZilla, то все папки на сервере, у любого созданного пользователя, как на ладони.
Понимаю, что прав на удаление и использование у них нет, но хотелось бы скрыть все содержимое от их глаз, т.к. просматривать они их могут. Как это можно сделать? Спасибо.
vsftpd - настройка доступа
Я установил на сервер vsftpd.
Покажите все настройки к нему относящиеся.
vsftpd.conf
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
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Покажите ещё
[console]# ls /etc/vsftpd_user_conf/
# cat /etc/vsftpd_user_conf/vsftpd[/console]
vsftpd_user_conf - директория существует, создавал, но конфигов там еще нет. Можно пример?
Ну и по запросу cat /etc/vsftpd_user_conf/vsftpd - соответственно так же.
Появился еще один вопрос, пока смотрел настройки и создавал тестовых пользователей.
При использовании конфига, который я указал выше, директория для ftp-пользователя создается в /home/ имя_пользователя (необходимо для запуска определенных программ). А возможно, как-то еще, дополнительно, создавать (или дать доступ) папку для одного и того же пользователя в директории /var/www/сайт_пользователя. Т.е. как открыть для пользователя доступ по ftp к его папке в директории home и к сайту в директории www (если такое возможно)?
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. И т.д.
Спасибо. Только тут проблемка вышла.
Получилось так, что тему я нашел через поиск форума и только сейчас обратил внимание, что задал вопрос не в своем разделе. Другой дистрибутив и поэтому нет inetd.conf.
Как быть?
По поводу дополнительного доступа решил вопрос по другому. Создал в /etc/apache2/sites-available два виртуальных хоста. Теперь папка www находится в директории пользователя:
Показать
<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 не перезапускается.
Но через ftp файлы не заливаются: "Не удается создать удаленный каталог".
Добавляете в /etc/vsftpd.conf:
write_enable=YES
ps. Вместо initd, если правильно путаю, в Debian используется xinetd, его конфиг /etc/xinetd.conf, только синтаксис у него другой.
Этот вариант рассчитан на запуск супердемоном (xinetd/inetd) при попытке подключения на порт ftp.Когда listen=NO - vsftpd не перезапускается.
Соответственно, listen=YES -- standalone режим, когда демон запускается самостоятельно.
Добавляете в /etc/vsftpd.conf:
write_enable=YES
В конфиге так и установлено. Ссылку хорошую Вы мне дали на описание конфига.
Все перепробовал. Создал несколько пользователей, через Total Commander всех пускает нормально, а вот когда доходит до скачивания, загрузки или редактирования файлов - ни в какую не хочет. Уже для каждого пользователя конфиг создал и так же write_enable=YES - не хочет загружать файлы и все. 550 Failed to change directory.
А вот через FileZilla - все работает, но пользователю видны все директории сервера.
/etc/xinetd.conf
Тоже нету этого конфига. Попробую поискать в котором есть подобная строка ftp stream tcp nowait root /usr/sbin/tcpd vsftpd
Стоп. Так у меня просто нет демона inetd и xinetd. Как его установить?
$ aptitude search inetd
$ sudo apt-get install openbsd-inetd
С правами на запись в каталог для пользователя всё в порядке?
Владелец каталога пользователь, права на каталог 777.
Я уже даже переустановил всю систему полностью (apache, mysql, phpmyadmin и vsftpd) и все так же. Пользователь заходит в свою директорию, но файлы залить не может.
Кстати, удалял vsftpd и пробовал ставить proftpd. С proftpd все нормально, файлы пользователь может закачивать на сервер и скачивать так же.