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
分别为市场部和财务部技术部
市场部
- 用户
guojing
和huangrong
能访问公共目录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
分别为市场部和财务部技术部
市场部
- 用户对自己的家目录有所有权,其它用户无法访问
- 用户
guojing
和huangrong
能访问公共目录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