linuxFTP教程vsftpd
一、安装和启动
#查看是否已安装:rpm-q
vsftpd
vsftpd-3.0.2-11.el7_2.x86_64
vsftpd -v
vsftpd: version 3.0.2
安装 :yum -y install vsftpd
可以顺便把FTP客户端也装了:yum install ftp
检查:whereisvsftpd
vsftpd:/usr/sbin/vsftpd /etc/vsftpd
/usr/share/man/man8/vsftpd.8.gz
启动:systemctl start vsftpd
二、设置SELinux
linux系统会限制文件传输,或者访问等,使用ftp和samba都需要关闭该项
临时SELinux,重启电脑后失效
setenforce 0
#设置SELinux成为permissive模式
(关闭SELinux)
setenforce 1
#设置SELinux成为enforcing模式(开启SELinux)
永久SELinux,重启电脑后有效
vi /etc/selinux/config
SELINUX=disabled(如果有则修改,如果没有则添加)
其他方式
查询:getsebool -a | grepftp
设置:setsebool -Pftpd_full_access on
查询结果:加粗项根据需要打开
ftp_home_dir--> on
ftpd_anon_write--> on
ftpd_connect_all_unreserved -->
off
ftpd_connect_db --> off
ftpd_full_access--> on
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir--> on
三、设置firewall
设置:firewall-cmd --permanent --zone=public
--add-service=ftp
重启:firewall-cmd
–reload
查看:firewall-cmd --zone=public --list-all
四、测试
启动服务 : systemctl start vsftpd
本地访问和登录: ftp localhost
输入Name:anonymous或者ftp(我测试时随便的都可以)
输入密码:留空就行
登录成功后表示安装成功,可以使用ls查看测试项
该目录位于/var/ftp文件下有“pub”和“test”2项内容。
五、配置
在上述安装和测试完成后可以根据需要配置不同帐号和访问权限:
本地用户:用户在FTP服务器拥有账号,且该账号为本地用户的账号,可以通过自己的账号和口令进行授权登录,登录目录为自己的home目录$HOME(指创建帐号时分配的目录)
虚拟用户:用户在FTP服务器上拥有账号,但该账号只能用于文件传输服务。登录目录为某一特定的目录,通常可以上传和下载
匿名用户:用户在FTP服务器上没有账号,登录目录为/var/ftp(或者指定的匿名目录(可自行修改))
经过测试发现本地用户和虚拟用户不能同时使用,除非把本地帐号加入到虚拟账号列表里??为啥呢?
配置文件目录:/etc/vsftpd/
账户设置调用:/etc/pam.d/vsftpd
5.1 本地用户使用模式:
1.添加配置:
vim /etc/vsftpd/vsftpd.conf
查看并核对以下内容:
local_umask=022#基本项
dirmessage_enable=YES#基本项
xferlog_enable=YES#基本项
connect_from_port_20=YES#基本项
xferlog_std_format=YES#基本项
listen=NO#基本项
YES也可以,独立启动
listen_ipv6=YES#基本项
pam_service_name=vsftpd#基本项
userlist_enable=YES#基本项
tcp_wrappers=YES#基本项
guest_enable=YES#没有则添加
guest_username=ftpuser#没有则添加,之后会添加这个帐号到linux系统中,并且对该帐号设置的目录将会作为其他用户登录的主目录
local_root=/var/ftp/$USER
#任选项,如果想要不同用户登录后进入到不同的目录下,可以添加这个,也可以使用固定的目录,比如/var/ftp/upload而不是
ftpuser的帐号目录。
注意:我使用这个的时候没有成功,它无法识别$USER这个参数,尝试各种方法都不行,但是也可以使用local_root=。。。来指定目录
chroot_local_user=YES
allow_writeable_chroot=YES#如果添加了local_root请添加这两项,否则会提示chroot失败
anonymous_enable=NO#基本项,是否允许匿名登录,默认是YES,测试时可以登录,自行定义。还有很多关于匿名用户的配置,以下添加了2个,
anon_root=/var/ftp#任选项,匿名用户登录后的目录
ftp_username=ftp#任选项,根据是否开启匿名选择,定义匿名用户的账户名称,默认值为ftp,也可以修改使用。no_anon_password=YES #任选项,匿名用户登录时是否询问口令。设置为YES,则不询问。默认NO
以下三项虽然是看着是设置匿名用户的,但是测试结果是,关闭匿名用户后也要开启这三项,根据需要设置后才能上传啥的。目前没有找到其他参数,
anon_upload_enable=YES#任选项,是否允许匿名用户上传文件。只有在write_enable设置为YES时,该配置项才有效。而且匿名用户对相应的目录必须有写权限。默认为NO
anon_mkdir_write_enable=YES#任选项,是否允许匿名用户创建目录。只有在write_enable设置为YES时有效。且匿名用户对上层目录有写入的权限。默认为NO
anon_other_write_enable=YES#任选项,若设置为YES,则匿名用户会被允许拥有多于上传和建立目录的权限,还会拥有删除和更名权限。默认值为NO。
download_enable=YES#任选项,设置下载权限,看情况啦,不需要用户下载可以不添加,需要的话请设置为YES
2.添加用户
添加宿主用户: ftpuser指定
`/var/ftp/`目录
useradd -g root -M -d /var/ftp-s /sbin/nologin
ftpuser
-g
root表示添加ftpuser到root用户组
-M不创建用户主目录
-d定义主目录地址
-s
/sbin/nologin设置用户不能使用shell登录,比如通过putty登录到系统,或者本地登录到系统
没有测试不添加到root组的情况
设置用户ftpuser的密码:passwd
ftpuser
下面这个操作我感觉没啥用
把
/var/ftp的所有权给ftpuser.root
chown -R ftpuser.root
/var/ftp
添加普通用户:useradd -s /sbin/nologin test1
useradd-s /sbin/nologin test2
………………………
然后依次passwd test1修改密码等等等
3.测试登录
重启服务:systemctl restart vsftpd
运行:ftp localhost
用户名:test1
密码:刚才设置的,然后。。。登录成功啦啦啦,如果不成功建议查看“设置SELinux”
然后也可以远程访问下啦啦啦;ftp://ip
好啦,大功告成啦啦啦啦啦
5.2 虚拟用户使用模式:
1.添加配置:加粗项
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
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/vuser_conf
#设置虚拟用户的配置文件,可设置权限,目录地址等
virtual_use_local_privs=YES
chroot_local_user=YES
allow_writeable_chroot=YES
anon_upload_enable=YES
#这四项可去掉,在用户配置中设置
anon_mkdir_write_enable=YES
anon_mkdir_write_enable=YES
download_enable=YES
2.添加用户
编辑虚拟用户名单文件:touch
/etc/vsftpd/vuser_passwd
#第一行账号,第二行密码,注意:不能使用root做用户名,系统保留)
vi /etc/vsftpd/vuser_passwd
test2 #任意起名字
123456
ftpuser
#虽然添加了宿主用户,如果使用虚拟模式,不添加到此处依然无法登录,当然也可以使用很多其他用户)
123456
#保存退出
生成虚拟用户数据文件
db_load -T -t hash -f/etc/vsftpd/vuser_passwd
/etc/vsftpd/vuser_passwd.db
chmod 600 /etc/vsftpd/vuser_passwd.db
3.创建用户配置
mkdir /etc/vsftpd/vuser_conf
#建立虚拟用户个人vsftp的配置文件,
cd/etc/vsftpd/vuser_conf
#进入目录
touch test2 ftpuser
#这里创建两个虚拟用户配置文件,如果不创建,用户登录则会使用全局配置,直接进入到宿主用户的根目录。并且使用配置1中的配置权限。
每一个文件配置文件都差不多,请根据用户的具体权限设置。
local_root=/var/ftp/test2#任选项 用户配置目录,这个地方不一样
切记:要对这个文件夹地址配置可以访问的权限才可以登录成功
write_enable=YES#任选项
允许本地用户对FTP服务器文件具有写权限,可以设置本地用户的上传权限,默认是有的
anon_upload_enable=YES#任选项,是否允许匿名用户上传文件。只有在write_enable设置为YES时,该配置项才有效。而且匿名用户对相应的目录必须有写权限。默认为NO
anon_mkdir_write_enable=YES#任选项,是否允许匿名用户创建目录。只有在write_enable设置为YES时有效。且匿名用户对上层目录有写入的权限。默认为NO
anon_other_write_enable=YES#任选项,若设置为YES,则匿名用户会被允许拥有多于上传和建立目录的权限,还会拥有删除和更名权限。默认值为NO。
download_enable=YES#任选项,设置下载权限,看情况啦,不需要用户下载可以不添加,需要的话请设置为YES
4.修改文件夹权限,因为现在是root创建的
chmod -R 777
/var/ftp/test2
5.修改服务使用的用户文件
vim/etc/pam.d/vsftpd
选择使用刚才生成的db文件
#%PAM-1.0
session
optional
pam_keyinit.so
force revoke
#auth
required
pam_listfile.so item=user sense=denyfile=/etc/vsftpd/ftpusers
onerr=succeed
#auth
required
pam_shells.so
#auth
include
password-auth
#account
include
password-auth
auth required pam_userdb.so
db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so
db=/etc/vsftpd/vuser_passwd
session
required
pam_loginuid.so
session
include password-auth
6.测试啦啦啦
同上
安装遇到的问题:
1.配置虚拟用户时各种不能登录到我设置的目录下,登录提示chroot失败,我发现配置也是对的,为啥呢
各种实验之后:发现我拷贝的别人的参数过去,不知道有啥编码问题等等等,最后手动打上去就好了,唉
2.不能上传下载:一定要对设置的local_root改变文件夹权限,因为当前使用root创建的
以下是安装过程时的参考文档,小白一枚
http://www.jb51.net/article/103904.htm
http://blog.csdn.net/lhq9220/article/details/6544755
http://www.cnblogs.com/jefflee168/p/6575014.html