PNG  IHDRQgAMA a cHRMz&u0`:pQ<bKGDgmIDATxwUﹻ& ^CX(J I@ "% (** BX +*i"]j(IH{~R)[~>h{}gy)I$Ij .I$I$ʊy@}x.: $I$Ii}VZPC)I$IF ^0ʐJ$I$Q^}{"r=OzI$gRZeC.IOvH eKX $IMpxsk.쒷/&r[޳<v| .I~)@$updYRa$I |M.e JaֶpSYR6j>h%IRز if&uJ)M$I vLi=H;7UJ,],X$I1AҒJ$ XY XzI@GNҥRT)E@;]K*Mw;#5_wOn~\ DC&$(A5 RRFkvIR}l!RytRl;~^ǷJj اy뷦BZJr&ӥ8Pjw~vnv X^(I;4R=P[3]J,]ȏ~:3?[ a&e)`e*P[4]T=Cq6R[ ~ޤrXR Հg(t_HZ-Hg M$ãmL5R uk*`%C-E6/%[t X.{8P9Z.vkXŐKjgKZHg(aK9ڦmKjѺm_ \#$5,)-  61eJ,5m| r'= &ڡd%-]J on Xm|{ RҞe $eڧY XYrԮ-a7RK6h>n$5AVڴi*ֆK)mѦtmr1p| q:흺,)Oi*ֺK)ܬ֦K-5r3>0ԔHjJئEZj,%re~/z%jVMڸmrt)3]J,T K֦OvԒgii*bKiNO~%PW0=dii2tJ9Jݕ{7"I P9JKTbu,%r"6RKU}Ij2HKZXJ,妝 XYrP ެ24c%i^IK|.H,%rb:XRl1X4Pe/`x&P8Pj28Mzsx2r\zRPz4J}yP[g=L) .Q[6RjWgp FIH*-`IMRaK9TXcq*I y[jE>cw%gLRԕiFCj-ďa`#e~I j,%r,)?[gp FI˨mnWX#>mʔ XA DZf9,nKҲzIZXJ,L#kiPz4JZF,I,`61%2s $,VOϚ2/UFJfy7K> X+6 STXIeJILzMfKm LRaK9%|4p9LwJI!`NsiazĔ)%- XMq>pk$-$Q2x#N ؎-QR}ᶦHZډ)J,l#i@yn3LN`;nڔ XuX5pF)m|^0(>BHF9(cզEerJI rg7 4I@z0\JIi䵙RR0s;$s6eJ,`n 䂦0a)S)A 1eJ,堌#635RIgpNHuTH_SԕqVe ` &S)>p;S$魁eKIuX`I4춒o}`m$1":PI<[v9^\pTJjriRŭ P{#{R2,`)e-`mgj~1ϣLKam7&U\j/3mJ,`F;M'䱀 .KR#)yhTq;pcK9(q!w?uRR,n.yw*UXj#\]ɱ(qv2=RqfB#iJmmL<]Y͙#$5 uTU7ӦXR+q,`I}qL'`6Kͷ6r,]0S$- [RKR3oiRE|nӦXR.(i:LDLTJjY%o:)6rxzҒqTJjh㞦I.$YR.ʼnGZ\ֿf:%55 I˼!6dKxm4E"mG_ s? .e*?LRfK9%q#uh$)i3ULRfK9yxm܌bj84$i1U^@Wbm4uJ,ҪA>_Ij?1v32[gLRD96oTaR׿N7%L2 NT,`)7&ƝL*꽙yp_$M2#AS,`)7$rkTA29_Iye"|/0t)$n XT2`YJ;6Jx".e<`$) PI$5V4]29SRI>~=@j]lp2`K9Jaai^" Ԋ29ORI%:XV5]JmN9]H;1UC39NI%Xe78t)a;Oi Ҙ>Xt"~G>_mn:%|~ޅ_+]$o)@ǀ{hgN;IK6G&rp)T2i୦KJuv*T=TOSV>(~D>dm,I*Ɛ:R#ۙNI%D>G.n$o;+#RR!.eU˽TRI28t)1LWϚ>IJa3oFbu&:tJ*(F7y0ZR ^p'Ii L24x| XRI%ۄ>S1]Jy[zL$adB7.eh4%%누>WETf+3IR:I3Xה)3אOۦSRO'ٺ)S}"qOr[B7ϙ.edG)^ETR"RtRݜh0}LFVӦDB^k_JDj\=LS(Iv─aTeZ%eUAM-0;~˃@i|l @S4y72>sX-vA}ϛBI!ݎߨWl*)3{'Y|iSlEڻ(5KtSI$Uv02,~ԩ~x;P4ցCrO%tyn425:KMlD ^4JRxSهF_}شJTS6uj+ﷸk$eZO%G*^V2u3EMj3k%)okI]dT)URKDS 7~m@TJR~荪fT"֛L \sM -0T KfJz+nإKr L&j()[E&I ߴ>e FW_kJR|!O:5/2跌3T-'|zX ryp0JS ~^F>-2< `*%ZFP)bSn"L :)+pʷf(pO3TMW$~>@~ū:TAIsV1}S2<%ޟM?@iT ,Eūoz%i~g|`wS(]oȤ8)$ ntu`өe`6yPl IzMI{ʣzʨ )IZ2= ld:5+請M$-ї;U>_gsY$ÁN5WzWfIZ)-yuXIfp~S*IZdt;t>KūKR|$#LcԀ+2\;kJ`]YǔM1B)UbG"IRߊ<xܾӔJ0Z='Y嵤 Leveg)$znV-º^3Ւof#0Tfk^Zs[*I꯳3{)ˬW4Ւ4 OdpbZRS|*I 55#"&-IvT&/윚Ye:i$ 9{LkuRe[I~_\ؠ%>GL$iY8 9ܕ"S`kS.IlC;Ҏ4x&>u_0JLr<J2(^$5L s=MgV ~,Iju> 7r2)^=G$1:3G< `J3~&IR% 6Tx/rIj3O< ʔ&#f_yXJiގNSz; Tx(i8%#4 ~AS+IjerIUrIj362v885+IjAhK__5X%nV%Iͳ-y|7XV2v4fzo_68"S/I-qbf; LkF)KSM$ Ms>K WNV}^`-큧32ŒVؙGdu,^^m%6~Nn&͓3ŒVZMsRpfEW%IwdǀLm[7W&bIRL@Q|)* i ImsIMmKmyV`i$G+R 0tV'!V)֏28vU7͒vHꦼtxꗞT ;S}7Mf+fIRHNZUkUx5SAJㄌ9MqμAIRi|j5)o*^'<$TwI1hEU^c_j?Е$%d`z cyf,XO IJnTgA UXRD }{H}^S,P5V2\Xx`pZ|Yk:$e ~ @nWL.j+ϝYb퇪bZ BVu)u/IJ_ 1[p.p60bC >|X91P:N\!5qUB}5a5ja `ubcVxYt1N0Zzl4]7­gKj]?4ϻ *[bg$)+À*x쳀ogO$~,5 زUS9 lq3+5mgw@np1sso Ӻ=|N6 /g(Wv7U;zωM=wk,0uTg_`_P`uz?2yI!b`kĸSo+Qx%!\οe|އԁKS-s6pu_(ֿ$i++T8=eY; צP+phxWQv*|p1. ά. XRkIQYP,drZ | B%wP|S5`~́@i޾ E;Չaw{o'Q?%iL{u D?N1BD!owPHReFZ* k_-~{E9b-~P`fE{AܶBJAFO wx6Rox5 K5=WwehS8 (JClJ~ p+Fi;ŗo+:bD#g(C"wA^ r.F8L;dzdIHUX݆ϞXg )IFqem%I4dj&ppT{'{HOx( Rk6^C٫O.)3:s(۳(Z?~ٻ89zmT"PLtw䥈5&b<8GZ-Y&K?e8,`I6e(֍xb83 `rzXj)F=l($Ij 2*(F?h(/9ik:I`m#p3MgLaKjc/U#n5S# m(^)=y=đx8ŬI[U]~SцA4p$-F i(R,7Cx;X=cI>{Km\ o(Tv2vx2qiiDJN,Ҏ!1f 5quBj1!8 rDFd(!WQl,gSkL1Bxg''՞^ǘ;pQ P(c_ IRujg(Wz bs#P­rz> k c&nB=q+ؔXn#r5)co*Ũ+G?7< |PQӣ'G`uOd>%Mctz# Ԫڞ&7CaQ~N'-P.W`Oedp03C!IZcIAMPUۀ5J<\u~+{9(FbbyAeBhOSܳ1 bÈT#ŠyDžs,`5}DC-`̞%r&ڙa87QWWp6e7 Rϫ/oY ꇅ Nܶըtc!LA T7V4Jsū I-0Pxz7QNF_iZgúWkG83 0eWr9 X]㾮݁#Jˢ C}0=3ݱtBi]_ &{{[/o[~ \q鯜00٩|cD3=4B_b RYb$óBRsf&lLX#M*C_L܄:gx)WΘsGSbuL rF$9';\4Ɍq'n[%p.Q`u hNb`eCQyQ|l_C>Lb꟟3hSb #xNxSs^ 88|Mz)}:](vbۢamŖ࿥ 0)Q7@0=?^k(*J}3ibkFn HjB׻NO z x}7p 0tfDX.lwgȔhԾŲ }6g E |LkLZteu+=q\Iv0쮑)QٵpH8/2?Σo>Jvppho~f>%bMM}\//":PTc(v9v!gոQ )UfVG+! 35{=x\2+ki,y$~A1iC6#)vC5^>+gǵ@1Hy٪7u;p psϰu/S <aʸGu'tD1ԝI<pg|6j'p:tպhX{o(7v],*}6a_ wXRk,O]Lܳ~Vo45rp"N5k;m{rZbΦ${#)`(Ŵg,;j%6j.pyYT?}-kBDc3qA`NWQū20/^AZW%NQ MI.X#P#,^Ebc&?XR tAV|Y.1!؅⨉ccww>ivl(JT~ u`ٵDm q)+Ri x/x8cyFO!/*!/&,7<.N,YDŽ&ܑQF1Bz)FPʛ?5d 6`kQձ λc؎%582Y&nD_$Je4>a?! ͨ|ȎWZSsv8 j(I&yj Jb5m?HWp=g}G3#|I,5v珿] H~R3@B[☉9Ox~oMy=J;xUVoj bUsl_35t-(ՃɼRB7U!qc+x4H_Qo֮$[GO<4`&č\GOc[.[*Af%mG/ ňM/r W/Nw~B1U3J?P&Y )`ѓZ1p]^l“W#)lWZilUQu`-m|xĐ,_ƪ|9i:_{*(3Gѧ}UoD+>m_?VPۅ15&}2|/pIOʵ> GZ9cmíتmnz)yߐbD >e}:) r|@R5qVSA10C%E_'^8cR7O;6[eKePGϦX7jb}OTGO^jn*媓7nGMC t,k31Rb (vyܴʭ!iTh8~ZYZp(qsRL ?b}cŨʊGO^!rPJO15MJ[c&~Z`"ѓޔH1C&^|Ш|rʼ,AwĴ?b5)tLU)F| &g٣O]oqSUjy(x<Ϳ3 .FSkoYg2 \_#wj{u'rQ>o;%n|F*O_L"e9umDds?.fuuQbIWz |4\0 sb;OvxOSs; G%T4gFRurj(֍ڑb uԖKDu1MK{1^ q; C=6\8FR艇!%\YÔU| 88m)֓NcLve C6z;o&X x59:q61Z(T7>C?gcļxѐ Z oo-08jہ x,`' ҔOcRlf~`jj".Nv+sM_]Zk g( UOPyεx%pUh2(@il0ݽQXxppx-NS( WO+轾 nFߢ3M<;z)FBZjciu/QoF 7R¥ ZFLF~#ȣߨ^<쩡ݛкvџ))ME>ώx4m#!-m!L;vv#~Y[đKmx9.[,UFS CVkZ +ߟrY٧IZd/ioi$%͝ب_ֶX3ܫhNU ZZgk=]=bbJS[wjU()*I =ώ:}-蹞lUj:1}MWm=̛ _ ¾,8{__m{_PVK^n3esw5ӫh#$-q=A̟> ,^I}P^J$qY~Q[ Xq9{#&T.^GVj__RKpn,b=`żY@^՝;z{paVKkQXj/)y TIc&F;FBG7wg ZZDG!x r_tƢ!}i/V=M/#nB8 XxЫ ^@CR<{䤭YCN)eKOSƟa $&g[i3.C6xrOc8TI;o hH6P&L{@q6[ Gzp^71j(l`J}]e6X☉#͕ ׈$AB1Vjh㭦IRsqFBjwQ_7Xk>y"N=MB0 ,C #o6MRc0|$)ف"1!ixY<B9mx `,tA>)5ػQ?jQ?cn>YZe Tisvh# GMމȇp:ԴVuږ8ɼH]C.5C!UV;F`mbBk LTMvPʍϤj?ԯ/Qr1NB`9s"s TYsz &9S%U԰> {<ؿSMxB|H\3@!U| k']$U+> |HHMLޢ?V9iD!-@x TIî%6Z*9X@HMW#?nN ,oe6?tQwڱ.]-y':mW0#!J82qFjH -`ѓ&M0u Uγmxϵ^-_\])@0Rt.8/?ٰCY]x}=sD3ojަЫNuS%U}ԤwHH>ڗjܷ_3gN q7[q2la*ArǓԖ+p8/RGM ]jacd(JhWko6ڎbj]i5Bj3+3!\j1UZLsLTv8HHmup<>gKMJj0@H%,W΃7R) ">c, xixј^ aܖ>H[i.UIHc U1=yW\=S*GR~)AF=`&2h`DzT󑓶J+?W+}C%P:|0H܆}-<;OC[~o.$~i}~HQ TvXΈr=b}$vizL4:ȰT|4~*!oXQR6Lk+#t/g lԁߖ[Jڶ_N$k*". xsxX7jRVbAAʯKҎU3)zSNN _'s?f)6X!%ssAkʱ>qƷb hg %n ~p1REGMHH=BJiy[<5 ǁJҖgKR*倳e~HUy)Ag,K)`Vw6bRR:qL#\rclK/$sh*$ 6덤 KԖc 3Z9=Ɣ=o>X Ώ"1 )a`SJJ6k(<c e{%kϊP+SL'TcMJWRm ŏ"w)qc ef꒵i?b7b('"2r%~HUS1\<(`1Wx9=8HY9m:X18bgD1u ~|H;K-Uep,, C1 RV.MR5άh,tWO8WC$ XRVsQS]3GJ|12 [vM :k#~tH30Rf-HYݺ-`I9%lIDTm\ S{]9gOڒMNCV\G*2JRŨ;Rҏ^ڽ̱mq1Eu?To3I)y^#jJw^Ńj^vvlB_⋌P4x>0$c>K†Aļ9s_VjTt0l#m>E-,,x,-W)سo&96RE XR.6bXw+)GAEvL)͞K4$p=Ũi_ѱOjb HY/+@θH9޼]Nԥ%n{ &zjT? Ty) s^ULlb,PiTf^<À] 62R^V7)S!nllS6~͝V}-=%* ʻ>G DnK<y&>LPy7'r=Hj 9V`[c"*^8HpcO8bnU`4JȪAƋ#1_\ XϘHPRgik(~G~0DAA_2p|J묭a2\NCr]M_0 ^T%e#vD^%xy-n}-E\3aS%yN!r_{ )sAw ڼp1pEAk~v<:`'ӭ^5 ArXOI驻T (dk)_\ PuA*BY]yB"l\ey hH*tbK)3 IKZ򹞋XjN n *n>k]X_d!ryBH ]*R 0(#'7 %es9??ښFC,ՁQPjARJ\Ρw K#jahgw;2$l*) %Xq5!U᢯6Re] |0[__64ch&_}iL8KEgҎ7 M/\`|.p,~`a=BR?xܐrQ8K XR2M8f ?`sgWS%" Ԉ 7R%$ N}?QL1|-эټwIZ%pvL3Hk>,ImgW7{E xPHx73RA @RS CC !\ȟ5IXR^ZxHл$Q[ŝ40 (>+ _C >BRt<,TrT {O/H+˟Pl6 I B)/VC<6a2~(XwV4gnXR ϱ5ǀHٻ?tw똤Eyxp{#WK qG%5],(0ӈH HZ])ג=K1j&G(FbM@)%I` XRg ʔ KZG(vP,<`[ Kn^ SJRsAʠ5xՅF`0&RbV tx:EaUE/{fi2;.IAwW8/tTxAGOoN?G}l L(n`Zv?pB8K_gI+ܗ #i?ޙ.) p$utc ~DžfՈEo3l/)I-U?aԅ^jxArA ΧX}DmZ@QLےbTXGd.^|xKHR{|ΕW_h] IJ`[G9{).y) 0X YA1]qp?p_k+J*Y@HI>^?gt.06Rn ,` ?);p pSF9ZXLBJPWjgQ|&)7! HjQt<| ؅W5 x W HIzYoVMGP Hjn`+\(dNW)F+IrS[|/a`K|ͻ0Hj{R,Q=\ (F}\WR)AgSG`IsnAR=|8$}G(vC$)s FBJ?]_u XRvύ6z ŨG[36-T9HzpW̞ú Xg큽=7CufzI$)ki^qk-) 0H*N` QZkk]/tnnsI^Gu't=7$ Z;{8^jB% IItRQS7[ϭ3 $_OQJ`7!]W"W,)Iy W AJA;KWG`IY{8k$I$^%9.^(`N|LJ%@$I}ֽp=FB*xN=gI?Q{٥4B)mw $Igc~dZ@G9K X?7)aK%݅K$IZ-`IpC U6$I\0>!9k} Xa IIS0H$I H ?1R.Чj:4~Rw@p$IrA*u}WjWFPJ$I➓/6#! LӾ+ X36x8J |+L;v$Io4301R20M I$-E}@,pS^ޟR[/s¹'0H$IKyfŸfVOπFT*a$I>He~VY/3R/)>d$I>28`Cjw,n@FU*9ttf$I~<;=/4RD~@ X-ѕzἱI$: ԍR a@b X{+Qxuq$IЛzo /~3\8ڒ4BN7$IҀj V]n18H$IYFBj3̵̚ja pp $Is/3R Ӻ-Yj+L;.0ŔI$Av? #!5"aʄj}UKmɽH$IjCYs?h$IDl843.v}m7UiI=&=0Lg0$I4: embe` eQbm0u? $IT!Sƍ'-sv)s#C0:XB2a w I$zbww{."pPzO =Ɔ\[ o($Iaw]`E).Kvi:L*#gР7[$IyGPI=@R 4yR~̮´cg I$I/<tPͽ hDgo 94Z^k盇΄8I56^W$I^0̜N?4*H`237}g+hxoq)SJ@p|` $I%>-hO0eO>\ԣNߌZD6R=K ~n($I$y3D>o4b#px2$yڪtzW~a $I~?x'BwwpH$IZݑnC㧄Pc_9sO gwJ=l1:mKB>Ab<4Lp$Ib o1ZQ@85b̍ S'F,Fe,^I$IjEdù{l4 8Ys_s Z8.x m"+{~?q,Z D!I$ϻ'|XhB)=…']M>5 rgotԎ 獽PH$IjIPhh)n#cÔqA'ug5qwU&rF|1E%I$%]!'3AFD/;Ck_`9 v!ٴtPV;x`'*bQa w I$Ix5 FC3D_~A_#O݆DvV?<qw+I$I{=Z8".#RIYyjǪ=fDl9%M,a8$I$Ywi[7ݍFe$s1ՋBVA?`]#!oz4zjLJo8$I$%@3jAa4(o ;p,,dya=F9ً[LSPH$IJYЉ+3> 5"39aZ<ñh!{TpBGkj}Sp $IlvF.F$I z< '\K*qq.f<2Y!S"-\I$IYwčjF$ w9 \ߪB.1v!Ʊ?+r:^!I$BϹB H"B;L'G[ 4U#5>੐)|#o0aڱ$I>}k&1`U#V?YsV x>{t1[I~D&(I$I/{H0fw"q"y%4 IXyE~M3 8XψL}qE$I[> nD?~sf ]o΁ cT6"?'_Ἣ $I>~.f|'!N?⟩0G KkXZE]ޡ;/&?k OۘH$IRۀwXӨ<7@PnS04aӶp.:@\IWQJ6sS%I$e5ڑv`3:x';wq_vpgHyXZ 3gЂ7{{EuԹn±}$I$8t;b|591nءQ"P6O5i }iR̈́%Q̄p!I䮢]O{H$IRϻ9s֧ a=`- aB\X0"+5"C1Hb?߮3x3&gşggl_hZ^,`5?ߎvĸ%̀M!OZC2#0x LJ0 Gw$I$I}<{Eb+y;iI,`ܚF:5ܛA8-O-|8K7s|#Z8a&><a&/VtbtLʌI$I$I$I$I$I$IRjDD%tEXtdate:create2022-05-31T04:40:26+00:00!Î%tEXtdate:modify2022-05-31T04:40:26+00:00|{2IENDB`Mini Shell

HOME


Mini Shell 1.0
DIR:/usr/share/doc/libuser-0.60/
Upload File :
Current File : //usr/share/doc/libuser-0.60/NEWS
0.60:
* New functions lu_homedir_remove_for_user() and
  lu_homedir_remove_for_user_if_owned().
* libuser's pkg-config file no longer refers to internally-used libraries.
  glib-2.0 and gobject-2.0 are still included because they are required to
  use the API anyway.
* When setting dates in shadow fields, avoid the special value 0 if the clock is
  incorrect.
* Miscellaneous cleanups.

0.59:
* Fixed security vulnerabilities:
  * Race conditions in copying and removing home directories (CVE-2012-5630)
  * Information disclosure when moving users' home directory (CVE-2012-5644)
  Related changes:
  - INCOMPATIBLE API CHANGES: lu_homedir_move() and lu_homedir_populate()
    will refuse to use a pre-existing directory as a destination.
  - setuid/setgid bits are now preserved when copying regular files in home
    directories (from /etc/skel or when moving a home directory)
* Empty fields in /etc/shadow are now treated as "missing", like libc does.
  * Specific values of the attributes can be used to represent "missing data".
  * lchage(1) now handles missing fields on both input and output.
* Refuse to build when secure_getenv() is not available.
* Miscellaneous bug fixes and cleanups.

0.58
* API enhancements:
  * New helpers for attribute access replace 4-5 function calls with 1:
    lu_ent_get_first_{string,id,value_strdup}(),
    lu_ent_set_{string,id,long}()
  * New header <libuser/fs.h>, providing lu_homedir_{populate,move,remove},
    lu_nscd_flush_cache(), and lu_mail_spool_{create,remove}.
  * lu_users_enumerate_by_group_full() and lu_groups_enumerate_by_user_full()
    are now fully supported.
  * New module-private function lu_util_append_values().
  * Documented that LU_*PASSWORD should not be manipulated directly.
* deleteUser in Python bindings now removes the mail spool instead of creating
  it.
* New warning in libuser.conf.5 about storing a LDAP password in system-wide
  configuration.
* Module interface ABI has changed.
* Miscellaneous bug fixes and cleanups, quite a few memory leaks fixed.

0.57.7
* lu_users_enumerate_by_group_full() added, implemented ONLY for LDAP for now.
  Related functions and functionality in other modules will be added later.
  Applications are advised to NOT USE these functions yet.
* group/user list by name of a user/group now returns an error if the
  user/group was not found.  The Python bindings enumerateUsersFull and
  enumerateGroupsFull no longer crash in this situation.
* Updated translations.

0.57.6
* Make it possible to use ldapi: URLs by not trying to use TLS (based on
  a patch by <davide.principi@nethesis.it>).
* Hopefully fix races in test suite, causing failures on slower computers.
* Mark --help messages for translation and improve them a bit.
* Update translations.

0.57.5
* Update translations.

0.57.4
* Don't crash when a database file size is a multiple of page size.
* Miscellaneous bug fixes and cleanups.

0.57.3
* Don't assume user/group IDs start at 500 in Python getFirstUnusedGid and
  getFirstUnusedUid.
* Preserve S_ISGID and other bits when copying directories from /etc/skel.
* Deprecate lu_*_t typedefs: use {struct,enum} lu_* instead.
* Update to build with recent gtk-doc.

0.57.2
* Fix adding LDAP users with empty gecos.
* Correctly preserve algorithm used to hash an LDAP password when changing it.
* Don't hard-code ports used in the test suite (to allow parallel development
  and builds).
* Miscellaneous bug fixes.

0.57.1
* Fix a crash when a module refuses to load with a warning (e.g. the "shadow"
  module when /etc/shadow is not present)

0.57
* Resolve an ambiguity about "password" value format that could cause setting
  a known plaintext password in LDAP accounts: the "files"/"shadow" and LDAP
  modules may not be used together any more, and the module interface ABI has
  changed to support this.
* Don't authenticate the user (in lchfn, lchsh, lpasswd) if the application
  is not set*id and it does not need elevated privileges.  In particular, this
  allows the above programs to be used for LDAP administration by unprivileged
  users.
* Change default crypt_style to sha512.
* Don't abort on invalid ID values.
* Miscellaneous bug fixes.

0.56.18
* Update translations.

0.56.17
* New Python constant VALUE_INVALID_ID and function validateIdValue.
* Update translations.

0.56.16
* Update translations.

0.56.15
* Update translations.

0.56.14
* Use dgettext() inside the library.
* Allow passing passwords using a pipe.
* Allow specifying the LDAP password in a config file (patch by Rob Myers
  <rob.myers@gtri.gatech.edu>).

0.56.13
* Report error in lid if the specified name does not exist.
* Don't default a home directory to a path that contains a "." or ".." component
  derived from the user name (explicitly specified home directories that contain
  such components are accepted).
* Detect naming conflicts when renaming an entry in the "files" or "shadow"
  module.
* Add new arguments to luseradd and lusermod, to support creating and modifying
  LDAP user entries with the inetOrgPerson objectClass.

0.56.12
* Update translations.

0.56.11
* Remove user's mail spool as well in (luserdel -r).
* Refuse GID and UID values (id_t)-1.
* Verify name validity when renaming an entity.
* Fix flushing of nscd cache by luser* utilities.

0.56.10
* Prohibit entity values that contain ':' in the files and shadow module
  (except for the last field on the line).
* Don't corrupt LDAP passwords that use an unsupported password encryption
  scheme.
* When the user name is used as a default group name, don't interpret it as
  a number.
* Minor test suite and man page fixes.

0.56.9
* Warn in lusermod if changing a primary group ID to a group that does not
  exist. (#1)
* Fix pastos in man pages.

0.56.8
* New home page at https://fedorahosted.org/libuser/ .

0.56.7
* Fix a crash with disabled SELinux
* Add support for SHA256 and SHA512 in password hashes.
* Fix file locking on some architectures
* Remove default.-c, moving the provided functions to libuser proper.

0.56.6
* Set SELinux file contexts when creating home directories and preserve them
  when moving home directories

0.56.5
* Work around spurious error messages when run against the Fedora Directory
  server
* Fix error reporting when creating home directories and creating / removing
  mail spool files

0.56.4
* Update the last password change date field when changing passwords.

0.56.3
* Allow specifying a SASL mechanism (#240904, original patch by Simo Sorce).

0.56.2
* Update translations

0.56.1
* When changing passwords, only silently ignore known shadow markers, not all
  invalid hashes

0.56
* Document the correct types used for attribute values.  Use these types for
  parsing, to avoid corrupting number-like strings, e.g. '07' -> 7; this
  expands the API requirements
* Miscellaneous bug fixes, optimizations and cleanups; module interface ABI
  has changed

0.55
* Remove the quota library and Python module.  It doesn't even compile and
  has no known users.
* Add support for the 64-bit API of Python 2.5
* Minor cleanups

0.54.8
* Add importing of HOME from default/useradd.

0.54.7
* Update translations

0.54.6
* Fix bugs in handling of invalid lines in the files and shadow modules.
* Fix pattern matching in lu_*_enumerate_full in the files and shadow modules.
* Add more error reporting, return non-zero exit status on error from utils.
* Use the skeleton directory specified in libuser.conf by Python
  admin.createHome and admin.addUser, add parameter skeleton= to admin.addUser.

0.54.5
* Don't reference @pkglibdir@ in libuser.conf.5 to avoid multilib file
  conflicts.

0.54.4
* Fix compilation with pre-C99 compilers (#179385, patch by Dan Yefimov).
* Allow building without Python (#179384, original patch by Dan Yefimov).

0.54.3
* Fix a crash when lpasswd is run without specifying an user name

0.54.2
* Avoid using deprecated openldap functions

0.54.1
* Support for importing of configuration from shadow (/etc/login.defs and
  /etc/default/useradd)
* New libuser.conf(5) man page
* Minor cleanups and bug fixes all over the code

0.54
* Make sure attributes with no values can never appear
* Fix crash in the "files" module when an attribute is missing
* Use hidden visibility for internal functions, remove them from
  libuser/user_private.h; this changes module interface ABI
* Miscellaneous source code simplifications

0.53.8
* Permit "portable" user and group names as defined by SUSv3, plus trailing $
* Disable building static libraries by default
* Miscellaneous build machinery improvements

0.53.7
* Add missing translations
* Update translations

0.53.6
* Allow empty configuration values.

0.53.5
* Ignore nss_compat lines in the "files" module.
* Autodetect Python version.

0.53.4
* Fix adding of objectclasses to LDAP user accounts.

0.53.3
* Handle more I/O failures.

0.53.2
* Important bug fixes in lchage, lgroupmod, lnewusers and lusermod; minor bug
  fixes in lpasswd and luseradd.
* Add man pages for the utilities.

0.53.1
* Export UT_NAMESIZE from <utmp.h> to Python

0.53
* Support UID and GID values larger than LONG_MAX (#124967)
* Fix updating of groups after user renaming in lusermod
* Allow setting a shadow password even if the current shadow password is
  invalid (#131180)
* Add lu_{user,group}_unlock_nonempty (#86414); module interface ABI has
  changed
* Miscellaneous bug and memory leak fixes

0.52.6
* Mark more strings for translation
* Make error reporting more consistent and more verbose, output error messages
  on stderr.
* Port sasldb backend to Cyrus SASL v2, make it at least minimally usable

0.52.5
* Fix home directory renaming in ADMIN.modifyUser (#135280)
* Further Python reference counting fixes

0.52.4
* Memory leak fixes

0.52.3
* Fix compilation without libuser headers already installed (#134085)

0.52.2
* Allow LDAP connection using ldaps, custom ports or without TLS (original
  patch from Pawel Salek).

0.52.1
* Fix freecon() of uninitialized value in files/shadow module

0.52
* Usable LDAP backend
* Miscellaneous bug fixes

0.51.12
* Don't claim success and exception at the same time (#133479)
* LDAP fixes, second round
* Various other bug fixes

0.51.11
* Allow documented optional arguments in Python
  ADMIN.{addUser,modifyUser,deleteUser} (#119812)
* Add man pages for lchfn and lchsh
* LDAP fixes, first round
* Avoid file conflict on multilib systems
* Call ldconfig correctly

0.51.10
* Don't attempt to lookup using original entity name after entity
  modification (rename in particular) (#78376, #121252)
* Fix copying of symlinks from /etc/skel (#87572, original patch from gLaNDix)
* Make --enable-quota work, and fix the quota code to at least compile (#89114)
* Fix several bugs (#120168, original patch from Steve Grubb)
* Don't hardcode python version in spec file (#130952, from Robert Scheck)
* Properly integrate the SELinux patch, it should actually be used now, even
  though it was "enabled" since 0.51.7-6

0.51.9
* Fix various typos
* Document library interfaces
* Build all shared libraries with -fPIC (#72536)

0.51.8
* Update to build with latest autotools and gtk-doc
* Update ALL_LINGUAS and POTFILES.in
* Rebuild to depend on newer openldap

0.51.7-7
* fix is_selinux_enabled call

0.51.7-3
* Add SELinux support

0.51.7
* ldap: set error codes correctly when we encounter failures initializing
* don't double-close modules which fail initialization
* ldap: don't set an error in cases where one is already set

0.51.6
* use a crypt salt consistent with the defaults/crypt_style setting when
  setting new passwords (#79337)

0.51.5
* expose lu_get_first_unused_id() as a package-private function
* provide libuser.ADMIN.getFirstUnusedUid and libuser.ADMIN.getFirstUnusedGid
  in python

0.51.4
* fix not freeing resources properly in files.c(generic_is_locked), spotted by
  Zou Pengcheng

0.51.2
* degrade gracefully
* build with --with-pic and -fPIC
* remove unpackaged man page

0.51.1-2
* translation updates

0.51.1-1
* doc updates -- cvs tree moved
* language updates
* disallow weird characters in account names

* automated rebuild

0.51
* files: ignore blank lines in files
* libuser: disallow creation of accounts with names containing whitespace,
  control characters, or non-ASCII characters

0.50.2
* refresh translations
* fix a heap-corruption bug in the python bindings

0.50
* bump version
* refresh translations

0.49.102
* ldap: cache an entity's dn in the entity structure to try to speed things up

0.49.101-2
* add missing buildreqs on cyrus-sasl-devel and openldap-devel (#59456)
* translation refresh

0.49.101-1
* fix python bindings of enumerateFull functions
* adjust prompter wrapping to not error out on successful returns

0.49.100
* be more careful about printing error messages
* fix refreshing after adding of accounts
* ldap: try to use a search to convert names to DNs, and only fall back to
  guessing if it turns up nothing
* files: fix an off-by-one in removal of entries

0.49.99
* refresh translations
* fix admin() constructor comments in the python module

0.49.98
* automatically refresh entities after add, modify, setpass, removepass,
  lock, and unlock operations
* remove debug spewage when creating and removing mail spools
* files: fix saving of multi-valued attributes
* rename MEMBERUID attribute for groups to MEMBERNAME

0.49.97
* files: fix bug in removals
* ldap: revert attempts at being smart at startup time, because it makes UIs
  very messy (up the three whole dialogs just to start the ldap stuff!)

0.49.96
* fix thinko in dispatch routines

0.49.95
* lgroupmod: fix thinko

0.49.93
* move shadow initialization for groups to the proper callback
* rework locking in the files module to not require that files be writable

* expose lu_strerror()
* add various typedefs for types used by the library

0.49.92
* add removepass() functions

* lchfn,lchsh,lpasswd - reorder PAM authentication calls
* include API docs in the package

0.49.91
* ldap: finish port to new API
* sasl: finish port to new API (needs test)
* libuser: don't commit object changes before passing data to service
  functions which might need differing data sets to figure out what to
  change (for example, ldap)

0.49.90
* bind the internal mail spool creation/removal functions for python

* renamed the python module
* revamped internals to use gobject's gvalues and gvaluearrays instead of
  glists of cached strings
* add enumeration-with-data functions to the C library

* require linuxdoc-tools instead of sgml-tools for rawhide

* fixup build files to allow building for arbitrary versions of python

0.32
* link the python module against libpam
* attempt to import the python modules at build-time to verify dependencies

0.31
* fix a file-parsing bug that popped up in 0.29's mmap modifications

0.30
* quotaq: fix argument order when reading quota information
* user_quota: set quota grace periods correctly
* luseradd: never create home directories for system accounts

* add da translation files
* update translations

0.29
* add an explicit build dependency on jade (for the docs)

* HUP nscd on modifications
* userutil.c: mmap files we're reading for probable speed gain
* userutil.c: be conservative with the amount of random data we read
* docs fixes

0.28
* apps: print usage on errors
* lnewusers.c: initialize groups as groups, not users
* lnewusers.c: set passwords for new accounts
* luseradd.c: accept group names in addition to IDs for the -g flag
* luseradd.c: allow the primary GID to be a preexisting group

0.27
* add ko translation files
* files.c: fix a heap corruption bug in lock/unlock (#51750)
* files.c: close a memory leak in reading of files

* files.c: remove implementation limits on lengths of lines

0.26
* lusermod: change user name in groups the user is a member of during renames
* lgroupmod: change primary GID for users who are in the group during renumbers
* ldap.c: handle new attributes more gracefully if possible
* add ru translation files

0.25.1
* rename the quota source files to match the library, which clears up a
  file conflict with older quota packages
* add ja translation files

* add lu_ent_clear_all() function

0.25
* close up some memory leaks
* add the ability to include resident versions of modules in the library

0.24-4
* fix incorrect Py_BuildValue invocation in python module

0.24-3
* stop leaking descriptors in the files module
* speed up user creation by reordering some checks for IDs being in use
* update the shadowLastChanged attribute when we set a password
* adjust usage of getXXXXX_r where needed
* fix assorted bugs in python binding which break prompting

0.23
* install sv translation
* make lpasswd prompt for passwords when none are given on the command line
* make sure all user-visible strings are marked for translation
* clean up some user-visible strings
* require PAM authentication in lchsh, lchfn, and lpasswd for non-networked modules

* print uids and gids of users and names in lid app
* fix tree traversal in users_enumerate_by_group and groups_enumerate_by_users
* implement enumerate_by_group and enumerate_by_user in ldap module
* fix id-based lookups in the ldap module
* implement islocked() method in ldap module
* implement setpass() method in ldap module
* add lchfn and lchsh apps
* add %d substitution to libuser.conf

0.21
* finish adding a sasldb module which manipulates a sasldb file
* add users_enumerate_by_group and groups_enumerate_by_users


* luserdel: remove the user's primary group if it has the same name as
  the user and has no members configured (-G disables)
* fixup some configure stuff to make libuser.conf get generated correctly
  even when execprefix isn't specified

0.20
* only call the auth module when setting passwords (oops)
* use GTrees instead of GHashTables for most internal tables
* files: complain properly about unset attributes
* files: group passwords are single-valued, not multiple-valued
* add lpasswd app, make sure all apps start up popt with the right names

0.18
* actually make the new optional arguments optional
* fix lu_error_new() to actually report errors right
* fix part of the python bindings
* include tools in the binary package again
* fixup modules so that password-changing works right again
* add a "key" field to prompt structures for use by apps which like to
  cache these things
* add an optional "mvhomedir" argument to userModify (python)

0.16.1
* finish home directory population
* implement home directory moving
* change entity get semantics in the python bindings to allow default values for .get()
* add lu_ent_has(), and a python has_key() method to Entity types
* don't include tools in the binary package
* add translated strings

* lib/user.c: catch and ignore errors when running stacks
* lusermod: fix slightly bogus help messages
* luseradd: when adding a user and group, use the gid of the group
  instead of the user's uid as the primary group
* properly set the password field in user accounts created using
  auth-only auth modules (shadow needs "x" instead of "!!")
* implement home directory removal, start on population

* fix group password setting in the files module
* setpass affects both auth and info, so run both stacks

* make the testbed apps noinst

* fix errors due to uninitialized fields in the python bindings
* add kwargs support to all python wrappers
* add a mechanism for passing arguments to python callbacks

* stub out the krb5 and ldap modules so that they'll at least compile again
 
* don't bail when writing empty fields to colon-delimited files
* use permissions of the original file when making backup files instead of 0600

* finish implementing is_locked methods in files/shadow module
* finish cleanup of the python bindings
* allow conditional builds of modules so that we can build without
  all of the prereqs for all of the modules

* add error reporting facilities
* split public header into pieces by function
* backend cleanups

* make %{name}-devel require %{name} and not %{name}-devel

* clean up quota bindings some more
* finish most of the ldap bindings
* fix a subtle bug in the files module that would show up when renaming accounts
* fix mapping methods for entity structures in python

* get bindings for prompts to work correctly
* clean up some of the add/remove semantics (set source on add)
* ldap: implement enumeration
* samples/enum: fix the argument order

* clean up python bindings for quota

0.11
* finish up python bindings for quota support

* finish up quota support libs

* start quota support library to get some type safety

* start looking at quota manipulation

* add functions for enumerating users and groups, optionally per-module
* lusermod.c: -s should specify the shell, not the home directory

0.10
* finish the python bindings and verify that the file backend works again

* remove a redundant check which was breaking modifications

* finish adding setpass methods

0.9
* get a start on some Python bindings

0.8.2
* make binary-incompatible change in headers

0.8.1
* add doxygen docs and a "doc" target for them

0.8
* add a "quiet" prompter
* add --interactive flag to sample apps and default to using quiet prompter
* ldap: attempt a "self" bind if other attempts fail
* krb5: connect to the password-changing service if the user principal has
  the NULL instance

* the great adding-of-the-copyright-statements
* take more care when creating backup files in the files module

0.7
* add openldap-devel as a buildprereq
* krb5: use a continuous connection
* krb5: add "realm" config directive
* ldap: use a continuous connection
* ldap: add "server", "basedn", "binddn", "user", "authuser" config directives
* ldap: actually finish the account deletion function
* ldap: don't send cleartext passwords to the directory
* fix naming attribute for users (should be uid, not gid)
* refine the search-by-id,convert-to-name,search-by-name logic
* fix handling of defaults when the config file is read in but contains no value
* implement an LDAP information store
* try to clean up module naming with libtool
* luseradd: pass plaintext passwords along
* luseradd: use symbolic attribute names instead of hard-coded
* lusermod: pass plaintext passwords along
* lgroupadd: pass plaintext passwords along
* lgroupmod: pass plaintext passwords along
* add libuser as a dependency of libuser-devel

0.6
* See changelog in libuser.spec.in from here on.

0.5
* Implemented the krb5 back-end (user add, modify, delete only).
* Lookups in the files module use O_RDONLY instead of O_RDWR.

0.4
* Modify lu_start prototype and add semantics for non-superuser use (we'll
  need this later).

0.3
* Remove recursive account locking from the files/shadow module.
* Fixup popt help text.
* Remove dependency on krb5 profile sublibrary for reading config files.

0.2
* Implemented prompting.
* Added macros for LU_USERNAME and LU_GROUPNAME, found a bug in the files module
  while converting to use them.
* Switched from getopt() to popt for argument parsing to get autohelp in the
  various test/demo programs.

0.1
* Finished up most of the internals and the files back-end.
* Simple shadow-like programs.