91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kerberos學習(四)

發布時間:2020-06-21 09:40:39 來源:網絡 閱讀:9772 作者:Slaytanic 欄目:安全技術

Mac下安裝配置Kerberos了解一下。


公司強迫開發人員全部使用mbp,我很不爽,因為mac下面使用mit的kerberos簡直是災難,申請用普通筆記本裝linux也不批。


MacOSX是閉源系統,安裝配置開源的東西都很麻煩。是的,port和brew很方便,但是有些需要的C語言開發頭文件貌似是不軟鏈的,而且源碼編譯還有一堆的依賴要編譯,比如kerberos源碼依賴openssl頭文件,而openssl頭文件也得編譯安裝。當然用sudo硬拷過去也行,但是你知道拷哪些嗎?我是已經煩透了。


這里面有兩說,如果只是單純用kadmin, kinit,當然homebrew就夠了,不過我是要用kerberos頭文件來編譯python的某個kerberos庫,這就討厭了,brew安裝其實是有頭文件源碼的,但是沒有做軟鏈到/usr/local/include,所以編譯的時候是找不到頭文件的。只能手工軟鏈到/usr/local/include

brew install krb5
cd /usr/local/include
ln -sf ../Cellar/krb5/1.16.1/include/* ./
cd /usr/local/lib
ln -sf ../Cellar/krb5/1.16.1/lib/* ./

這是準備開發環境的過程


然后配置,由于沒什么人在mac上做kerberos相關的開發和使用,所以怎么在mac上配置kerberos我是直接科學上網,搜到MIT的官方文檔,MIT Kerberos MAC配置,配置文件與Linux不同,是放置在/User/xianglei/Library/Preferences/edu.mit.Kerberos 里面,搞這么復雜,其實就是人家 linux 的 /etc/krb5.conf 。

[libdefaults]
default_realm = EXAMPLE.COM
dns_lookup_kdc = false
dns_lookup_realm = false
ticket_lifetime = 1296000
renew_lifetime =  2592000
forwardable = true
default_tgs_enctypes = rc4-hmac
default_tkt_enctypes = rc4-hmac
permitted_enctypes = rc4-hmac
udp_preference_limit = 1
kdc_timeout = 3000
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88

[realms]
 EXAMPLE.COM = {
  kdc = 192.168.130.128
  admin_server = 192.168.130.128
  #master_key_type = aes256-cts
  acl_file = /var/kerberos/krb5kdc/kadm5.acl
  dict_file = /usr/share/dict/words
  admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
  supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
  max_renewable_life = 30d
 }

這段是 /User/xianglei/Library/Preferences/edu.mit.Kerberos 的內容,kdc server和 kadmin server的IP地址是我本機的虛機。

kinit
xianglei/admin@EXAMPLE.COM's password: 
Encryption type arcfour-hmac-md5(23) used for authentication is weak and will be deprecated

kinit登錄驗證沒有出現問題,報了一個廢棄警告,rc4-hmac太弱雞了,將會被廢棄。


然而,mac下的 kadmin 登錄出問題了

kadmin
kadmin: kadm5_init_with_password: init_sec_context failed with 851968/-1765328377

只會報這種segment fault,經過科學引擎搜索(百度就別想了,中文我就沒見過幾篇寫Kerberos的。)最后結論是Mac上實現的Kerberos與MIT的Kerberos中間傳輸數據的協議格式不一致導致的。解決方法是這樣。用kinit -S參數直接從kdc獲取ticket,替代使用krbtgt/EXAMPLE.COM的中間方式。

kinit -S kadmin/admin xianglei/admin@EXAMPLE.COM
xianglei/admin@EXAMPLE.COM's password: 
Encryption type arcfour-hmac-md5(23) used for authentication is weak and will be deprecated
kadmin
kadmin> ?
stash, kstash
	stash
dump
	dump [dump-file]
od-dump
	od-dump [dump-file]
init
	init realm...
load
	load file
merge
	merge file
add, ank, add_new_key
	add principal...
passwd, cpw, change_password
	passwd principal...
delete, del, del_entry
	delete principal...
del_enctype
	del_enctype principal enctype...
add_enctype
	add_enctype principal enctype...
ext_keytab
	ext_keytab principal...
get, get_entry
	get principal...
rename
	rename from to
modify
	modify principal
privileges, privs
	privileges
list
	list principal...
verify-password-quality, pwq
	verify-password-quality principal password
check
	check [realm]
lock
	lock 
unlock
	unlock 
help, ?
	help [command]
exit, quit
	exit

然后直接可以進kadmin了,相當于直接用kadmin.local方式。


然后聊一下在Mac下做Kerberos相關C語言開發。起因是因為甲方爸爸購買的Cloudera 企業版快到期了,爸爸說:兒子你技術實力這么強,加上中美貿易戰,爸爸兜里沒錢買不起CDH企業版了,兒子要不你自己先維護吧。我們乙方兒子能說啥,咬咬牙,好吧。

不過爸爸那邊的企業版里面有Kerberos,到期以后維護Hadoop倒還沒啥,Kerberos keytab管理和分發功能企業版到期就不能用了,所以得盡快開發一套Kerberos的管理替代原來Cloudera Manager的這個功能。所以我打算用Python寫了一個界面來自動化創建管理所有Hadoop相關的Keytab,但是Python雖然有不少kerberos的使用庫,卻沒有admin管理的的庫,最后終于找到了一個 PyPI 上的包,結果bug太多,好幾年前發布的,也不維護了,編譯各種報錯,7裝不了,ubuntu裝不了。只好先用調用命令行的方式對付著,昨天有空把admin的C代碼好好閱讀修改了一下,重新發布了一個包。所以昨天就用到了Kerberos的C開發,所以我才吐槽Mac垃圾,啥源碼都沒有,然后還他媽不兼容MIT。gcc還得單裝,默認是clang。


好吧,前面已經把brew安裝的動態庫和include頭文件做了軟鏈到/usr/local/lib和/usr/local/include了,然后修改過的源碼直接就可以編譯了,但是由于調取Mac本身的動態庫,所以管理員認證協議仍然不一樣,所以在Mac下雖然可以編譯通過,但使用時仍然會報Segment Fault,不過unbuntu,centos7等等其他linux發行版下的編譯算是修好了。


對我這種碼農來說,最好的開發環境不是Mac,也不是Windows,就給一破筆記本,裝個ubuntu或者arch就太好了,軟件開發得保證POSIX可移植性和兼容性啊。對于隨便升級個什么系統補丁都能宕機的服務,我表示強烈鄙視。


擴展功能并修復bug后開源的 python-kadmV 代碼放在github上面,相比于幾年前發布的原版,除了修復了不少編譯error,還增加了 principal 改名的功能和創建 keytab 的功能,完全使用C語言編寫的Python包,使用kerberos原生庫編譯安裝,再也無需subprocess調用命令行了。


我自己覺得改完了,相對原版功能還是比較強大的,可以直接在python里addprinc, delprinc, listprincs, renprinc, ktadd, 對于principal可以get和set各種屬性,比如重置密碼,設置隨機密碼,設置過期時間等等,基本跟直接用kadmin命令行差不多了。我原來封裝的調用命令行的kadmin類已經完全用這個包替代了,毫無壓力。


同時也發布在了pypi上,需要的小朋友可以直接 

pip install python-kadmv


不過這篇博客里的經驗可能除了python庫,對于絕大多數人可能沒什么用。絕大多數人都不會用到kerberos,甚至更不會去基于kerberos做開發,甚至更不會在Mac上做Kerberos開發。



Fuck Apple

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

万年县| 那坡县| 陕西省| 万全县| 临沂市| 罗平县| 梁平县| 武定县| 巴东县| 雷州市| 邵东县| 进贤县| 乌兰浩特市| 康保县| 东莞市| 壶关县| 三亚市| 松阳县| 万宁市| 镶黄旗| 鄢陵县| 临西县| 砀山县| 汉源县| 乌鲁木齐市| 弋阳县| 明光市| 肥城市| 兰考县| 沂水县| 邵东县| 封开县| 南安市| 靖安县| 大安市| 福鼎市| 嘉善县| 静安区| 呼伦贝尔市| 布尔津县| 汶川县|