From f1f0d6000a10d8c6c3d19d5e979c956bf848c488 Mon Sep 17 00:00:00 2001 From: Ugo Cirmignani Date: Mon, 31 Dec 2018 16:12:43 +0100 Subject: [PATCH] working on pam permissions --- Makefile | 12 +- build/modules/configRead.o | Bin 37776 -> 38064 bytes build/modules/connection.o | Bin 52240 -> 52520 bytes build/modules/fileManagement.o | Bin 35016 -> 36544 bytes build/modules/ftpCommandElaborate.o | Bin 74232 -> 75416 bytes build/modules/ftpData.o | Bin 45752 -> 45800 bytes build/modules/ftpServer.o | Bin 59176 -> 59864 bytes build/uFTP | Bin 213744 -> 218400 bytes ftpCommandElaborate.c | 169 ++++++++++++++++------------ ftpData.c | 2 + ftpData.h | 11 +- ftpServer.c | 17 ++- library/auth.c | 10 +- library/configRead.c | 12 ++ library/connection.c | 4 +- library/fileManagement.c | 39 ++++++- library/fileManagement.h | 1 + uftpd.cfg | 4 + 18 files changed, 190 insertions(+), 91 deletions(-) diff --git a/Makefile b/Makefile index 2884605..e274386 100644 --- a/Makefile +++ b/Makefile @@ -20,12 +20,18 @@ ENABLE_LARGE_FILE_SUPPORT=-D LARGE_FILE_SUPPORT_ENABLED -D _LARGEFILE64_SOURCE ENABLE_OPENSSL_SUPPORT= #TO ENABLE OPENSSL SUPPORT UNCOMMENT NEXT 2 LINES ENABLE_OPENSSL_SUPPORT=-D OPENSSL_ENABLED -LIBS=-lpthread -lssl -lcrypto -lpam +LIBS=-lpthread -lssl -lcrypto + +ENABLE_PAM_SUPPORT= +PAM_AUTH_LIB= +#TO ENABLE PAM AUTH UNCOMMENT NEXT TWO LINES +ENABLE_PAM_SUPPORT= -D PAM_SUPPORT_ENABLED +PAM_AUTH_LIB= -lpam #USER PAM AUTH #-lpam -CFLAGS=$(CFLAGSTEMP) $(ENABLE_LARGE_FILE_SUPPORT) $(ENABLE_OPENSSL_SUPPORT) +CFLAGS=$(CFLAGSTEMP) $(ENABLE_LARGE_FILE_SUPPORT) $(ENABLE_OPENSSL_SUPPORT) $(ENABLE_PAM_SUPPORT) all: $(BUILDFILES) @@ -40,7 +46,7 @@ end: @echo Build process end uFTP: uFTP.c fileManagement.o configRead.o logFunctions.o ftpCommandElaborate.o ftpData.o ftpServer.o daemon.o signals.o connection.o openSsl.o dynamicMemory.o errorHandling.o auth.o - @$(CC) $(ENABLE_LARGE_FILE_SUPPORT) $(ENABLE_OPENSSL_SUPPORT) uFTP.c $(LIBPATH)dynamicVectors.o $(LIBPATH)fileManagement.o $(LIBPATH)configRead.o $(LIBPATH)logFunctions.o $(LIBPATH)ftpCommandElaborate.o $(LIBPATH)ftpData.o $(LIBPATH)ftpServer.o $(LIBPATH)daemon.o $(LIBPATH)signals.o $(LIBPATH)connection.o $(LIBPATH)openSsl.o $(LIBPATH)dynamicMemory.o $(LIBPATH)errorHandling.o $(LIBPATH)auth.o -o $(OUTPATH)uFTP $(LIBS) + @$(CC) $(ENABLE_LARGE_FILE_SUPPORT) $(ENABLE_OPENSSL_SUPPORT) uFTP.c $(LIBPATH)dynamicVectors.o $(LIBPATH)fileManagement.o $(LIBPATH)configRead.o $(LIBPATH)logFunctions.o $(LIBPATH)ftpCommandElaborate.o $(LIBPATH)ftpData.o $(LIBPATH)ftpServer.o $(LIBPATH)daemon.o $(LIBPATH)signals.o $(LIBPATH)connection.o $(LIBPATH)openSsl.o $(LIBPATH)dynamicMemory.o $(LIBPATH)errorHandling.o $(LIBPATH)auth.o -o $(OUTPATH)uFTP $(LIBS) $(PAM_AUTH_LIB) daemon.o: @$(CC) $(CFLAGS) $(SOURCE_MODULES_PATH)daemon.c -o $(LIBPATH)daemon.o diff --git a/build/modules/configRead.o b/build/modules/configRead.o index 742e093d3ad158fb7ebcedb0174b2314bbcce862..c4431d74473b3f0ef13ba7d809bf7d71b277d936 100644 GIT binary patch delta 7770 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 XZq|zA>5JT delta 7576 zcmZ`;dstOf7T^1zJQDC;P`Br*JhbF0%JKTb#}|(@@#gr-$yW~`6h%O|D1x9|AtV7E zxhzZb(@Cey%(95FMy*N4(Mq$CveFqbZEDg?{g|AT#y;lT_pFWF^$q@^d;NZEulL^P z+~ZsOw7R`oon5p1u3>0GPxzr{U%nmuEDN>7yO3%*s;&JmL|e=FuZ_E`-8Ft2UI~v# zJ$I+Qy?TA!wf6R@wa?|te>SbZ^izBL)aoy%R)2WqkeA-#OW*FGw|nVrzVv@P=+Zll zgL<`hYqaazIGnLH^371$FN&u%?&%jD5_~#@u^`46v&}pWpV^l=7qo;hR@vVRE%dG} zEV!64Cf6b37-N1c_&8(iMhIgAq}<+7*2#IOh4(nuN_ zc~^#+hDQD*g?tnaOJN-fN2E}P!h2HKg~Iz%cngK2vUo>PXc}!{Y+SS%-!U0%{-aW; zA09uZPZ(o6yb`m0EUDK~I4PO8P&g%vaukJ6WShkNbzGG`I#v;ATN-o!ao-1>eyc32S zMzV~-&vRy8lvk^oqnv8WHA-G$%C$<)Gv$pu33eJ0?m?QYqo3#QToYIFI<%|gN+NF{ z@RpK8%^l>*P}N z%paV^c!f+@^W-r9zr_3}ntv}?CoMd~dgP(}u zn)Jk-aC&4i-`Uu6RDq_Y^@XOHefYJ;?PG>@YdkZ)E~qhYlF_4a*NkqwkGIjup_VFb zQi%W5XZ-y9gM$MC!Ld04qUyTAg_%2ec;o6>kv-EV_LP~KbJCqLwuPJWYQ(!S#zrv4 z?zWqMo+tWyP@h|T?KC1D3dw20IiIi}AiEcF>BZ>eFGj`4)ZNdE3%`!>`cP`ifp=< zT}#;R-t)}ZW-q&+usX8uOV;_7yjK|WMmxGwwBI1Eq8*02u6NS6chVmM$}jYlRA!5$kLeGyTC_4`Xa%Xc>i7lo<&0U$U(s_jO|p_N1%qW8lpK1|qw;L0uH1L10J3J(Csa-pk> zwWXRSI`t_C=h%sd|Y7g7HBIl^eEX0##j;2oC(P* z46cJ~MJf-2<`shXf~zYG{kIrU7#34CvJ@OEgpt;DusCf5iLR&e+3vC{-wD;Bs+_K3V?YV2l+K_9!H;PUSY(y;|rQ zShDwt&KYQ4ZSZv9B`Mqm&Jx3U4hu5?cPL-CFqt6)PsB!!A$Susl?c8C&X*W^EXH3- zbRr~_T`U+wL|*aNcT;GZpU|pUkJVzBlX9qR5TA^2f_&c z7!GD6!Sk^nLrok+nbkR#==nfUs-9>K2gX4s@R&%v0Efiv*WHedV941Rsk}gr5n%0Q;a} z^r{b5v=eIL@S)r4wh^5%*weuTkHH>}B=}eOSWO`K8z?_Q@Km%j*Tffg1m{4-r^$vu zbg-P@r!dJ9f`?)PRnV|b==Fr1g{68CF0T{%>xA8ikBUQJEf?++gjJ8&&k3F^>&qCs zMDUS#eOxE_E{x$9f-}r0z#MINM`^Ag(FFTe~miQu1MKnr~E ziHv=U1G(6TVC(}NBp1OCp}ZE-D}=k6u-mcq&k?*ITH8(VqnO?s1XrC`-c&hM=Z~BE zaJ#~)HFh z3BC^-|0cnkQGSo$U!(p<1dqlS`LiYt?^ap$OGGCfzybTF6T>MK{K4?dAGCq5ci`4Eh?;1!|1o2U%bSD%+*cC~Q7iMv!97cs08 z#F~2F`hwu9OWzV)dFS{IMR{+=XnUAAd|z#K4kS8tcmN#)SH6-6uCA1skX$45Y{Gtu zjVS?Fjc`{Jb~?6a8^P5Z-ClyLj}`9_T-E0|!NW1%vnCD!wN~d)^}#1Hb_-ubCi@WgPFpI)@g7+W$(w|=n6LvHvo^(OJPkaXGD4U nAPwx=rRh)u3EH-ea1s(YgP<*m+z!qyi9z!>nL7`HwJ!3166Hiq diff --git a/build/modules/connection.o b/build/modules/connection.o index 41f946d3db1a2a153f0415788e21830302cae959..876db4245f4c615f70b208d28c52108de63d46d6 100644 GIT binary patch delta 14541 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 diff --git a/build/modules/fileManagement.o b/build/modules/fileManagement.o index 586d560104cdf7a3a44d51fed13100b486f169dc..070c2b4b7b5362d9b50b62801e952bf870e31510 100644 GIT binary patch delta 9367 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 delta 7813 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 diff --git a/build/modules/ftpCommandElaborate.o b/build/modules/ftpCommandElaborate.o index e832c39e623624b46c0a5899232ae86948cfd284..e0c762b4adf86daf5eb0677ca74ec0d38b8ba796 100644 GIT binary patch literal 75416 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

