Mac下安裝配置Kerberos了解一下。
站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到貴陽(yáng)網(wǎng)站設(shè)計(jì)與貴陽(yáng)網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋貴陽(yáng)地區(qū)。公司強(qiáng)迫開發(fā)人員全部使用mbp,我很不爽,因?yàn)閙ac下面使用mit的kerberos簡(jiǎn)直是災(zāi)難,申請(qǐng)用普通筆記本裝linux也不批。
MacOSX是閉源系統(tǒng),安裝配置開源的東西都很麻煩。是的,port和brew很方便,但是有些需要的C語(yǔ)言開發(fā)頭文件貌似是不軟鏈的,而且源碼編譯還有一堆的依賴要編譯,比如kerberos源碼依賴openssl頭文件,而openssl頭文件也得編譯安裝。當(dāng)然用sudo硬拷過(guò)去也行,但是你知道拷哪些嗎?我是已經(jīng)煩透了。
這里面有兩說(shuō),如果只是單純用kadmin, kinit,當(dāng)然homebrew就夠了,不過(guò)我是要用kerberos頭文件來(lái)編譯python的某個(gè)kerberos庫(kù),這就討厭了,brew安裝其實(shí)是有頭文件源碼的,但是沒有做軟鏈到/usr/local/include,所以編譯的時(shí)候是找不到頭文件的。只能手工軟鏈到/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/* ./
這是準(zhǔn)備開發(fā)環(huán)境的過(guò)程
然后配置,由于沒什么人在mac上做kerberos相關(guān)的開發(fā)和使用,所以怎么在mac上配置kerberos我是直接科學(xué)上網(wǎng),搜到MIT的官方文檔,MIT Kerberos MAC配置,配置文件與Linux不同,是放置在/User/xianglei/Library/Preferences/edu.mit.Kerberos 里面,搞這么復(fù)雜,其實(shí)就是人家 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 的內(nèi)容,kdc server和 kadmin server的IP地址是我本機(jī)的虛機(jī)。
kinit xianglei/admin@EXAMPLE.COM's password: Encryption type arcfour-hmac-md5(23) used for authentication is weak and will be deprecated
kinit登錄驗(yàn)證沒有出現(xiàn)問(wèn)題,報(bào)了一個(gè)廢棄警告,rc4-hmac太弱雞了,將會(huì)被廢棄。
然而,mac下的 kadmin 登錄出問(wèn)題了
kadmin kadmin: kadm5_init_with_password: init_sec_context failed with 851968/-1765328377
只會(huì)報(bào)這種segment fault,經(jīng)過(guò)科學(xué)引擎搜索(百度就別想了,中文我就沒見過(guò)幾篇寫Kerberos的。)最后結(jié)論是Mac上實(shí)現(xiàn)的Kerberos與MIT的Kerberos中間傳輸數(shù)據(jù)的協(xié)議格式不一致導(dǎo)致的。解決方法是這樣。用kinit -S參數(shù)直接從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
然后直接可以進(jìn)kadmin了,相當(dāng)于直接用kadmin.local方式。
然后聊一下在Mac下做Kerberos相關(guān)C語(yǔ)言開發(fā)。起因是因?yàn)榧追桨职仲?gòu)買的Cloudera 企業(yè)版快到期了,爸爸說(shuō):兒子你技術(shù)實(shí)力這么強(qiáng),加上中美貿(mào)易戰(zhàn),爸爸兜里沒錢買不起CDH企業(yè)版了,兒子要不你自己先維護(hù)吧。我們乙方兒子能說(shuō)啥,咬咬牙,好吧。
不過(guò)爸爸那邊的企業(yè)版里面有Kerberos,到期以后維護(hù)Hadoop倒還沒啥,Kerberos keytab管理和分發(fā)功能企業(yè)版到期就不能用了,所以得盡快開發(fā)一套Kerberos的管理替代原來(lái)Cloudera Manager的這個(gè)功能。所以我打算用Python寫了一個(gè)界面來(lái)自動(dòng)化創(chuàng)建管理所有Hadoop相關(guān)的Keytab,但是Python雖然有不少kerberos的使用庫(kù),卻沒有admin管理的的庫(kù),最后終于找到了一個(gè) PyPI 上的包,結(jié)果bug太多,好幾年前發(fā)布的,也不維護(hù)了,編譯各種報(bào)錯(cuò),7裝不了,ubuntu裝不了。只好先用調(diào)用命令行的方式對(duì)付著,昨天有空把a(bǔ)dmin的C代碼好好閱讀修改了一下,重新發(fā)布了一個(gè)包。所以昨天就用到了Kerberos的C開發(fā),所以我才吐槽Mac垃圾,啥源碼都沒有,然后還他媽不兼容MIT。gcc還得單裝,默認(rèn)是clang。
好吧,前面已經(jīng)把brew安裝的動(dòng)態(tài)庫(kù)和include頭文件做了軟鏈到/usr/local/lib和/usr/local/include了,然后修改過(guò)的源碼直接就可以編譯了,但是由于調(diào)取Mac本身的動(dòng)態(tài)庫(kù),所以管理員認(rèn)證協(xié)議仍然不一樣,所以在Mac下雖然可以編譯通過(guò),但使用時(shí)仍然會(huì)報(bào)Segment Fault,不過(guò)unbuntu,centos7等等其他linux發(fā)行版下的編譯算是修好了。
對(duì)我這種碼農(nóng)來(lái)說(shuō),最好的開發(fā)環(huán)境不是Mac,也不是Windows,就給一破筆記本,裝個(gè)ubuntu或者arch就太好了,軟件開發(fā)得保證POSIX可移植性和兼容性啊。對(duì)于隨便升級(jí)個(gè)什么系統(tǒng)補(bǔ)丁都能宕機(jī)的服務(wù),我表示強(qiáng)烈鄙視。
擴(kuò)展功能并修復(fù)bug后開源的 python-kadmV 代碼放在github上面,相比于幾年前發(fā)布的原版,除了修復(fù)了不少編譯error,還增加了 principal 改名的功能和創(chuàng)建 keytab 的功能,完全使用C語(yǔ)言編寫的Python包,使用kerberos原生庫(kù)編譯安裝,再也無(wú)需subprocess調(diào)用命令行了。
我自己覺得改完了,相對(duì)原版功能還是比較強(qiáng)大的,可以直接在python里addprinc, delprinc, listprincs, renprinc, ktadd, 對(duì)于principal可以get和set各種屬性,比如重置密碼,設(shè)置隨機(jī)密碼,設(shè)置過(guò)期時(shí)間等等,基本跟直接用kadmin命令行差不多了。我原來(lái)封裝的調(diào)用命令行的kadmin類已經(jīng)完全用這個(gè)包替代了,毫無(wú)壓力。
同時(shí)也發(fā)布在了pypi上,需要的小朋友可以直接
pip install python-kadmv
不過(guò)這篇博客里的經(jīng)驗(yàn)可能除了python庫(kù),對(duì)于絕大多數(shù)人可能沒什么用。絕大多數(shù)人都不會(huì)用到kerberos,甚至更不會(huì)去基于kerberos做開發(fā),甚至更不會(huì)在Mac上做Kerberos開發(fā)。
Fuck Apple
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
分享題目:Kerberos學(xué)習(xí)(四)-創(chuàng)新互聯(lián)
轉(zhuǎn)載來(lái)源:http://jinyejixie.com/article24/ghsje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站維護(hù)、App開發(fā)、網(wǎng)站導(dǎo)航、網(wǎng)站收錄、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容