❶ 有人用python寫過ldap的登錄和修改密碼嗎
你說的是AD域賬號吧?先安裝lpda3的庫
在cmd命令行下運行:
pin install ldap3
然後開始寫python腳本
fromldap3import*
user="CN=visitor02 ,OU=level1,DC=hello,DC=com,DC=cn" # 定義你要給誰改密碼
admin='xxxxxx' #xxxx換成你域控的管理員賬號如helloadministrator, hello是域名
adminpwd = 'xxxx' #域控的管理員密碼
s=Server('10.10.xx.xx',get_info=ALL,use_ssl=True) #10.10.xx.xx換成你域控的IP地址,這條是定義域伺服器信息
c=Connection(s,user=admin,password=adminpwd,auto_bind=True) #登錄域伺服器
print(c.extend.microsoft.modify_password(user,"123456")) #這行就是改密碼。如果print出true,就是成功了。如果false,再在下面加一條
print(c.response) #會顯示為什麼失敗。
如果想了解更多的python ldap3庫,可以看這個鏈接網頁鏈接
❷ python+ldap操作
from ldap3 import Server, Connection, ALL, MODIFY_ADD, MODIFY_REPLACE, MODIFY_DELETE
class Connect_ldap:
def __init__(self): #初始化
self.server ='10.10.10.10' #ldap伺服器地址
self.user ='cn=Directory Manager' # Bind DN or user
self.base_dn ='dc=bizenit,dc=com' #base_dn
self.pwd ='XXXXXXX' #密碼
self.port =5389 #埠
def connect(self): #連接ldap服務
纖敏 server = Server(host=self.server, port=self.port, get_info=ALL)
conn = Connection(server=server, user=self.user, password=self.pwd, auto_bind=True)
return conn
def add_user(self): #添脊豎裂加條目
i =1
j =17300000001
conn =self.connect()
while i <220000:
mail =str(j) +"@mail.com"
print(conn.add("uid=username%s,ou=Internal,ou=People,dc=bizenit,dc=com" % (i),
object_class=['top', 'inetOrgPerson', 'person', 'organizationalPerson',
'smart-extends', 'customized-extends'], #類型
attributes={'cn':"username%s" % (i), 'smart-type':"E1",
'departmentNumber':"D1155073", 'mobile': j,
櫻閉 'smart-status':1, 'mail': mail, 'telephoneNumber': j,
'userPassword':"smart123"})) #屬性
i +=1
j +=1
def delete_user(self): #刪除條目
i =1
conn =self.connect()
while i <220000:
print(conn.delete("uid=username%s,ou=Internal,ou=People,dc=bizenit,dc=com" % (i)))
i +=1
def modify_user(self): #修改條目
i =793123
j =17300793123
conn =self.connect()
while i <1000000:
conn.modify("uid=username%s,ou=Internal,ou=People,dc=bizenit,dc=com" % (i),
{"objectClass": [(MODIFY_ADD, ['customized-extends', 'smart-extends'])]})
mail =str(j) +"@mail.com"
a = conn.modify("uid=sidl%s,ou=Internal,ou=People,dc=bizenit,dc=com" % (i),
{"departmentNumber": [(MODIFY_ADD, ['D1155073'])], "smart-type": [(MODIFY_ADD, ["E1"])],
"telephoneNumber": [(MODIFY_ADD, [j])], "userPassword": [(MODIFY_ADD, ["smart123"])],
"smart-status": [(MODIFY_ADD, [1])], "mail": [(MODIFY_ADD, [mail])]})
print(a)
print(i)
i +=1
j +=1
def modify_dn_user(self): #移動條目
i =1
j =17300000001
conn =self.connect()
print(conn.modify_dn("uid=username%s,ou=People,dc=bizenit,dc=com" % (i), 'uid=username%s' % (i),
new_superior="ou=Internal,ou=People,dc=bizenit,dc=com"))
i +=1
j +=1
if __name__ =="__main__":
a = Connect_ldap()
a.add_user()
❸ 有大拿在Django中用過LDAP來管理用戶嗎
使用環境:
python 2.7
django 1.3
python-ldap-2.4.3
django-auth-ldap-1.0.12
settings.py:
import ldap
from django_auth_ldap.config import LDAPSearch,PosixGroupType
AUTH_LDAP_SERVER_URI = 'ldap://*.*.*.*:389' #伺服器URI
AUTH_LDAP_BIND_DN = "桐唯cn=admin,dc=qfei,dc=com"
AUTH_LDAP_BIND_PASSWORD = "123456"
AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=staff,dc=qfei,dc=com", #查詢用戶
ldap.SCOPE_SUBTREE, "(uid=%(user)s)")
AUTH_LDAP_GROUP_SEARCH = LDAPSearch("ou=staff,dc=qfei,dc=com", #查找組
ldap.SCOPE_SUBTREE, "(objectClass=posixGroup)"
)
AUTH_LDAP_GROUP_TYPE = PosixGroupType(name_attr="cn")
AUTH_LDAP_USER_FLAGS_BY_GROUP = {
"is_staff": "cn=tech,ou=Tech,ou=Staff,dc=qfei,dc=com",
"is_active": "cn=tech,ou=Tech,ou=Staff,dc=qfei,dc=com",
"is_superuser": "cn=tech,ou=Tech,ou=Staff,dc=qfei,dc=com", #驗證 Django 的 User 的is_staff,is_active,is_superuser
}
AUTH_LDAP_USER_ATTR_MAP = { #把LDAP中用戶條目的屬性 映射到 Django 的User
"username":"uid",
"password":"userPassword",
"first_name": "givenName",
"last_name": "sn",
"email":"mail",
}
AUTH_LDAP_MIRROR_GROUPS=True #注意 此為重點:當這個值為 True, LDAP的用戶條目映射並創建 Django User 的時候,會自動映創建Group
AUTH_LDAP_ALWAYS_UPDATE_USER = True #是否每次都從LDAP 把用戶信息槐亮 更新到 Django 的User
AUTH_LDAP_FIND_GROUP_PERMS = True #如果為True, LDAPBackend將提供基於LDAP組身份驗證的用戶屬局明培於的組的許可權
AUTH_LDAP_CACHE_GROUPS = True #如果為True,LDAP組成員將使用Django的緩存框架。
AUTH_LDAP_GROUP_CACHE_TIMEOUT = 1800 #緩存時長
AUTHENTICATION_BACKENDS=( #設置使用 LDAPBackend
"django_auth_ldap.backend.LDAPBackend",
"django.contrib.auth.backends.ModelBackend",
)
註:
1,需要創建 django 的 User Group 表
2,當LDAP條目 同步至 django User,Group 後,同關系型資料庫一樣 操作 數據即可
不足:暫時 未實現 django 表 至LDAP 的數據雙向同步
❹ python egg怎麼安裝
一 setuptools 和easy_install
setuptools:setuptools 是一組由PEAK(Python Enterprise Application Kit)開發的
Python 的 distutils 工具的增強工具,可以讓程序員更方便的創建和發布
Python的egg 包,特別是那些對其它包具有依賴性的狀況。 由 setuptools 創建和發布的包看起來和基於 distutils
發布的包沒什麼不同。最終用戶不需要事先安裝 setuptools 甚至根本不需要知道 setuptools 的存在,而程序員也不需要附上完整的
setuptools,只需要包含一個大小約 8K 的ez_setup.py腳本作為啟動模塊,就可以在最終用戶沒有安裝適當版本的
setuptools 時讓這些包自動下載和安裝 setuptools。
easy_install:
常使用python的人員,當需要安裝第三方python包時,可能會用到easy_install命令。easy_install是由
PEAK(Python Enterprise Application Kit)開發的setuptools包里帶的一個命令,它用來自動地從http://pypi.python.org/simple/來安裝egg包,相當於perl中的cpan或PPM。
二 windows上安裝setuptool
方法1: exe安裝文件 從這里下載:setuptools-0.6c11.win32-py2.6.exe 安裝文件
如果以前曾經安裝舊版的setuptools,則在安裝之前需要將系統中的site-packages目錄(以及任何其他sys.path目錄)下的所有setuptools*.egg和setuptools.pth文件刪除。
如果之前也是使用.exe安裝程序安裝的setuptools,則安裝前要在「添加/刪除程序」中卸載舊的版本。
安裝完畢後,在Python的Scripts子目錄下就會出現easy_install.exe程序。 確保將這個目錄(例如 C:\Python26\Scripts)加入 PATH 環境變數。
方法2: 手工安裝
卸載舊版的方法同 1 相同。
下載ez_setup.py腳本, http://peak.telecommunity.com/dist/ez_setup.py 然後在命令行運行: python ez_setup.py
三 linux上的setuptool的安裝
Debian/Ubuntu下可以直接使用apt安裝::
$ sudo apt-get install python-setuptools
手工安裝的話,有兩種方式:
通過引導程序 ez_setup.py 來安裝。這個引導程序會聯網下載最新版本setuptools來安裝,同時也可以更新本地的setuptools。
$ wget http://peak.telecommunity.com/dist/ez_setup.py
$ sudo python ez_setup.py
更新setuptools::
$ sudo python ez_setup.py -U setuptools
或者下載setuptools的egg包來安裝。可以在 這里 查看最新版本下載。下載完畢以後通過sh安裝。
$ wget http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg
$ sudo sh setuptools-0.6c11-py2.6.egg
四 easy_install的使用
1) 使用easy_install來自動安裝egg包
比如說要安裝Python的MYSQL支持,可以執行如下命令,系統會自動在pypi網站列表裡查找相關軟體包:easy_install MySQL-python。
通過easy_install安裝軟體,相關安裝信息會保存到easy-install.pth文件里,路徑類似如下形式:C:\Python25\Lib\site-packages\easy-install.pth。
如果想刪除通過easy_install安裝的軟體包,比如說:MySQL-python,可以執行命令:easy_install -m MySQL-python。
2)將egg安裝包下載到本地安裝
進入到安裝包的目錄,執行python setup.py install
3)如果easy_install安裝某模塊有錯的話,則可以自己到http://pypi.python.org/simple/python-ldap/下載,然後使用python setup.py install來安裝。
有的時候easy_install並不能夠很好地自動安裝,比如我安裝ldap:easy_install.exe python-ldap, easy_install應該到http://pypi.python.org/simple/python-ldap/下下載python-ldap-2.3.8.win32-py2.6.exe,但是easy_install卻找到了python-ldap 2.3.12,最總導致安裝有錯。(不知道是不是因為pypi上沒有64bit的egg,我的系統是64bit的,但是我的python是32bit的啊)
五 egg的製作
egg包是目前最流行的python應用打包部署方式。如何製作和安裝egg包?下面我就簡單的分析了一下。
總是安裝別人的egg包,是不是也想製作自己的egg包呢?好,接下來我們就自己製作一個簡單的egg包。
首先建立工程目錄egg-demo,初始化一個setup.py文件:
$ mkdir egg-demo
$ cd egg-demo
$ touch setup.py
$ ls
setup.py
下面主要就是填充setup.py。setup.py其實是python工具包distutils的配置文件,setuptools就是基於
distutils來做的。
在setup.py中通過setup函數來配置打包信息。首先要引入setuptools的函數setup。setuptools的setup其實就是
distutils的setup函數,填寫setup.py為以下內容:
$ cat setup.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from setuptools import setup
setup()
寫到這里,一個空的egg配置文件就寫好了。我們可以使用下面命令生成egg包:
$ python setup.py bdist_egg
下面看看究竟生成了什麼:
$ ls -F
build/ dist/ setup.py UNKNOWN.egg-info/
可以看到多了三個文件夾。而在dist文件夾下,有一個egg文件:UNKNOWN-0.0.0-py2.6.egg。
產蛋成功!先看看這個egg文件是什麼格式的:
$ file dist/UNKNOWN-0.0.0-py2.6.egg
dist/UNKNOWN-0.0.0-py2.6.egg: Zip archive data, at least v2.0 to extract
噢,原來就是一個zip壓縮包呀!好,再來看看內部構造:
$ unzip -l dist/UNKNOWN-0.0.0-py2.6.egg
Archive: dist/KNOWN-0.0.0-py2.6.egg
Length Date Time Name
--------- ---------- ----- ----
120 2010-12-06 17:04 EGG-INFO/SOURCES.txt
1 2010-12-06 17:04 EGG-INFO/top_level.txt
1 2010-12-06 17:04 EGG-INFO/zip-safe
1 2010-12-06 17:04 EGG-INFO/dependency_links.txt
227 2010-12-06 17:04 EGG-INFO/PKG-INFO
--------- -------
350 5 files
只有一個EGG-INFO文件夾,內含五個egg信息文件,沒了。
這個egg名稱未知,版本0.0.0。這是因為我們在setup里什麼也沒有設置。
顯然,這個egg什麼也不能做。
下面給它加點料。
在setup.py中,setup函數接收一系列屬性作為配置參數。
name name是egg包的名稱,也是尋找要打包的文件夾的名稱,默認是UNKNOWN。
version 版本號,默認0.0.0
packages 這里要用到setuptools的另一個函數find_packages,顧名思義,find_packages用來將指定目錄下的文件打包。
zip_safe 默認是False,這樣在每次生成egg包時都會檢查項目文件的內容,確保無誤。
還有一些描述性的屬性,如description,long_description,author,author_email,license,keywords,platform,url等。
填充setup.py文件如下::
$ cat setup.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from setuptools import setup, find_packages
setup(
name = "demo",
version="0.1.0",
packages = find_packages(),
zip_safe = False,
description = "egg test demo.",
long_description = "egg test demo, haha.",
author = "amoblin",
author_email = "[email protected]",
license = "GPL",
keywords = ("test", "egg"),
platforms = "Independant",
url = "",
)
在egg-demo目錄下建立和上述name名稱相同的目錄demo,demo目錄下寫__init__.py文件:
$ mkdir demo
$ cat demo/__init__.py
#!/usr/bin/env python
#-*- coding:utf-8 -*-
def test():
print "Hello, I'm amoblin."
if __name__ == '__main__':
test()
再次生成egg包以後查看egg包信息:
$ python setup.py bdist_egg
$ unzip -l dist/demo-0.1.0-py2.6.egg
Archive: dist/demo-0.1.0-py2.6.egg
Length Date Time Name
--------- ---------- ----- ----
121 2010-12-06 17:30 demo/__init__.py
344 2010-12-06 17:46 demo/__init__.pyc
137 2010-12-06 17:46 EGG-INFO/SOURCES.txt
5 2010-12-06 17:46 EGG-INFO/top_level.txt
1 2010-12-06 17:46 EGG-INFO/zip-safe
1 2010-12-06 17:46 EGG-INFO/dependency_links.txt
227 2010-12-06 17:46 EGG-INFO/PKG-INFO
--------- -------
836 7 files
可以看到,多了一個文件夾demo,裡面有我們寫的__init__.py。
奉行敏捷原則,先安裝了體驗一下再說:
$ sudo python setup.py install
running install
install_dir /usr/local/lib/python2.6/dist-packages/
...
creating /usr/local/lib/python2.6/dist-packages/demo-0.1.0-py2.6.egg
Extracting demo-0.1.0-py2.6.egg to /usr/local/lib/python2.6/dist-packages
demo 0.1.0 is already the active version in easy-install.pth
Installed /usr/local/lib/python2.6/dist-packages/demo-0.1.0-py2.6.egg
Processing dependencies for demo==0.1.0
Finished processing dependencies for demo==0.1.0
OK!安裝完畢!接下來我們就可以直接通過import來使用啦!
$ python -c "from demo import test;test()"
Hello, I'm amoblin.
成功輸出!這說明安裝正確。我們的一個egg包誕生了。
一般情況下,我們的源程序都放在src目錄下,所以接下來將demo文件夾移動到src里。但這樣也要修改setup.py文件,修改find_packages函數中參數為』src』,同時增加package_dir參數:
packages=find_packages('src'),
package_dir = {'':'src'}
這樣告訴setuptools在src目錄下找包,而不是原來默認的工程根目錄。
最後我們來手動的卸載以下剛才安裝的egg文件,以python2.6版本為例,egg文件一般安裝在/usr/local/lib
/python2.6/dist-packages/目錄下,該目錄下還有一個easy-install.pth文件,用於存放安裝的egg信息。:
$ cd /usr/local/lib/python2.6/dist-packages
$ cat easy-install.pth|grep demo
./demo-0.1.0-py2.6.egg
$ ls -F|grep demo
demo-0.1.0-py2.6.egg/
卸載egg文件很簡單,首先將包含此egg的行從easy-install.pth中刪除,然後刪除egg文件夾即可。
❺ 如何安裝python-ldap
首先需要安裝python-ldap的模塊
在這里用的是windows系統,當然比較容易
安裝後在python 的交互環境里輸入import ldap 如果沒有問題就說明安裝成功了。
❻ python查詢AD域信息的方法總結
很多公司都在使用AD域來管理用戶及組織架構,我們可以使用Python來進行自動化運維。網上很多資料不全而且都很古老,特地根據最近的代碼編寫經歷,編寫了如下通過python查詢AD域信息方法總結:
環境:
原理匯總 :
通過LDAP協議來連接及訪問AD域服務,可以把AD域理解成某種類型資料庫,我們通過AD賬號和密碼來訪問其中存儲資料庫欄位信息。為了更好地了解其中欄位及含義,建議下載一個ADExplorer.exe綠色工具軟體,直接去微軟官網下載免費的綠色軟體,以下是下載鏈接(查看左邊的菜單Networking Utilities中包含的Active Directory Explorer):
https://docs.microsoft.com/en-us/sysinternals/
通過這個軟體,我們可以很方便地查看各種欄位信息,為後面的連接獲取足夠的前提信息 。
#建立和關閉域連接
以上代碼把連接和關閉連接分開,是為了避免在一個程序中需要頻繁調用連接時,避免經常關閉,可以節省大量的資源和時間,可以在程序開頭建立連接,在程序退出時才關閉即可
#模糊查詢組信息
#模糊查詢域中的workstation信息
查詢到所需信息以後,還可以直接調用pandas,保存為excel文件
❼ 如何執行python第三方包windows exe格式
python第三方包的windows安裝文件exe格式, 這上面有很多python第三方包的二進制安裝文件,包括32位和64位的。下載安裝就ok了!
這下面有很多python第三方包的二進制安裝文件,包括32位和64位的。下載安裝就ok了!
包括了mysqldb,ldap等。
Index by date:
fiona
scikit-image
netcdf4
mercurial
scikits.audiolab
numba
llvmpy
python-igraph
rpy2
numpy
opencv
zope.interface
sfepy
quantlib
gdal
imread
django
psychopy
cx_freeze
msgpack
regex
cellcognition
vigra
scikit-learn
pytables
h5py
blender-mathutils
htseq
bioformats
simplejson
pyzmq
mako
simpleitk
qimage2ndarray
ujson
vlfd
libsvm
liblinear
cgkit
scipy
distribute
noise
theano
pyalembic
openimageio
pyaudio
pymca
pyamg
pgmagick
lxml
steps
sqlalchemy
cffi
biopython
python-ldap
pycurl
nipy
nibabel
pygments
mahotas
py-postgresql
pyamf
planar
holopy
pyvisa
jcc
polymode
polygon
cython
pyropes
llist
shapely
vtk
pymongo
libpython
meshpy
pandas
umysql
epydoc
coverage
cheetah
pyrxp
pybluez
pythonmagick
bsdiff4
pymssql
pymol
boost.python
orange
requests
pywcs
python-sundials
pymix
pyminuit
pylzma
pyicu
assimulo
basemap
pygraphviz
pyproj
mpi4py
spyder
pytz
pyfits
mysql-python
pygame
pycparser
twisted
pil
qutip
openexr
nipype
python-snappy
visvis
docutils
pyhdf
pyqwt
kivy
scikits.umfpack
psycopg
ets
guiqwt
veusz
pyqt
pyside
dpmix
py-fcm
scikits.hydroclimpy
smc.freeimage
scipy-stack
ipython
nose
mxbase
numexpr
pyyaml
ode
virtualenv
aspell_python
tornado
pywavelets
bottleneck
networkx
statsmodels
pylibdeconv
pyhook
lmfit
slycot
ndimage
scikits.scattpy
cvxopt
pymc
pysparse
scikits.odes
matplotlib
vpython
pycuda
pyopencl
pymvpa
pythonnet
cld
mod_wsgi
nltk
python-levenshtein
rtree
pywin32
scientificpython
sympy
thrift
pyopengl-accelerate
mdp
pyopengl
gmpy
reportlab
natgrid
scikits.vectorplot
pyreadline
milk
blosc
pycogent
pip
gevent
scons
carray
python-dateutil
jinja2
markupsafe
jsonlib
pysfml
fonttools
silvercity
console
python-cjson
pycluster
cdecimal
pytst
autopy
sendkeys
ceodbc
fipy
psutil
pyephem
pycifrw
blist
line_profiler
pydbg
bitarray
pyglet
python-lzo
faulthandler
delny
pyexiv2
ilastik
twainmole
scitools
pyspharm
casuarius
pyodbc
greenlet
nitime
pylibtiff
mmtk
pycairo
pysqlite
curses
videocapture
bazaar
nlopt
trfit
libsbml
oursql
sphinx
cellprofiler
py2exe
re2
liblas
cgal-python
pymedia
ffnet
pyfftw
libxml-python
pyfltk
pymex
pymatlab
zodb3
mmlib
pygtk
pyserial
babel
scikits.ann
scikits.delaunay
numeric
pulp
nmoldyn
pymutt
iocbio
jpype
wxpython
pybox2d
dipy
mmseg
pynifti
scikits.samplerate
scikits.timeseries
vitables
quickfix
❽ Linux下的LDAP
作者簡介 Atif Ghaffar 就像只穗鉛悄變色龍 他經常變換角色 從系統管理員到程序員 再到教師 項目管理員 直至任何可以完成工作的角色 有時候 當他在電影院看電影的同時 他也喜歡拿出筆記本電腦編寫程序 Atif始終堅信 他是屬於linux和開放源碼社團的 關於Atif的更多信息 可以訪問他的主頁~aghaffar 摘要 本文將討論LDAP以及在我們所喜愛的操作系統——linux上實現LDAP 已經有很多關於LDAP的文獻 所以我不想在這里再重復什麼 我不準備討論高級的LDAP概念 計劃以及第二版和第三版LDAP的區別等等 事實上 我對這類問題也所知不多 相反地 我將嘗試用簡單明了的語言解釋什麼是LDAP 它能給我們帶來的好處以及我們如何使用它 我不是一個LDAP專家 我只是一個LDAP的初學者 本文介紹的是我用LDAP做了些什麼以及如何做 我不會使你再像以前的我一樣感到迷惑 問題 既然你是個LDAP初學者 為什麼還要寫一篇關於LDAP的文章? 最近我在一個項目上需要一位同事的幫助 這個項目的基礎就是LDAP 我的同事可以在perl 郵件伺服器等等方面幫助我 但是他對LDAP一無所知 事實是每一次他想要深入學習LDAP 反而會對LDAP越來越迷惑 因為該項目的基礎是LDAP 所以我給了這位同事半小時來學習LDAP 結果是一切反而變得清晰明了了 原因很簡單 LDAP是在前端的 只需要集中一點點注意力或者一些生動的例子就可以了 在本文中我也正想這樣做 你可以在文中發現好多對學習LDAP有用的url LDAP是什麼? LDAP是輕量目錄訪問協議(Ligheight Directory Access Protocol)的縮寫 其實是一種目錄服務 類似於我們在文件系統中所使用的目錄 類似於我們查詢電話號碼使用的電話號碼簿 類似於我們所使用諸如NIS(Neork Information Service) DNS (Domain Name Service)等網路目錄 也類似於你在花園中所看到的樹木 LDAP是一種特殊的資料庫 但是LDAP和一般的資料庫不同 明白這一點是很重要的 LDAP對查詢進行了優化 與寫性能相比LDAP的讀性能要優秀很多 一般地 目錄服務提供什麼樣的服務呢? 通常是根據查詢的標准返回一定的信息 實例 文件系統目錄 ls /etc 返回/etc目錄下所有的文件和子目錄 ls /etc/p* 返回/etc下所有以p開頭的文件和子目錄 find /usr/local/apache name l 這將在 /usr/local/apache 目錄下搜索名為l的文件/子目錄 NIS目錄 ypcat passwd 這將從NIS資料庫返回用戶名 密碼 用戶id等信息 ypmatch atif passwd 返回用戶atif的密碼 DNS目錄 nslookup 返回的ip地址 nslookup type MX 返回主機名符合的MX記錄信息 LDAP目錄 (我們將在下面詳細闡述) ldapsearch uid=aghaffar 返回關於用戶aghaffar的所有公開信息 這和find / uid aghaffar unix命令很類似 ldapsearch uid=aghaffar mail 返回用戶ughaffar的郵件信息 目錄基礎或根 在上面我們所提到的任何一種目錄服務中都有一個我們開始瀏覽或搜索的開始點 這個開始點就是通常所謂的根 這和一棵數的根也很類似 每棵都有一個根 以及很激喊多的樹枝樹葉 猜渣* 文件系統的根是 / * NIS 的根是域名 比如 * DNS 根是Internic(譯者注 Internet網路信息中心 Internet的管理組織) * LDAP同樣有一個可定義的根 比如 o= 這里o表示組織 每個根都可以衍生出好多枝葉(正如同你鄰居的花園中的樹木一樣) 對於文件系統來說 它的枝葉就是一個個文件及子目錄 每一個枝葉都有一些屬性 比如文件系統的枝葉(文件及子目錄)有以下的屬性 * 名稱 * 修改時間 * 所有者 * 組(譯者注 所有者所在的組) * 等等 下圖顯示了一個文件系統目錄 屬性由unix命令ls ld /usr得到 下面是一個LDAP目錄的圖示 我們將在下面討論這張圖 區分名(DN Distinguished Name) 和自然界中的樹不同 文件系統/LDAP/電話號碼簿目錄的每一片枝葉都至少有一個獨一無二的屬性 這一屬性可以幫助我們來區別這些枝葉 在文件系統中 這些獨一無二的屬性就是帶有完整路徑的文件名 比如/etc/passwd 該文件名在該路徑下是獨一無二的 當然我們可以有/usr/passwd /opt/passwd 但是根據它們的完整路徑 它們仍然是唯一的 類似於DNS系統的FQDN正式域名 FQDN也是唯一的 在LDAP中 一個條目的區分名稱叫做 dn 或者叫做區分名 在一個目錄中這個名稱總是唯一的 比如 我的dn是 uid=aghaffar ou=People o=developer ch 不可能有相同的dn 但是我們可以有諸如 uid=aghaffar ou=Administrators o=developer ch 的dn 這同上面文件系統中/etc/passwd 和 /usr/passwd的例子很類似 我們有獨一無二的屬性 在 ou=Administrators o=developer ch 中uid和在 ou=People o=developer ch 中的uid 這並不矛盾 LDAP伺服器 現在市場上有很多LDAP伺服器 大多數都可以在linux上運行 本文將介紹openLDAP的使用 我為什麼選擇openLDAP? 為什麼你應該選擇openLDAP? * openLDAP是開放源碼的 openLDAP的官方網站是 你可以下載其源代碼包自己編譯 或者看看你的linux發行版是否已經包含了該軟體包 如果已經包含了就可以安裝預先編譯好的版本從而少花費些力氣 我已經成功地在SuSE x 和 RedHat x上測試過openLDAP 構建LDAP目錄 下面我們將介紹設置一個LDAP伺服器的步驟 步驟 * 下載並安裝openLDAP * 配置 LDAP server * 配置本地環境指向LDAP 安裝 * 初始化LDAP 資料庫 * 查詢 LDAP * 添加/修改 LDAP 條目 下載並安裝openLDAP 正如前面所提到的 可以從下載源代碼包並根據它的相關文檔進行安裝 或者安裝預先編譯好的包(包的安裝或如何編譯應用程序已經超出了本文討論的范疇) 配置LDAP伺服器 在我們的例子中 我將為構建LDAP伺服器 你可以用你喜歡的編輯器編輯nf和f配置文件來更改名稱等參數以適應你的具體需求 在我的伺服器上配置文件在/etc/openldap目錄下 你的配置文件可能在/usr/local/etc/openldap或者別的地方 這要根據你的linux發行版本或者編譯openldap的具體情況而定 ######### /etc/openldap/nf ################################### # 下面的部分是我的suse linux 發行版本預先定義的 # 我們設置的部分在本文的第二和第三部分 include /etc/openldap/nf include /etc/openldap/nf schemacheck off pidfile /var/run/slapd pid argsfile /var/run/slapd args ####################################################################### # ldbm database definitions ####################################################################### # 定義使用的資料庫類型 預設是ldbm database ldbm # 後綴或者根 這是你LDAP目錄的頂節點 suffix o= # LDAP的dbs 保存的位置 directory /var/lib/ldap # 目錄管理員的區分名 rootdn cn=Manager o= # 保存ldap目錄管理員的明文密碼是很糟糕的 但是我們將在剛剛開始使用ldap時這樣做 rootpw secret # 這就是所有的一切 編輯你的 /etc/openldap/nf配置文件 該文件位於ldap客戶端(我們將使用同一計算機作為伺服器和客戶端 當然這可以在同一計算機或不同的計算機上) 通常諸如ldapdelete ldapadd等等的ldap客戶端會讀該文件的內容 ##########/etc/openldap/nf######### # LDAP 的預設設置 # # 查看 nf( ) 可以獲取更多的信息 # 本文件應該設置為對所有人可讀 # 定義ldap伺服器 可以用主機名或ip地址 host # 定義我們要查詢的目錄的根 # 我們將要使用的頂節點 這不一定是目錄的根 比如我們可以使用 # base = ou=users o=linuxfocus ch # 這時我們的一切查詢都將從樹根o=的分支開始 現在啟動ldap伺服器 如果你使用SuSE預先編譯好的openldap伺服器 你可以通過下面的命令啟動ldap服務 /etc/rc d/ldap start 在RedHat 該命令為 /etc/rc d/init d/ldap start 如果你是使用預設設置自己編譯並安裝的 你可以用/usr/local/libexec/slapd &啟動ldap伺服器 如果沒有使用預設設置 請找到slapd文件並運行它 在新安裝的LDAP伺服器上添加數據 到現在 lishixin/Article/program/Oracle/201311/17322
❾ Nginx 結合Python Ldap認證用於Kibana許可權登陸
默認頁帆納面只寬轎棚能測試,這里需要大概改下才能使用
vim backend-sample-app.py
python backend-sample-app.py &
backend-sample-app.py其慎則中html=``````修改後如下
http://192.168.88.188:5601/