Seafile 企业版 LDAP 和 Active Directory 配置
Seafile 企业版 LDAP 和 Active Directory 配置
Seafile 要求 LDAP/AD 服务器中每个用户都有一个唯一的 ID。这个 ID 只能使用邮箱地址格式。一般来说,AD 有两个用户属性可以用作 Seafile 用户的 ID:
- email 地址:一般的机构都会给每个成员分配唯一的 email 地址,所以这是最常见配置。
- UserPrincipalName (UPN):这个 AD 赋予给每个用户的一个唯一 ID。它的格式为
用户登录名@域名
。尽管这个不是真实的 email 地址,但是它也能作为 Seafile 的用户 ID。如果机构的用户没有 email 地址,可以使用这个属性。
与 AD 集成
把下面的配置添加到 ccnet.conf 中。
ccnet.conf 目录 /root/JD-Seafile/Seafile-Server/conf/ccnet.conf
如果你使用 email 地址作为用户唯一 ID:
[LDAP]
HOST = ldap://example.local/ ——设置LDAP服务器的地址URL
BASE = ou=user,dc=example,dc=local ——设置LDAP服务器的组织节点下的所有用户可以访问seafile
USER_DN = admin@example.local ——设置用于查询LDAP服务器中信息的用户DN
PASSWORD = secret ——对应的USER_DN用户密码
LOGIN_ATTR = mail ——登录Seafile的方式,可以使用 mail 或者 userPrincipalName
如果你使用 UserPrincipalName 作为用户 ID:
[LDAP]
HOST = ldap://example.local/
BASE = ou=user,dc=example,dc=local
USER_DN = admin@example.local
PASSWORD = secret
LOGIN_ATTR = userPrincipalName
测试你的 LDAP 配置
使用这个工具之前,请先确定你使用的是专业版而且 Linux 系统中安装了 python-ldap
这个包。
[root@CentOS-7 ~]# yum install python-ldap
安装 python-ldap 工具包
[root@CentOS-7 Seafile-Server]# cd seafile-server-latest/
进入 seafile-server-latest 目录
[root@CentOS-7 seafile-server-latest]# ./pro/pro.py ldapsync --test
运行LDAP配置进行测试
测试脚本会检查 ccnet.conf 里面 [LDAP] 下面的配置。如果一切正常工作,它会打印出搜索的前十个用户。如果出错,它会打印出可能出错的配置信息。
配置 AD 用户同步
在企业版中,你还可以把 AD 中用户的其他信息导入到 Seafile 的内部数据库。这些信息包括:
- 用户的全名,部门等。这些信息可以用户方便地根据人名+部门来查找用户,在共享文件的时候比较有用。
- 用户的 Windows 登录名。导入到数据库之后,用户可以直接使用 Windows 用户名来登录 Seafile。
- 当用户在 AD 中被删除之后(比如离职),Seafile 会自动禁用他的账户。
AD 用户同步配置
把以下配置添加到 ccnet.conf 里:
[LDAP]
......
[LDAP_SYNC]
ENABLE_USER_SYNC =true
DEACTIVE_USER_IF_NOTFOUND =true
SYNC_INTERVAL =60
USER_OBJECT_CLASS = person
ENABLE_EXTRA_USER_INFO_SYNC =true
FIRST_NAME_ATTR = givenName
LAST_NAME_ATTR = sn
USER_NAME_REVERSE =true
DEPT_ATTR = department
UID_ATTR = sAMAccountName
ACTIVATE_USER_WHEN_IMPORT =true
各个选项的含义:
- ENABLE_USER_SYNC: 设置为 true 以启用用户同步功能
- DEACTIVE_USER_IF_NOTFOUND: 设置为 true 以禁用已经在 AD 中删除的用户
- SYNC_INTERVAL: 以分钟为单位的同步间隔。默认为 60 分钟同步一次。
- USER_OBJECT_CLASS: 用户对象的 class 名字。在 AD 中一般是 “person”。默认值也是 “person”。
- ENABLE_EXTRA_USER_INFO_SYNC: 同步用户的额外信息,包括用户的全名,部门,Windows 登录名。
- FIRST_NAME_ATTR: 用户名字对应的属性,默认使用 “givenName” 属性。
- LAST_NAME_ATTR: 用户的姓氏属性。默认使用 “sn” 属性。
- USER_NAME_REVERSE: 中文的人名里面姓氏和名字与西方的习惯相反,所以对中文名字,需要把这个选项设置为 true。
- DEPT_ATTR: 用户的部门属性。默认使用 “department” 属性。
- UID_ATTR: 用户的 Windows 登录名属性。一般使用 “sAMAccountName” 属性。
- ACTIVATE_USER_WHEN_IMPORT: 导入用户之后是否立即激活,默认是 true,即立即激活该用户。
如果你选择了 “userPrincipalName” 作为用户的唯一 ID,Seafile 不能使用这个 ID 作为 email 地址来发送通知邮件给用户。如果你的 AD 中也有用户的 email 地址属性,你可以把这个属性同步到 Seafile 的内部数据库中。配置的选项是:
- CONTACT_EMAIL_ATTR: 一般来说你可以把它设置为 “mail” 属性。
手工执行 AD 同步
在配置完成后,你可以手工执行同步来测试配置是否有效。
cd seafile-server-lastest
./pro/pro.py ldapsync
让 AD 同步不要自动导入新用户到数据库中
在默认情况下,AD 同步会把 AD 中检测到的新用户自动同步到 Seafile 的数据库中。这些新创建的用户会被自动设置为“已激活”。这些用户会被算入 license 用户数量中。
我们考虑以下场景:你在 AD 中有很多用户。但是你不想一次购买足够多的 license 把所有用户一次全部加入 Seafile。此时自动导入新用户的功能就会很容易把你的 license 消耗完毕,导致系统不可用。解决方案是:新用户只有在第一次登录的时候创建,而 AD 同步不会自动创建新用户。我们提供了一个选项来满足这种需求:
[LDAP_SYNC]
IMPORT_NEW_USER =false