今天临时需要用下ftp,发现我云服务器的ftp被我改完配置后没有恢复,导致无法使用,这里记录一下,顺便存个脚本。
bash <(curl https://gitee.com/ffing/onekey/raw/master/onekey.sh)
本脚本vsftp实现:匿名+本地用户访问FTP!
流程:
- 创建ftp账号/组
- 安装vsftpd
- 创建目录及文件
- 配置vsftpd
- 测试ftp
第一步,创建用户/组
创建FTP组:
#以"ftpgroup"为ftp组
groupadd ftpgroup
创建FTP目录:
#以"/ftp"为根目录,并更改属组
mkdir /ftp
chown :ftpgroup /ftp
创建FTP用户:
#创建用户"ffing"(配置bash、家目录、组、备注)
useradd -s /sbin/nologin -d /ftp/ffing -g ftpgroup -c "FTP用户" ffing
第二步,安装vsftpd
#安装
yum -y install vsftpd
#启动
systemctl start vsftpd
systemctl enable vsftpd
#防火墙放行vsftpd服务
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
###seliunx
#查看ftpd的selinux权限
getsebool -a | grep ftpd
#seliunx放行ftp
setsebool -P ftpd_full_access=on
第三步,创建目录及文件
vsftp默认目录树:
/etc/vsftpd/
├── ftpusers
├── user_list
├── vsftpd.conf
└── vsftpd_conf_migrate.sh
#添加上面创建的ftp登录账号(白名单文件user_list)
echo ffing >> /etc/vsftpd/user_list
#####添加匿名用户访问(根据自己需求)
echo anonymous >> /etc/vsftpd/user_list
#创建chroot_list用户列表(允许切换用户目录)
touch /etc/vsftpd/chroot_list
第四步,配置vsftpd
1.编辑 /etc/vsftpd/vsftpd.conf
实现ftp默认目录为/ftp,并锁定用户根目录禁止切换,userlist控制登陆名单
配置内容如下
#匿名登录
anonymous_enable=YES
#允许本地用户模式
local_enable=YES
#写权限
write_enable=YES
#本地用户模式创建文件的umask值
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=NO
#仅(ftpusers)中的用户禁止访问,匿名、本地用户均可以访问
#当userlist_enable=YES,userlist_deny=NO
#(user_list)中的用户可访问,(ftpusers)禁止访问,其它用户也禁止访问
#如果(ftpusers)和(user_list)存在相同用户将禁止访问,优先禁用《ftpusers》中的用户
#如想匿名用户也可以访问,需anonymous加入(user_list)
#当userlist_enable=YES,userlist_deny=YES
#(ftpusers和user_list)中的用户禁止访问,其它用户可以访问
###############################################################
userlist_enable=YES
userlist_deny=NO
tcp_wrappers=YES
###指定默认目录###
#本地用户默认目录
local_root=/ftp
#匿名用户默认目录
anon_root=/ftp
###锁定目录###
#锁定根目录,禁止用户切换
chroot_local_user=YES
#允许写权限(否则500错误)
allow_writeable_chroot=YES
#启用列表
chroot_list_enable=YES
#写入列表内的用户允许切换用户
chroot_list_file=/etc/vsftpd/chroot_list
2.编辑 /etc/pam.d/vsftpd
注释第四行:#auth required pam_shells.so
sed -i '4s/^/#/' /etc/pam.d/vsftpd
重启ftp
systemctl restart vsftpd
第四步,测试
匿名+本地用户:网页、客户端都可以正常登录。
1.在/ftp公共目录下,所有用户,具有读、执行(下载权限),
2.在自己用户名目录下,具有读、写、执行(上传下载权限),其它用户无任何权限无法访问。
注:权限问题,删除文件或目录,和文件或目录本身权限无关,其实是删除上级目录的inode信息,所以需要删除文件,必须上级目录具备写权限
目录权限:(通常r、x是一起的,没有x将只能看到目录内文件名)
- r权限,可以看到目录内文件
- w权限,增加、修改、删除
- x权限,可以对目录内的文件进行下一步操作
文件权限:
- r权限,可以查看文件内容
- w权限,增加、修改、删除
- x权限,执行权限
发表评论