通过LDAP进行FTP认证和权限分配

proftpd 安装和配置

权限这块很难搞,搞到凌晨4点,累死了

ubuntu 安装配置 proftpd

安装 proftpd 和 ldap 的 mod

apt-get -y install proftpd-basic proftpd-mod-ldap

创建 ftp 存储目录

mkdir -p /data/ftp
chown proftpd:nogroup /data/ftp
chmod 750 /data/ftp

修改基本配置文件 /etc/proftpd/proftpd.conf

# 第 36 行,指定通过 nogroup 连接的用户根为 /data/ftp
DefaultRoot     /data/ftp   nogroup
# 使用户登录进入的目录,默认为 ~
DefaultChdir    /data/ftp

# 第 40 行去掉注释,不强制使用 /etc/shell 登录
RequireValidShell             off

# 注释第80行,LDAP 登录需要
# PersistentPasswd              off

# 第 134 行去掉注释加载 ldap配置文
Include /etc/proftpd/ldap.conf

修改 modules 配置文件 modules /etc/proftpd/modules.conf

# 去掉注释, 第25行
LoadModule mod_ldap.c

# 去掉注释, 第58行
LoadModule mod_quotatab_ldap.c

修改 ldap 配置文件 /etc/proftpd/ldap.conf

# 修改 ldap 连接属性
LDAPServer 192.168.10.10:389
LDAPBindDN "cn=admin,dc=huali-tec,dc=com" "admin"
# LDAPUsers dc=huali-tec,dc=com (&(uid=%u)(objectclass=posixAccount))
LDAPUsers dc=huali-tec,dc=com (&(cn=%u)(objectclass=posixAccount))
LDAPAuthBinds on

# 强制用户登录 ftp 时,在 `/data/ftp/user`  下创建自己的目录,权限为自己所有,其他人无法访问
CreateHome on
LDAPGenerateHomedir on
LDAPGenerateHomedirPrefix /data/ftp/user
LDAPForceGeneratedHomedir on

# 为目录列表中的用户组成员身份和GID启用LDAP查找
LDAPGroups "ou=group,dc=huali-tec,dc=com" group-name-filter-template: "(cn=%u)(objectclass=posixGroup))", gid-number-filter-template: "(gidNumber=%u)(objectclass=posixGroup))", member-user-filter-template: "(memberUid=%u)(objectclass=posixGroup))"

至此启动 proftpd 服务即可通过 ldap 访问 ftp
权限控制是系统账户的级别,ldap 的用户需要配置成于系统中用户相应的 UID GID

假设需求:

  • ldap 中有两个用户 guojing huangrong 分别为市场部和财务部 技术部 市场部
  • 用户 guojinghuangrong 能访问公共目录 public 和自己部门的目录
  • 无法访问其它目录

实现:

