Linux:用vsftpd工具搭建ftp服务器
vsftpd是一个开源免费的搭建ftp服务器的工具
安装:
yum install vsftpd
service vsftpd start
service vsftpd status
chkconfig vsftpd on # 开机启动,centos 6
注意防火墙,防火墙配置参考其他博文
开启vsftpd服务后,可以在浏览器输入 ftp://服务器地址 访问ftp服务器的共享目录里的文件。
假设ftp用户的共享目录为:/home/ftpuser/
我们如果想让/mnt/ftp/目录下的文件能够通过ftp服务访问到,可以将目录挂载到ftp用户共享目录下:
mkdir -p /home/ftpuser/mnt
mount --bind /mnt/ftp/ /home/ftpuser/mnt
用户管理:
配置文件位置:/etc/vsftpd/vsftpd.conf
配置用户权限的三个配置文件:
三个文件格式一样,都是一行一个用户名,三个文件的优先级顺序为:
**ftpusers > user_list > chroot_list **
ftpusers
:黑名单文件,不受配置影响,不允许里面的用户登录ftp服务(输入密码机会都没有,直接拒绝)。
user_list
:受userlist_enable配置项影响,若userlist_enable=NO忽略,若userlist_enable=YES,取决于userlist_deny的值,YES为黑名单(默认),NO为白名单(若为白名单则只允许其内用户登录)。
使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous。
userlist_deny=YES | userlist_deny=NO | |
---|---|---|
userlist_enable=YES | user_list为黑名单,除此之外的用户都可以访问ftp服务。 | user_list为白名单,只允许白名单用户访问ftp服务。 |
userlist_enable=NO | 忽略userlist_deny配置和user_list文件 | 忽略userlist_deny配置和user_list文件 |
chroot_list
:通过chroot_local_user、chroot_list_enable和chroot_list_file三个配置项来指定哪些用户可以访问其主目录以外的目录。
chroot_local_user=YES | chroot_local_user=NO | |
---|---|---|
chroot_list_enable=YES | 1.所有用户都被限制在其主目录下 (主目录作为/根目录,下同) 2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,不受限制 |
1.所有用户都不被限制其主目录下 2.使用chroot_list_file指定的用户列表,这些用户作为“例外”,受到限制 |
chroot_list_enable=NO | 1.所有用户都被限制在其主目录下 2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户 |
1.所有用户都不被限制其主目录下 2.不使用chroot_list_file指定的用户列表,没有任何“例外”用户 |
使用匿名用户:
配置项anonymous_enable=YES/NO决定是否支持匿名用户,若支持匿名用户,匿名用户共享文件夹位置:/var/ftp/
匿名用户注意两点:
1、不管chroot_local_user、chroot_list_enable怎么设置,匿名用户都不能访问/var/ftp/目录外的目录。
2、如果设置了白名单,匿名用户将无法登入,除非显式在user_list中加入一行:anonymous。
配置ftp用户最佳实践:
修改配置文件(以下是完整内容,可直接编辑替换):
[root@xjbpc con]# cat /etc/vsftpd/vsftpd.conf
# 禁用匿名用户
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
tcp_wrappers=YES
listen=YES
pam_service_name=vsftpd
# 文件chroot_list记录允许访问主目录以外目录的用户列表
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
# 文件user_list为白名单,仅允许这些用户访问ftp服务
userlist_enable=YES
userlist_deny=NO
创建一个单独用户专门访问ftp服务:
useradd -g root -s /sbin/nologin ftpuser #主目录默认为/home/ftpuser
passwd ftpuser # 给用户设置密码
然后需要在/etc/vsftpd/user_list里添加用户:
ftpuser # 必须保证/etc/vsftpd/ftpusers黑名单里没有ftpuser用户
若想让该用户可以访问主目录外的目录,只需在/etc/vsftpd/chroot_list里加入用户ftpuser。