Bootstrap

AnolisOS部署vsftp

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.

进入被动模式之后可以上传

;