需求:一个用户指定一个单独的路径,不能访问其他路径。ftp用户不能ssh等方式登录linux。
- 先安装 vsftpd
- Debian: sudo apt-get install vsftpd -y
- Centos: yum install vsftpd -y
二、添加用户 adduser -d /var/www/html/ftp -s /sbin/nologin -g www ftpuser
//创建用户
#passwd ftpuser
//设置密码
#Changing password for user usertest.
#New UNIX password:
#Retype new UNIX password:
#passwd: all authentication tokens updated successfully.
那现在就可以用ftp登录了 ,也会有以上我说的目录不固定问题
此时用ftpuser登陆系统ftp,是否可以访问?如果无法访问,说明我们的ftp做了限制。
- 配置 vsftpd
- 打开/etc/vsftpd/vsftpd.conf 查找userlist_enable、userlist_deny、userlist_file。如果userlist_deny=NO:只允许userlist_file文件中的用户可访问ftp;如果userlist_deny=YES:userlist_file文件中列举的用户不能通过ftp访问系统。userlist_enable是该功能的开关。我们的系统配置如下:
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
所以需要把用户加入到/etc/vsftpd/user_list文件中,每个用户一行。 - 找到#chroot_list_enable=YES,删除前面的那个#号,表示开启此限制功能
- 打开/etc/vsftpd/vsftpd.conf 查找userlist_enable、userlist_deny、userlist_file。如果userlist_deny=NO:只允许userlist_file文件中的用户可访问ftp;如果userlist_deny=YES:userlist_file文件中列举的用户不能通过ftp访问系统。userlist_enable是该功能的开关。我们的系统配置如下:
找到chroot_list_file:chroot_list_file=/etc/ftpchroot
#编辑ftpchroot文件,加入你要限制的用户名,一行一个用户.
#如果更新了vsftpd.conf,一定要重启ftp,命令如下:
# /etc/init.d/vsftpd restart
- 也可以用下面的配置
# cat /etc/vsftpd/vsftpd.conf | grep -v “#” | more
anonymous_enable=NO
local_enable=YES
idle_session_timeout=600
write_enable=YES
local_umask=022
anon_upload_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
ftpd_banner=Welcome to FTP service.
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
pam_service_name=vsftpd
userlist_enable=YES
listen=YES
tcp_wrappers=YES
max_clients=50
max_per_ip=5
local_max_rate=30000
anon_max_rate=10000
pasv_min_port=65400
pasv_max_port=65499