# 1. 在 ldap 中创建两个组,gidNumber 分别为 10001 和 10002,注意尽量不和系统中原有的用户冲突
# 2. 在 ldap 中创建两个用户,uidNumber 分别为 20001 和 20002,并加入到先创建的两个组中
# 3. 创建三个目录,分别为 jishubu caiwubu public
mkdir -p /data/ftp/jishubu
mkdir -p /data/ftp/shichangbu
mkdir -p /data/ftp/public
# 4. 分别配置三个目录的权限
chmod 770 /data/ftp/*           # 组内成员可读写,其它用户无法访问
chmod 777 /data/ftp/public      # public 所有用户可读写
chown :10001 /data/ftp/jishubu
chown :10002 /data/ftp/shichangbu

# 如果需要对用户对自己的目录可读写,其他人无法查看,可以给用户目录设置成 700
# 再将目的的属主设置成自己
# chmod 700 /data/ftp/user/guojing
# chown guojing /data/ftp/user/guojing

特别说明: 所有通过 ldap 连接 ftp 都默认有 nogroup 组的权限,GID 为 65534

proftpd 对 ldap 账户权限的控制

通过系统账户和目录的权限去控制不够精细,我们配置更细致的权限,这也是我们选用 proftpd 的初衷。

参考官方配置文档:http://proftpd.org/docs/directives/linked/configuration.html

假设需求:

  • ldap 中有两个用户 guojing huangrong 分别为市场部和财务部 技术部 市场部
  • 用户对自己的家目录有所有权,其它用户无法访问
  • 用户 guojinghuangrong 能访问公共目录 public 和自己部门的目录
  • 无法访问其它目录

创建相关目录

mkdir -p /data/ftp/jishubu
mkdir -p /data/ftp/shichangbu
mkdir -p /data/ftp/public
mkdir -p /data/ftp/user
chmod 770 /data/ftp/*
chown proftpd:nogroup /data/ftp/*

针对不同目录设置权限,编辑 /etc/proftpd/ldap_user.conf ,写入以下内容:

<Directory /data/ftp>
    <Limit READ DIRS>
        AllowAll
    </Limit>
</Directory>

<Directory /data/ftp/public>
    <Limit READ WRITE DIRS>
        AllowAll
    </Limit>
</Directory>

<Directory ~>
    <Limit READ WRITE DIRS>
        AllowALL
    </Limit>
</Directory>

<Directory /data/ftp/shichangbu>
    <Limit ALL>
        DenyAll
        AllowGroup shichanbu
        AllowUser huangrong
    </Limit>
</Directory>

<Directory /data/ftp/jishubu>
    <Limit ALL>
        DenyAll
        AllowUser guojing
    </Limit>
    <Limit READ DIRS>
        AllowGroup jishubu
    </Limit>
</Directory>

关于 Limit 的一些说明:

限制要控制的命令或操作
限制流从上至下
CWD 更改工作目录
MKD/XMKD  创建目录
DELE 删除文件
READ  * 所有处理读取的命令(不包括目录列表)
WRITE * 处理文件或目录写入/创建/删除的命令
DIRS  * 处理目录列表的所有命令
ALL * 相当于(READ WRITE DIRS)优先级最低,不会覆盖另一个命令组的限制

原文地址:http://blog.51cto.com/maoxian/2153866

时间: 2024-10-31 17:24:55

通过LDAP进行FTP认证和权限分配的相关文章

【转】Centos系统文件与用户权限分配详解ftp,nginx,php

linux系统中权限是非常完善的一个功能了,我们如果设置不正确文件就无法使用了,像我们以一般情况需要把文件权限设置为777或644了,对于用户权 限就更加了,像素ftp,nginx,php这些我们都可以给它们设置一个用户并且设置不同权限了,下面我们一起来看看文件与用户权限分配 文件权限设置 权限管理 主要的命令有: chmod.chown.chgrp.umask 1). 改变文件或目录的权限 chmod 2). 改变文件或目录的所有者 chown 3). 改变文件或目录的所属组 chgrp 4)

环境企业表单权限分配填报数据系统设计与实现

本科生毕业论文(设计) Undergraduate Graduation Thesis(Design) 题目Title:环境企业表单权限分配填报数据   系统设计与实现                 院 系 School (Department):数据科学与计算机学院  专 业 Major:   软件工程   学生姓名 Student Name:                     学 号 Student No.:                    指导教师(职称) Superviso

关于身份认证、角色认证和权限认证的shiro-web例子

shiro是Java的一个安全框架,其中认证.授权也是其核心知识.下面以一个maven构建的运用shiro框架的Web项目示例进行 分析和讲解,来理解shiro关于身份认证.和角色认证及权限认证的处理过程. 一.shiro集成web项目需配置的地方 说明:在进行如下配置之前,需建立maven管理的web项目(参考创建maven管理的web项目).这里不再赘述. 1.pom.xml文件添加shiro依赖的jar包 2.web.xml配置添加 初始化shiro环境配置 3.shiro.ini配置 二

mysql 5.7中的用户权限分配相关解读!

这篇文章主要介绍了MySQL中基本的用户和权限管理方法,包括各个权限所能操作的事务以及操作权限的一些常用命令语句,是MySQL入门学习中的基础知识,需要的朋友可以参考下 一.简介 各大帖子及文章都会讲到数据库的权限按最小权限为原则,这句话本身没有错,但是却是一句空话.因为最小权限,这个东西太抽象,很多时候你并弄不清楚具体他需要哪些权限. 现在很多mysql用着root账户在操作,并不是大家不知道用root权限太大不安全,而是很多人并不知道该给予什么样的权限既安全又能保证正常运行.所以,本文更多的

Web服务器管理系列:13、用户权限分配安全设置

本地策略中的用户权限分配项是一个很重要的设置项: 从网络访问计算机指的是在运行里面通过"\\192.168.1.100"这种形式访问计算机里面的共享资源,这个选项里面的账号建议全部删除,因为我们作为一个Web服务器不需要共享什么文件给别人用. 有些时候我们创建会为某个站点开始一个ftp帐户,这个账户的权限仅限于上传下载某些文件,所以我们需要拒绝他的本地登录权限: 添加需要拒绝本地登录的账户名称: 这样我们在登录系统的时候就不会出现这个账户了. Web服务器管理系列:13.用户权限分配安

SpringBoot(十四):springboot整合shiro-登录认证和权限管理

原文出处: 纯洁的微笑 这篇文章我们来学习如何使用Spring Boot集成Apache Shiro.安全应该是互联网公司的一道生命线,几乎任何的公司都会涉及到这方面的需求.在Java领域一般有Spring Security.Apache Shiro等安全框架,但是由于Spring Security过于庞大和复杂,大多数公司会选择Apache Shiro来使用,这篇文章会先介绍一下Apache Shiro,在结合Spring Boot给出使用案例. Apache Shiro What is Ap

centos7 安装vsftpd安装和配置以及虚拟用户权限分配

系统环境 centos7.3 版本 ftp 根目录 : /data/ftpftp 配置文件目录:/etc/vsftpdftp 虚拟用户权限配置文件目录:/etc/vsftpd/vuser_config 实现目标: 1,匿名用户可以登录,但是不能访问虚拟用户的宿主目录,只能访问共享目录2,虚拟用户对自己的宿主目录有任何权限,且只能在自己宿主目录中操作 1,安装vsftpd和db_load加密工具 1 2 3 4 5 6 #要关闭selinux 和防火墙或者开启允许的端口,不然访问会有问题 sed

RBAC权限分配

RABC:基于角色的权限访问控制(Role-Based Access Control) 一般在登录系统认证通过后,会先确定的该用户的操作权限,判断用户的后续操作是否合法! RABC至少需要三张表:用户表--角色表--权限表(多对多的关系比较合理) 用户表:用来存储用户名和密码,进行登录校验,可以重写User表,使用django内置的auth认证系统,也可自定义: 角色表:对用户角色进行分配, 权限表:存储所有需要进行权限分配的url请求路径 RBAC权限分配操作过程: 用户登录,通过用户表校验用

shiro实现APP、web统一登录认证和权限管理

先说下背景,项目包含一个管理系统(web)和门户网站(web),还有一个手机APP(包括Android和IOS),三个系统共用一个后端,在后端使用shiro进行登录认证和权限控制.好的,那么问题来了web和APP都可以用shiro认证吗?两者有什么区别?如果可以,解决方案是什么?看着大家焦急的小眼神,接下来挨个解决上面的问题. web和APP可以用shiro统一登录认证吗? 可以.假如web和APP都使用密码登录的话,那没的说肯定是可以的,因为对于shiro(在此不会介绍shiro详细知识,只介