1.FTP用户创建
useradd -s /sbin/nologin -g easytong dev_ftpuser
passwd dev_ftpuser输入密码比如310012
2.FTP工作目录创建
mkdir -p /opt/ftp
设置所属用户和用户组
chown -R easytong:easytong /opt/ftp
由于只要读权限,我们设置组权限为只读
chmod -R 775 /opt/ftp
3.安装并配置vsftp
rpm -qa vsftpd
#没有返回说明vsftpd未安装;
在配置好yum的前提下,安装vsftpd服务。注意前提:服务器可以上外网。
yum -y install vsftpd ftp lftp
4.备份配置文件
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
5.创建vsftpd.conf文件
vim /etc/vsftpd/vsftpd.conf
6.把下面内容添加到/etc/vsftpd/vsftpd.conf文件,并保存退出
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
pasv_enable=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
listen=YES
listen_port=1221
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
user_config_dir=/etc/vsftpd
#pasv_address=PROXY IP
pasv_min_port=61001
pasv_max_port=61010
max_clients=300
max_per_ip=3
reverse_lookup_enable=NO
7.手工创建文件chroot_list,限制用户在指定目录
touch /etc/vsftpd/chroot_list
8.创建用户配置信息文件并添加指定用户目录
vi /etc/vsftpd/dev_ftpuser
#添加如下内容,设备接入ftp所在路径:
local_root=/opt/ftp
9.启动vsftpd服务,并设置开机自动启动
systemctl start vsftpd
systemctl enable vsftpd
10.常见问题及处理方式
登录出现530 登录失败错误
vim /etc/pam.d/vsftpd
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
把 auth required pam_shells.so 中pam_shells.so修改为pam_nologin.so
或者注释掉此行。
FTP连接抛OOPS: tcp_wrappers is set to YES but no tcp wrapper support compiled in
vim /etc/vsftpd/vsftpd.conf ,
注释掉 tcp_wrappers=YES 这行
如果有内外网映射,使用被动模式。需要写对外IP地址在这一行配置
pasv_address=对外IP
227 错误
vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot 错误解决方法
从2.3.5之后,vsftpd增强了安全检查
如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!
如果检查发现还有写权限,就会报该错误。
解决方法
将用户主目录去除写权限。
chmod a-w /home/XX/
但是这样用户就不能进行写操作了。
在vsftpd.conf中新增allow_writeable_chroot=YES配置
配置文件路径:/etc/vsftpd/vsftpd.conf
新增如下:
allow_writeable_chroot=YES
#允许用户具有主目录写权限
这样用户被限定在了主目录中,并且具有写权限了。
发现最近从阿里云服务器ftp上传文件有如下报错
500 Illegal PORT command.
ftp: bind: Address already in use
可能是需要使用被动模式
ftp> quote pasv
227 Entering Passive Mode (192,168,0,112,164,248).
ftp> passive
Passive mode on.
进入被动模式之后可以上传