FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP协议组中的协议之一。
FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。
其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。
在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。
此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
轻型目录访问协议(英文:Lightweight Directory Access Protocol,缩写:LDAP,/ˈɛldæp/)
是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。
提供公司内部 上传下载 文件 使用
vsftp docker-compose.yaml
version: '2'
services:
vsftp:
container_name: vsftp
image: panubo/vsftpd
restart: always
ports:
- "21:21"
volumes:
- data:/home/
- conf:/etc/
- lib:/lib/x86_64-linux-gnu/security/
gohttp:
container_name: gohttpserver
image: codeskyblue/gohttpserver
restart: always
ports:
- "81:8000"
volumes:
- data:/app/public
nginx:
container_name: nginx
image: nginx
restart: always
ports:
- "88:80"
volumes:
- nginx-conf:/etc/nginx/conf.d
- data:/usr/share/nginx/html
- nginx-log:/var/log/nginx
volumes:
nginx-log:
nginx-conf:
data:
conf:
lib:
启动容器:
docker-compose up -d
安装 安装pam_ldap.so
apt-get update
apt-get install libpam-ldap
检查 pam_ldap.so 是否安装成功
ls /lib/x86_64-linux-gnu/security/pam_ldap.so
新建用户
useradd ppsftp
mkdir /home/ppsftp
chown -R ppsftp:ppsftp /home/ppsftp
修改 /etc/pam_ldap.conf 文件
host 10.10.100.11 # ldap 的地址
base ou=drift,dc=drift,dc=net # 用户组
binddn cn=admin,dc=drift,dc=net # 管理用户
bindpw admin的密码 # 管路用户的密码
pam_login_attribute cn # 允许登录的组
修改 /etc/pam.d/vsftpd 文件(文件最前面增加如下两行)
auth sufficient /lib/x86_64-linux-gnu/security/pam_ldap.so
account sufficient /lib/x86_64-linux-gnu/security/pam_ldap.so
修改 /etc/vsftpd.conf 文件(只修改了如下 3 处红色标记,添加最后一段)
# Server Config
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
# Security and User auth
chroot_local_user=YES
pam_service_name=vsftpd (1)
==virtual_use_local_privs=YES
chmod_enable=NO
user_config_dir=/etc/vsftpd/user_conf
user_sub_token=$USER
#local_root=/srv/$USER
local_root=/home/ppsftp/ (2)
userlist_enable=NO
allow_writeable_chroot=YES
# Logging
log_ftp_protocol=YES
xferlog_enable=YES
xferlog_std_format=YES
#xferlog_file=/dev/stdout
syslog_enable=NO
dual_log_enable=YES
# Remap all login users to this username
guest_enable=YES
guest_username=ppsftp (3)
hide_ids=YES
# Networking
connect_from_port_20=YES
listen=YES
tcp_wrappers=YES
pasv_min_port=4559
pasv_max_port=4564
# Added by Puwf
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022
chown_uploads=NO
综上所述就是所有的配置项
autoindex 指令可以配置在 http 指令块或 location 指令块中
location / {
root /usr/share/nginx/html;
index index.html index.htm;
autoindex on;
charset utf-8;
}
修改共享的目录权限(并添加至crontab)
chmod -R 777 /var/lib/docker/volumes/ftp_data/_data/ppsftp
*/1 * * * * /usr/bin/chmod -R 777 /var/lib/docker/volumes/ftp_data/_data/ppsftp
重启 VSFTP 服务,便可以直接在浏览器进行访问.
补充
1)登陆后可以查看,但无法创建目录:
解决方法:在 /etc/vsftpd.conf 配置文件中修改
anon_upload_enable=YES、
anon_mkdir_write_enable=YES 这两选项来解决。
2)创建目录后,在新创建的目录下再创建目录看不到其目录:
解决方法:注释掉:chown_uploads=YES这个选项改成NO。