&A9WdV2}yYl9Id zdFZ>ZV;KGIkWdIQh2h^u`}8sVUd*?e;q*Nvli``jC(dw^zk}fe(Qa>L`0H4Y_b}Xr ze&bPw(|GA6hChn-`8wjHANs!TpBX*r=N}B8iS|4Y|C0X659Bf&&f3B=7IDg#z5{$d zqo;fqFr4yT%5cheIm6#ad%lX{@1Z_#WcUxUU%M4?l9Rq;{2-$zIe)@%lJiA|lbmlb zoaEfk@PpXyjxhWN^aE~eA0#JzpLrDGR4*jwml;lS&SW^rN$2c{56O86qkj(d9Afwf z*dALMej$!?)-wE?IKH|CaVi&mr}}%0p33zk!>L>^GMw7^Zx~MHeV^e}-cK1$-%<47 z0Z`JL>?4BrbG2_ddSobsjb zhu_ZVDc}1UPWe90aLRWl!;8@#UO}AlrSF*^VDyyl5r$K~{qegoq<_kH1jElldpiSh z%9p;oK7-Lyz9kH&e3vks>?*`?lBbQ~WLIk$PIh%0!>3@oxR>ECq91#V;bHV++YzVo z()Z{0FnTKQdkm-Y{*B>Ou5|o<4(Y!O`@12CQ@-?F{c((*@}16b%Gb|u%J*W1lm6=& zPI_)(IJML386LuM#;u5x{7>OM_InvU)z{+;e-icZEaOAJNAL!tCp{csIO*Y2hLavf z;P;3~|Ep2{u?#2wJe}b`QEosKBTnU|-)p#p(UY84Fr4JPis5vg_(q1e<9Onm48ITi zwFekZ_4owCNe?eD{4w-1Zy-+Px(UC}@;;-#75(t%45x8MfBY^J@uAqKj~)z z!%08qGMvgapWzFz{a(uO8*yG;hd9Y&|4s*^CwaccaFXX+3@3TM$MAokKA&Xx?dVs3 zia5zbzbEo0rw2s|Ar3N}j#CmK;oaCY3k@+U0CwU%VILWhx;bi~27+#Ee{uSbsFZ~YA z`;4CQ{X4@c-wgb&7uh-GJBs1-J)H3j|0(ug(-|H>e>IQcpW*t(VusJhac~XdR4)2m zp{p1@m8+BCRIUvSr+n{YIF`M$?+%J&n7+uyCm@5NER^!r&SBTn@~`Ho{a_l84sqTNypca|6Rko^LRm?ck@WkC5UGsPV&(2rj2FvB+pcalRQ3#lRVW7|2^vea>OZL`W?3x zMo;-(&v453R)$l)_b_}nWF&;xj5y^>zbm(s(Nn&^W;o^h4#O$mj~Pz)xahlulrQaT z56ABfQoT^VqZv;57BZajoyG96I6hp+a9kb}OAse{=ywL289m9fis2;BO$;Y_zRhqy z&a)n5_!YSB@e_vAcd=hYoa79n{rr~E)48HU4ELiR{>J#w?=ud*jpTck|?|6n& zd8aXa39WxJoYrrv7*6*mzlu1Om!2ybyex_`Nsf+X_6&l1=;=^uaY#m31F*Q#VTPVI&6u>x=SkJ>N&z6astPxdoD z0yS``fwKdA(E5UxAPfJ>+|Idr~Lx>9YI|W zw9m4R;j|wFzYD0-(>~g6hSNT#$cwc#S;1u@4}N1w{%xR8)NBmqS!Syx@@j)tP~9ZT1W1e1EcuOMc;IulfTP*i&!a3~dU*cu`A^{aMbpFQH-RTMJNwy! z`TKD`O%KUW4}33y%OoH8XbhZ7$NqyJP7B`}>Pdh5aiMQNezy$t2X#dGK@U&A*g^i?xr&m~gZ!XMF8`Gd`TrX8f0z>B!}EvV z&FV>i;#5URdV>66$&J_%z7q2%Iq6w@qYAAfLVPHH`V0Logn9ar-&G0lGq?6b>F95_ zL-~s_J%1=2J@;aIZohs^e;EB7Jyd>r?sU-KNYo$o3!pz3+faH^3&_LshG#ksJhox` tfn_q7LhB*u`BW`^X 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 diff --git a/build/modules/ftpData.o b/build/modules/ftpData.o index 1177c7724a930fa40acd6de93de3ee3fb0d18521..cfb23d8add769e63e3df81089d4e6c24cc8895bc 100644 GIT binary patch delta 8508 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 delta 8380 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 YU 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 delta 14382 zcmZ`=33OFO((Zl%#wV;`}XbJdp&(T zV)5aKskMBI3v+5uDdQ_u4y3;t42&!b7s_mw8q!KsgXI+-Em3~-HzgsXRJF)aW8;Mw zy`%i(^(CPwYNZV1E-1UVgs=4@kX^PJw5gn!dnjhD^gUM+vdbQVHkG#dmPHtsFFAtb zS5&ALQGRq(ZcgRq(sxLbd&eUh{uH}Z9)K)=H8|>T4c&E&>;Tyj8jkvF zblW%Vbr@H#CJd^la#z;t7$HA|M;gTY9;=)CWP_Pyqh2Z}gkK0D;{Ngy9C)c;?N05= z3GseBL7k}_Ey@fOLSQ-ak3xtDQD(Ccq8AKk5htg^gcgs72bB{d3Y)~o_1yJ9vG??H z!l?fZ%h4i&bl;e7_`~D+)-7*1{jnR4W&rX_dyx&qa;#T=6U(){@*pff?-%0FLd2zG zCE0Uid|FnBj@;ScBc`+HxVPJt7b322x`-Q!1IMx8(1$fHFT`V5d_EL6ViCOa^6V-& z+-6=HCShF7qP@!Gb`Wf-Wjjb|*{mv#b#-0OG5agO5J$N(XAvxF8DFle(T#2wH-91= zYx$mR2d^a62%~y;R@{J*caQf}Hew~6E1R)0iYs4WWhz&;U}XVUwqj*9S9V}NcW@Byfe znx@mIrN+x;kdPV|xv8>=>s4r#TH80aG7L>k^*ve{@>6Su|6NIlrzy7a*jYr@mUqQ7 zST9l8Xmz77BC-y$r_KY{DoA!Qfcgn(AH14kDXL7RW9lyN>K0vM0%2Ci@Fn zKjgioWEHZt$u=h2nrs)cZ;}m@okDg2*&MPv(dy$Ry?mwzy`^BT*$e1}=piLw*IN~( zfaXIKqz{RY35mhI-ySmf&6fuC>Rl()s8NG@xeJG^khz0~g`(vZDEvU_2)c6#;S)lX z6hhqcltm;Ij8RfU-dGiA;c)K3oiVHQ76+}*7k56$u}UAbytt6>{pS5nLTId#*HBlN z=Pkta-HsJB}9f%kUd_>r^u$F z)p+y9ANCTm+GY}G3E6#QucA#UTmJv&S7Y3ar5}%_rp3oi(2U|4=rKXb_GI57JBRER zvX>xhg3>pvwzaLc_lQ#q(k3dM68$iqXDv<#^vb`J{g~`lvggo-f3sTEw^~KBL!z9C?83HMHRX9t?QRJ!eH#lX0W7jN^I6!AzzgW%eZhVk7 zLrFjMn2sls9@AAQO?j!nhW3PXU>pN&XsxSW*h+tBwZc_2fcu>fdDE3%YUOjV+XgPIx8bu3N$`b~z+8A|te z6!x?75XhLRdW5aE_U5v%7<`SR_8qHja_}D+&&OWEUs`I7tXVi>wZaTntmVz(Ne8db zyT@5e=MR?7cg658d$_k7G`1RChrmpwZ&`9LSl+wj{mt?=vAiWA=R>8V^uq;*6R-Hs zxylflrR1YfFjML3%)!ZSYAMtrg^;CygO5cTJ`13>O{}&rT5Xfb`zOoW%<{HJZ>W>y zZEktHSv_KBzwpU$5Xf07G{o_mt$A88_#BF4fz=oO6>M59M{kcD%lne$-QZ}N-_~OA zgAQ(bIYBXeZS~T^>g6hp>p#V`jj!VMiYpcK&&Ou*6v)|1h9ERs$^KN%z_MOg41Wc2 za*6)~m2Xiw1`6jW84HRm%7dspgvt}BoP}k*s@lVG z*=P7Kh?7VB(^USJ`1dTn{r5sCD4M5a6cm1pr#~#$#xlfz90k`tjtaGY)a%F0m6`uE z#xZv-t#Q9ft=oJY9X8C~7Bk6W_IH#k@-z%~aHBKA(n+>-!VaIWW}oQ60ksS`d3G;Vb{8pBJfrrEGc>#Hfl3X4#<||nVvga$=h{`Wg zxfhlDQF#KDv#9(jm6uU@JC%1+`By4S$jnx{COyjZ4&!)1nPbn>=#|N2`=Sk}TTC2p z630Kx!Oh)nl!c?RnT+v_;cX zn1X|xg8PiSDJTi@GbO8|)h*~*ueXi2wi1y_oIb=EUkoRUIP1`cPBO<#=QWPuTdS>o z$iGg?<#91ue+Ux^AT}2I~+=j5Mn2B zjuGdU!zqcW6GHq-oJh!6tn|}(C$wVrGp9aeFIJ(KEw8}9l^yoW4hoMn^Y6V&e|%WL=hy`}kQtKYk%S(P5tKYS2j^8YyGEm69@<+U{%LC#X# z855Q&-Pht^ROL7u8K@9?&+^&|V;Dzr8!M`rq`ARrg_~p)k-`8{$gmXJSqh^_A=^6mO^_=;V>!u$5E)j*}hE*rJ-oKl4T)tg_6}EVTIC7=ncceQ7h)Z3~4Kr z?0|gz8gtOq!RoOeDNJw_s<8r)!Xi>wVkx|8DQqN#Gmb(6D-@E#O;WgRDRi_HN8uL04z1$AzSj?K#r0XAv*^j@Q2nYSqlns zlup4rq_w(InV&}d*O9N^U=F&vSv?LVg;|b58&;T43ad$Bou$y-QrJZb7aaxjaOnq9 zxK9cZPkC{ocn?b<2J+S@{VaRU>bmZcMPn#hqhxEyTBBqd1lB6qo%op!{}qmT9Pwu( zU(dIC>}mD5k`#_O3Y}Qt6e(OGg&!=1UY5c=Qh1bJNj|);yRt$JC|Ijx1ISpbbYteA ztGA`l3bNNK-QQ8@$qH|g!uzB!&QkcBrSKssY;qL(utFXw6cFd8!!Zxc?-C~x($*^- zO|MhE4fzeLm&YJ;z0%FtYi7sX{gWYYosykMp{u3P$5I$b3X>g$fgI;dQuv${mRkya zErl;g;hdw8!3q~h;U`kKYbo@z6#US9gVMF>b??LZ8p;awAY+4)FM-^M_tUJ6O1?_` z;ST>D=8qzN7V`B>=AdhU)#E}^$afS*vBCjTI7OUa9L{Lw2uRzcWB`gbDp?saHz^qp z37c@IP1vOL8~iR2$@VE_0(lo(-a%GWtI!)hSd8~1<2cKBPd5kO?;Ly!-zP2?qjTNi zx90=&Ef4QZLEB;7bsCsQdA}9YK`H$6pC{5je3XOG7x>g9?+XPtzGx=fLTHPUBOzr= zl57iETa+vXOSS~{Q~ZVwkJ|VvgGVMI#J5niMaf0r-oYZ0jaVL&mmlvN9BGQ`)@G>CI2-O)tkmZcoxb@f*w;j<+}T*q$WE z!jkQ$3AnV;f|nu6#{udxe}V^DedQ%E@vI) z2FS=$I-he=h7au~+Le%PwT*YY8=xR>m>dl$JCo#VkhL>O&Vw^Mhso-YmalXP)-<<% zquCxZ^Ob&{Kcr~Q3*LCQLQcMtQ(<3zP~YOwnM==b{tAIz!(=3k+m$3&L&2_~d=}*H zpu7m7-AcBAl-)^kJ7nz+$_tRUJ4v1f|DK@lemVHVo;rF2cYGd?wN^q$LFOJM$G}H> zf_gG@Dwg^^#}9>jl&;OG3_9Lp5ZK#I&W4P=LD?I!_Xg!|DA=1MhlBpIn~vitugTYg z8BBS|`VzmuSn_3(%z~mXm5c`ez9bojw0-!BwC}#4_90maami_$4>|kP18kkv{Sjak%BoD!v z13`TauRi>7bcQns5)LXogwbfnTNcs|D*Xb-Q_b;~hs=XPnFl!sgR&JA9#rxK+&LJO zPr#Fhg0d@gIuz7jaVD2LZD&CCp`eU~fFA7t=Es$s1f7lt z^&Q@s_B)(akbOK!c89CSgL)bJ%3G?*i!Y)nnn_4yw4nbO$%z zwEV-tOS1Y{2QTFM3ibW(+1aJ=`~+up%{;v9B! za39|Z1~~ZFTp#Y>hgs)+4~M-c1L3I-=Sf~Gb6uP-y2TDYhwq(h9sFgk?{M$|taH%A z!w;6*Wp$el=Q{mo@_X%D*gB`pHCob&ZX7SH+aIK@J+|tl6U^!9Q=7cmq+nI&}4NtXP}CMf67a(hJ$xz-FhBg z`+-m)H)!fKxW^k?E6Djq=?;$f-#qx&q3|0O9^`lf9Na$~+-#EL9DD=wXF7N+FOg3i z{B4fyu!lb!%pM-)8K;36{YA+BR)w!S-XgwH{KPokCom%Osc;qk8qDPWIL}oL#tnZf zzhrvB;os&fAl1VkUbfZP@tV_MDG%dyrvvjX_y~ue&ioG`>z_(balAMAvYiWg|5W-@ zNAo7Xan6ULf2!~?$J?FXikc7NObU$VZHGUQUsjgp&(2(a6$ih=`)Q(w!i-SjH3}i>LQcO5aPU&1 zuhx0Ed8w&Ch%W<$5L3y~`f{RwJ0m?|#N~#*j^|;`<);4XuXwb-!JW$u{bTXzs=#lJ zP_6ZqL|<+n{9jKf%!yYLeH;70nk!9x>F43*m8Ska_$XBfu^Jj(ZRn4E+pCp_5my`f OublU4+q}RoMEwr~uhVA$ diff --git a/build/uFTP b/build/uFTP index a8be5e8a9dabd57e472bec0dfafcd17529e1552d..7741522ccb7592e4f392c740c266cf1657936773 100755 GIT binary patch delta 83760 zcmb?^d0f;+*#9K3+{=QnuzxnjW-^6)(YNufe4CLTr6T;<0?AZ;8oGK z)_PRDttVP5YOUf?#jB!Kn=RI2wUt`k`F);AvP9bVegFCG=cAkN_c`X7XC{-GBs)|W zXp6UN3k~(kqY(YXOJ69Z@5*Ld6U1c<#mYBAMv8%T0<>0=8`p+WUiq#DAwuXJ_GbL+ zMaf!GvR2eu+>!YpEIv~*uKV3XBN_L=-!KEh{-+`;FR(GT7{53*d?co404Qj2W~Y&NWkB)?U`x#IqT1yhyStB)qrCiqHv|F zfq6ukBqswdaWF8Ksg?u2;_Q!;JPg>&F^U;Mxj(61hNA&*b1~pzM+1{cnR3S{#uGD| zNFj=GaKimPeeg_2e;n^+z&RQNGY+rRL^6jdm*;9=_TuN7NTv#hIruZl)bR;C(5WZ$ z4|P`JWLV{Hz?Du0W;qo;z~0Vd@Di;7FL91ynqhA*1HR(i6Q^hlOfimjiDW*-sVo>x<}#^7X#h~0qYD*64k7BkHQ(w1{~{Q zU=C8I$jN{YI~$lxS|KO;|1m15^e`~Nv?MRBf%#R+o7TXT!V%*`HFwbeuYo>u29EI( zHv<;6QA`{~oW{WH!p}7{I%YA|n~zs|j$s1n@i?kw)TJjk17apouF&0pGrU|)=cF#Ld|EgmLGVj-dOQ0eHu9duR|Hbq_bvUjaQL_)5M9>vS&@+x5C%iVc#16Fb3~8)C*t` zgO0Kgj�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

hN7;q5DZqIH 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 diff --git a/ftpCommandElaborate.c b/ftpCommandElaborate.c index b6c8be9..4b39d03 100644 --- a/ftpCommandElaborate.c +++ b/ftpCommandElaborate.c @@ -159,16 +159,19 @@ int parseCommandPass(ftpDataType * data, int socketId) printf("\nLogin try with user %s, password %s", data->clients[socketId].login.name.text, thePass); - //PAM AUTH METHOD - loginCheck( data->clients[socketId].login.name.text, thePass, &data->clients[socketId].login, &data->clients[socketId].memoryTable); - if (data->clients[socketId].login.userLoggedIn == 1) + //PAM AUTH METHOD IF ENABLED + if (data->ftpParameters.pamAuthEnabled == 1) { - printf("\n User logged with PAM ok!"); - returnCode = socketPrintf(data, socketId, "s", "230 Login Ok.\r\n"); - if (returnCode <= 0) - return FTP_COMMAND_PROCESSED_WRITE_ERROR; + loginCheck( data->clients[socketId].login.name.text, thePass, &data->clients[socketId].login, &data->clients[socketId].memoryTable); + if (data->clients[socketId].login.userLoggedIn == 1) + { + printf("\n User logged with PAM ok!"); + returnCode = socketPrintf(data, socketId, "s", "230 Login Ok.\r\n"); + if (returnCode <= 0) + return FTP_COMMAND_PROCESSED_WRITE_ERROR; - return 1; + return 1; + } } @@ -742,10 +745,13 @@ int parseCommandCwd(ftpDataType * data, int socketId) thePath = getFtpCommandArg("CWD", data->clients[socketId].theCommandReceived, 0); + printf("\ncdw requested path: %s", thePath); + if (strlen(thePath) > 0) { //printf("Memory data address 1st call : %lld", &data->clients[socketId].memoryTable); isSafePath = getSafePath(&theSafePath, thePath, &data->clients[socketId].login, &data->clients[socketId].memoryTable); + printf("\ncdw safe path: %s", theSafePath.text); } if (isSafePath == 1) @@ -753,42 +759,37 @@ int parseCommandCwd(ftpDataType * data, int socketId) printf("\n The Path requested for CWD IS:%s", theSafePath.text); setDynamicStringDataType(&absolutePathPrevious, data->clients[socketId].login.absolutePath.text, data->clients[socketId].login.absolutePath.textLen, &data->clients[socketId].memoryTable); setDynamicStringDataType(&ftpPathPrevious, data->clients[socketId].login.ftpPath.text, data->clients[socketId].login.ftpPath.textLen, &data->clients[socketId].memoryTable); - - if (theSafePath.text[0] != '/') - { - if (data->clients[socketId].login.absolutePath.text[data->clients[socketId].login.absolutePath.textLen-1] != '/') - appendToDynamicStringDataType(&data->clients[socketId].login.absolutePath, "/", 1, &data->clients[socketId].memoryTable); - if (data->clients[socketId].login.ftpPath.text[data->clients[socketId].login.ftpPath.textLen-1] != '/') - appendToDynamicStringDataType(&data->clients[socketId].login.ftpPath, "/", 1, &data->clients[socketId].memoryTable); + cleanDynamicStringDataType(&data->clients[socketId].login.ftpPath, 0, &data->clients[socketId].memoryTable); + cleanDynamicStringDataType(&data->clients[socketId].login.absolutePath, 0, &data->clients[socketId].memoryTable); + setDynamicStringDataType(&data->clients[socketId].login.absolutePath, theSafePath.text, theSafePath.textLen, &data->clients[socketId].memoryTable); - appendToDynamicStringDataType(&data->clients[socketId].login.absolutePath, theSafePath.text, theSafePath.textLen, &data->clients[socketId].memoryTable); - appendToDynamicStringDataType(&data->clients[socketId].login.ftpPath, theSafePath.text, theSafePath.textLen, &data->clients[socketId].memoryTable); - } - else if (theSafePath.text[0] == '/') - { - cleanDynamicStringDataType(&data->clients[socketId].login.ftpPath, 0, &data->clients[socketId].memoryTable); - cleanDynamicStringDataType(&data->clients[socketId].login.absolutePath, 0, &data->clients[socketId].memoryTable); + if (data->clients[socketId].login.absolutePath.textLen == data->clients[socketId].login.homePath.textLen) + { + setDynamicStringDataType(&data->clients[socketId].login.ftpPath, "/", 1, &data->clients[socketId].memoryTable); + } + else if (data->clients[socketId].login.absolutePath.textLen > data->clients[socketId].login.homePath.textLen) + { + char *theFtpPathPointer = data->clients[socketId].login.absolutePath.text; + theFtpPathPointer += data->clients[socketId].login.homePath.textLen; + if (theFtpPathPointer[0] != '/') + { + setDynamicStringDataType(&data->clients[socketId].login.ftpPath, "/", 1, &data->clients[socketId].memoryTable); + appendToDynamicStringDataType(&data->clients[socketId].login.ftpPath, theFtpPathPointer, strlen(theFtpPathPointer), &data->clients[socketId].memoryTable); + } + else + { + setDynamicStringDataType(&data->clients[socketId].login.ftpPath, theFtpPathPointer, strlen(theFtpPathPointer), &data->clients[socketId].memoryTable); + } + } - setDynamicStringDataType(&data->clients[socketId].login.ftpPath, theSafePath.text, theSafePath.textLen, &data->clients[socketId].memoryTable); - setDynamicStringDataType(&data->clients[socketId].login.absolutePath, data->clients[socketId].login.homePath.text, data->clients[socketId].login.homePath.textLen, &data->clients[socketId].memoryTable); - if (strlen(theSafePath.text)> 0) - { - char *theDirPointer = theSafePath.text; - - if (data->clients[socketId].login.absolutePath.text[data->clients[socketId].login.absolutePath.textLen-1] == '/') - { - while(theDirPointer[0] == '/') - theDirPointer++; - } - - if (strlen(theDirPointer) > 0) - appendToDynamicStringDataType(&data->clients[socketId].login.absolutePath, theDirPointer, strlen(theDirPointer), &data->clients[socketId].memoryTable); - } - } + printf("\ndata->clients[socketId].login.absolutePath = %s", data->clients[socketId].login.absolutePath.text); + printf("\ndata->clients[socketId].login.ftpPath = %s", data->clients[socketId].login.ftpPath.text); + printf("\nChecking the directory: %s", data->clients[socketId].login.absolutePath.text); + fflush(0); + - printf("\nCheck the directory: %s", data->clients[socketId].login.absolutePath.text); if (FILE_IsDirectory(data->clients[socketId].login.absolutePath.text) == 1 ) { @@ -882,17 +883,49 @@ int parseCommandMkd(ftpDataType * data, int socketId) theDirectoryFilename = getFtpCommandArg("MKD", data->clients[socketId].theCommandReceived, 0); cleanDynamicStringDataType(&mkdFileName, 1, &data->clients[socketId].memoryTable); - isSafePath = getSafePath(&mkdFileName, theDirectoryFilename, &data->clients[socketId].login, &data->clients[socketId].memoryTable); if (isSafePath == 1) { - int returnStatus; - returnStatus = mkdir(mkdFileName.text, S_IRWXU | S_IRWXG | S_IRWXO); + if ((checkParentDirectoryPermissions(mkdFileName.text, data->clients[socketId].login.ownerShip.uid, data->clients[socketId].login.ownerShip.gid) & FILE_PERMISSION_W) == FILE_PERMISSION_W) + { + int returnStatus; + returnStatus = mkdir(mkdFileName.text, S_IRWXU | S_IRWXG | S_IRWXO); - if (returnStatus == -1) - { - returnCode = socketPrintf(data, socketId, "sss", "550 error while creating directory ", theDirectoryFilename, "\r\n"); + if (returnStatus == -1) + { + returnCode = socketPrintf(data, socketId, "sss", "550 error while creating directory ", theDirectoryFilename, "\r\n"); + if (returnCode <= 0) + { + functionReturnCode = FTP_COMMAND_PROCESSED_WRITE_ERROR; + } + else + { + functionReturnCode = FTP_COMMAND_PROCESSED; + } + } + else + { + if (data->clients[socketId].login.ownerShip.ownerShipSet == 1) + { + returnStatus = FILE_doChownFromUidGid(mkdFileName.text, data->clients[socketId].login.ownerShip.uid, data->clients[socketId].login.ownerShip.gid); + } + + returnCode = socketPrintf(data, socketId, "sss", "257 \"", theDirectoryFilename, "\" : The directory was successfully created\r\n"); + + if (returnCode <= 0) + { + functionReturnCode = FTP_COMMAND_PROCESSED_WRITE_ERROR; + } + else + { + functionReturnCode = FTP_COMMAND_PROCESSED; + } + } + } + else + { + returnCode = socketPrintf(data, socketId, "sss", "550 no permition to create directory ", theDirectoryFilename, "\r\n"); if (returnCode <= 0) { functionReturnCode = FTP_COMMAND_PROCESSED_WRITE_ERROR; @@ -901,25 +934,8 @@ int parseCommandMkd(ftpDataType * data, int socketId) { functionReturnCode = FTP_COMMAND_PROCESSED; } - } - else - { - if (data->clients[socketId].login.ownerShip.ownerShipSet == 1) - { - returnStatus = FILE_doChownFromUidGid(mkdFileName.text, data->clients[socketId].login.ownerShip.uid, data->clients[socketId].login.ownerShip.gid); - } + } - returnCode = socketPrintf(data, socketId, "sss", "257 \"", theDirectoryFilename, "\" : The directory was successfully created\r\n"); - - if (returnCode <= 0) - { - functionReturnCode = FTP_COMMAND_PROCESSED_WRITE_ERROR; - } - else - { - functionReturnCode = FTP_COMMAND_PROCESSED; - } - } } else { @@ -1200,15 +1216,24 @@ int parseCommandRnto(ftpDataType * data, int socketId) if (FILE_IsFile(data->clients[socketId].renameFromFile.text) == 1 || FILE_IsDirectory(data->clients[socketId].renameFromFile.text) == 1) { - returnCode = rename (data->clients[socketId].renameFromFile.text, data->clients[socketId].renameToFile.text); - if (returnCode == 0) - { - returnCode = socketPrintf(data, socketId, "s", "250 File successfully renamed or moved\r\n"); - } - else - { - returnCode = socketPrintf(data, socketId, "s", "503 Error Renaming the file\r\n"); - } + + if ((checkUserFilePermissions(data->clients[socketId].renameFromFile.text, data->clients[socketId].login.ownerShip.uid, data->clients[socketId].login.ownerShip.gid) & FILE_PERMISSION_W) == FILE_PERMISSION_W && + (checkParentDirectoryPermissions(data->clients[socketId].renameToFile.text, data->clients[socketId].login.ownerShip.uid, data->clients[socketId].login.ownerShip.gid) & FILE_PERMISSION_W) == FILE_PERMISSION_W) + { + returnCode = rename (data->clients[socketId].renameFromFile.text, data->clients[socketId].renameToFile.text); + if (returnCode == 0) + { + returnCode = socketPrintf(data, socketId, "s", "250 File successfully renamed or moved\r\n"); + } + else + { + returnCode = socketPrintf(data, socketId, "s", "503 Error Renaming the file\r\n"); + } + } + else + { + returnCode = socketPrintf(data, socketId, "s", "550 No permissions to rename the file\r\n"); + } } else { diff --git a/ftpData.c b/ftpData.c index 3f0a432..4c1e02b 100644 --- a/ftpData.c +++ b/ftpData.c @@ -93,6 +93,8 @@ void setDynamicStringDataType(dynamicStringDataType *dynamicString, char *theStr } } + + int getSafePath(dynamicStringDataType *safePath, char *theDirectoryName, loginDataType *loginData, DYNMEM_MemoryTable_DataType **memoryTable) { #define STRING_SIZE 4096 diff --git a/ftpData.h b/ftpData.h index 11bf3b9..7c1f0aa 100644 --- a/ftpData.h +++ b/ftpData.h @@ -85,9 +85,9 @@ struct ftpParameters int maximumIdleInactivity; int maximumConnectionsPerIp; int maximumUserAndPassowrdLoginTries; - char certificatePath[MAXIMUM_INODE_NAME]; char privateCertificatePath[MAXIMUM_INODE_NAME]; + int pamAuthEnabled; } typedef ftpParameters_DataType; struct dynamicStringData @@ -120,10 +120,10 @@ struct ipData struct workerData { - #ifdef OPENSSL_ENABLED - SSL *serverSsl; - SSL *clientSsl; - #endif + #ifdef OPENSSL_ENABLED + SSL *serverSsl; + SSL *clientSsl; + #endif int threadIsAlive; int threadHasBeenCreated; @@ -262,6 +262,7 @@ struct ftpListData void cleanLoginData(loginDataType *loginData, int init, DYNMEM_MemoryTable_DataType **memoryTable); void cleanDynamicStringDataType(dynamicStringDataType *dynamicString, int init, DYNMEM_MemoryTable_DataType **memoryTable); + void setDynamicStringDataType(dynamicStringDataType *dynamicString, char *theString, int stringLen, DYNMEM_MemoryTable_DataType **memoryTable); int getSafePath(dynamicStringDataType *safePath, char *theDirectoryName, loginDataType *theHomePath, DYNMEM_MemoryTable_DataType **memoryTable); void appendToDynamicStringDataType(dynamicStringDataType *dynamicString, char *theString, int stringLen, DYNMEM_MemoryTable_DataType **memoryTable); diff --git a/ftpServer.c b/ftpServer.c index c6d9d38..b6dc7f2 100644 --- a/ftpServer.c +++ b/ftpServer.c @@ -278,6 +278,20 @@ void *connectionWorkerHandle(void * socketId) ftpData.clients[theSocketId].fileToStor.textLen > 0) { + if ((checkParentDirectoryPermissions(ftpData.clients[theSocketId].fileToStor.text, ftpData.clients[theSocketId].login.ownerShip.uid, ftpData.clients[theSocketId].login.ownerShip.gid) & FILE_PERMISSION_W) != FILE_PERMISSION_W) + { + returnCode = socketPrintf(&ftpData, theSocketId, "s", "550 No permissions to write the file\r\n"); + + if (returnCode <= 0) + { + ftpData.clients[theSocketId].closeTheClient = 1; + printf("\n Closing the client 6"); + pthread_exit(NULL); + } + + break; + } + #ifdef LARGE_FILE_SUPPORT_ENABLED //#warning LARGE FILE SUPPORT IS ENABLED! ftpData.clients[theSocketId].workerData.theStorFile = fopen64(ftpData.clients[theSocketId].fileToStor.text, "wb"); @@ -883,13 +897,12 @@ static int processCommand(int processingElement) { // printf("\nRNFR command received"); toReturn = parseCommandRnfr(&ftpData, processingElement); - } else if(compareStringCaseInsensitive(ftpData.clients[processingElement].theCommandReceived, "RNTO", strlen("RNTO")) == 1) { // printf("\nRNTO command received"); toReturn = parseCommandRnto(&ftpData, processingElement); - } + } else if(compareStringCaseInsensitive(ftpData.clients[processingElement].theCommandReceived, "SIZE", strlen("SIZE")) == 1) { //printf("\nSIZE command received"); diff --git a/library/auth.c b/library/auth.c index 8bfb661..9d88abc 100644 --- a/library/auth.c +++ b/library/auth.c @@ -85,11 +85,11 @@ void loginCheck(char *name, char *password, loginDataType *login, DYNMEM_MemoryT { //printf("Authenticate with %s - %s through system\n", login, password); setDynamicStringDataType(&login->name, name, strlen(name), &*memoryTable); - //setDynamicStringDataType(&login->homePath, pass->pw_dir, strlen(pass->pw_dir), &*memoryTable); - setDynamicStringDataType(&login->homePath, "/", 1, &*memoryTable); + setDynamicStringDataType(&login->homePath, pass->pw_dir, strlen(pass->pw_dir), &*memoryTable); + //setDynamicStringDataType(&login->homePath, "/", 1, &*memoryTable); setDynamicStringDataType(&login->absolutePath, pass->pw_dir, strlen(pass->pw_dir), &*memoryTable); + setDynamicStringDataType(&login->ftpPath, "/", strlen("/"), &*memoryTable); - /* if (login->homePath.text[login->homePath.textLen-1] != '/') { appendToDynamicStringDataType(&login->homePath, "/", 1, &*memoryTable); @@ -98,9 +98,9 @@ void loginCheck(char *name, char *password, loginDataType *login, DYNMEM_MemoryT if (login->absolutePath.text[login->absolutePath.textLen-1] != '/') { appendToDynamicStringDataType(&login->absolutePath, "/", 1, &*memoryTable); - }*/ + } - setDynamicStringDataType(&login->ftpPath, "/", strlen("/"), &*memoryTable); + //setDynamicStringDataType(&login->ftpPath, "/", strlen("/"), &*memoryTable); login->ownerShip.uid = pass->pw_gid; login->ownerShip.gid = pass->pw_uid; diff --git a/library/configRead.c b/library/configRead.c index 7f8a62f..07e3bc4 100644 --- a/library/configRead.c +++ b/library/configRead.c @@ -475,6 +475,18 @@ static int parseConfigurationFile(ftpParameters_DataType *ftpParameters, DYNV_Ve // printf("\nSINGLE_INSTANCE parameter not found in the configuration file, using the default value: %d", ftpParameters->singleInstanceModeOn); } + ftpParameters->pamAuthEnabled = 0; + searchIndex = searchParameter("ENABLE_PAM_AUTH", parametersVector); + if (searchIndex != -1) + { + if(compareStringCaseInsensitive(((parameter_DataType *) parametersVector->Data[searchIndex])->value, "true", strlen("true")) == 1) + ftpParameters->pamAuthEnabled = 1; + } + else + { + // printf("\nENABLE_PAM_AUTH parameter not found in the configuration file, using the default value: %d", ftpParameters->pamAuthEnabled); + } + ftpParameters->maximumIdleInactivity = 3600; searchIndex = searchParameter("IDLE_MAX_TIMEOUT", parametersVector); if (searchIndex != -1) diff --git a/library/connection.c b/library/connection.c index 2e794a5..3636ad3 100644 --- a/library/connection.c +++ b/library/connection.c @@ -52,7 +52,7 @@ int socketPrintf(ftpDataType * ftpData, int clientId, const char *__restrict __f int theStringSize = 0, theCommandSize = 0; memset(&theBuffer, 0, SOCKET_PRINTF_BUFFER); memset(&commandBuffer, 0, COMMAND_BUFFER); - //printf("\nWriting to socket id %d, TLS %d: ", clientId, ftpData->clients[clientId].tlsIsEnabled); + printf("\nWriting to socket id %d, TLS %d: ", clientId, ftpData->clients[clientId].tlsIsEnabled); pthread_mutex_lock(&ftpData->clients[clientId].writeMutex); @@ -140,7 +140,7 @@ int socketPrintf(ftpDataType * ftpData, int clientId, const char *__restrict __f #endif } - //printf("\n%s", commandBuffer); + printf("\n%s", commandBuffer); pthread_mutex_unlock(&ftpData->clients[clientId].writeMutex); diff --git a/library/fileManagement.c b/library/fileManagement.c index 0754b67..3dce163 100644 --- a/library/fileManagement.c +++ b/library/fileManagement.c @@ -561,12 +561,42 @@ char * FILE_GetListPermissionsString(char *file, DYNMEM_MemoryTable_DataType ** return modeval; } +int checkParentDirectoryPermissions(char *fileName, int uid, int gid) +{ + char theFileName[4096]; + memset(theFileName, 0, 4096); + + int i; + int theFileNameLen = 0; + int theLen = strlen(fileName); + int theParentLen = 0; + + for (i = 0; i < theLen; i++) + { + if (fileName[i] == '/') + { + theParentLen = i; + } + } + + for (i = 0; i < theParentLen; i++) + { + if (i < 4096) + theFileName[theFileNameLen++] = fileName[i]; + } + + printf ("\n checking parent permissions on : %s", theFileName); + fflush(0); + return checkUserFilePermissions(theFileName, uid, gid); +} + int checkUserFilePermissions(char *fileName, int uid, int gid) { if (uid == 0 || gid == 0) { + printf("\n User is root"); return FILE_PERMISSION_RW; } @@ -591,16 +621,21 @@ int checkUserFilePermissions(char *fileName, int uid, int gid) if (info.st_uid == uid || info.st_gid == gid) { + printf("\n User is owner"); filePermissions = FILE_PERMISSION_RW; } else { mode_t perm = info.st_mode; - if ((perm & S_IROTH)) + if ((perm & S_IROTH)){ + printf("\nfile can be readen"); filePermissions |= FILE_PERMISSION_R; + } - if ((perm & S_IWOTH)) + if ((perm & S_IWOTH)){ + printf("\nfile can be written"); filePermissions |= FILE_PERMISSION_W; + } } return filePermissions; diff --git a/library/fileManagement.h b/library/fileManagement.h index f332b1b..224a4d4 100644 --- a/library/fileManagement.h +++ b/library/fileManagement.h @@ -81,5 +81,6 @@ void FILE_checkAllOpenedFD(void); int fd_is_valid(int fd); int checkUserFilePermissions(char *fileName, int uid, int gid); + int checkParentDirectoryPermissions(char *fileName, int uid, int gid); #define GEN_FILE_MANAGEMENT_TYPES #endif diff --git a/uftpd.cfg b/uftpd.cfg index 463e9ba..e43b2cc 100644 --- a/uftpd.cfg +++ b/uftpd.cfg @@ -34,6 +34,10 @@ MAX_CONNECTION_TRY_PER_IP = 10 CERTIFICATE_PATH=/etc/uFTP/cert.pem PRIVATE_CERTIFICATE_PATH=/etc/uFTP/key.pem +#Enable system authentication based on /etc/passwd +#and /etc/passwd +ENABLE_PAM_AUTH = true + #USERS #START FROM USER 0 TO XXX USER_0 = username