当前位置: 首页 > 工具软件 > go-ldap-admin > 使用案例 >

VSFTP对接LDAP之实战经验

印高阳
2023-12-01

FTP 协议

 FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP协议组中的协议之一。
 FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。
 其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。
 在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。
 此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

LDAP 协议

轻型目录访问协议(英文: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

综上所述就是所有的配置项

nginx autoindex设置目录浏览

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。
 类似资料: