Rpath
કમ્પ્યુટિંગમાં, rpath એક્ઝેક્યુટેબલ ફાઇલ અથવા લાઇબ્રેરીમાં હાર્ડ-કોડેડ રન-ટાઇમ સર્ચ પાથને નિયુક્ત કરે છે. ડાયનેમિક લિંકિંગ લોડર જરૂરી લાઈબ્રેરીઓ શોધવા માટે આરપાથનો ઉપયોગ કરે છે. ખાસ કરીને, તે વહેંચાયેલ લાઈબ્રેરીઓના માર્ગને એક્ઝેક્યુટેબલ (અથવા અન્ય વહેંચાયેલ લાઈબ્રેરી) ના હેડરમાં એન્કોડ કરે છે. આ RPATH હેડર મૂલ્ય (એક્ઝિક્યુટેબલ અને લિન્કેબલ ફોર્મેટ હેડર ધોરણોમાં નામ આપવામાં આવ્યું છે) સિસ્ટમ ડિફોલ્ટ ડાયનેમિક લિન્કિંગ સર્ચ પાથને ઓવરરાઇડ અથવા સપ્લિમેન્ટ કરી શકે છે. એક્ઝેક્યુટેબલ અથવા વહેંચાયેલ લાઈબ્રેરીનો rpath એ ELF એક્ઝેક્યુટેબલ અથવા વહેંચાયેલ લાઈબ્રેરીઓના. ગતિશીલ વિભાગમાં વૈકલ્પિક એન્ટ્રી છે, જેમાં DT _ RPATH પ્રકાર છે, જેને DT _ RPATH એટ્રિબ્યુટ કહેવાય છે. તેને લિંકર દ્વારા લિંક સમયે ત્યાં સંગ્રહિત કરી શકાય છે. ચરપાથ અને પેચેલ્ફ જેવા સાધનો પછીથી એન્ટ્રી બનાવી અથવા તેમાં ફેરફાર કરી શકે છે. ડાયનેમિક લિંકર દ્વારા DT _ RPATH એન્ટ્રીનો ઉપયોગ ELF માટે વિવિધ ડાયનેમિક લિંકર DT _ RPATH એટ્રિબ્યુટનો ઉપયોગ વિવિધ રીતે કરે છે. જી. એન. યુ. <આઇ. ડી. 1> જી. એન. યુ. સી. લાઈબ્રેરીનું ડાયનેમિક લિંકર વહેંચાયેલ લાઈબ્રેરીઓને નીચેના સ્થળોએ ક્રમમાં શોધે છેઃ દ્વિસંગીના ડી. ટી. _ આર. પી. એ. ટી. એચ. ડાયનેમિક સેક્શન એટ્રિબ્યુટમાં (કોલોન-સેપરેટેડ) પાથ જો હાજર હોય અને ડી. ટી. _ આર. એન. પી. એ. ટી. એચ. એટ્રિબ્યુટ અસ્તિત્વમાં નથી. પર્યાવરણ ચલ LD _ LIBRARY _ PATH માં (કોલોન-સેપરેટેડ) પાથ, જ્યાં સુધી એક્ઝેક્યુટેબલ સેટુઇડ/સેટગિડ દ્વિસંગી ન હોય, તે કિસ્સામાં તેને અવગણવામાં આવે છે. LD _ LIBRARY _ PATH ને ડાયનેમિક લિંકરને-- library-path (દા. ત. LIBRARY _ PATH) વિકલ્પ સાથે કૉલ કરીને ઓવરરાઇડ કરી શકાય છે. / lib/ld-linux.so.2-- લાઈબ્રેરી-પાથ $હોમ/માયલિબ્સ માયપ્રોગ્રામ). જો હાજર હોય તો દ્વિસંગીના DT _ RUNPATH ગતિશીલ વિભાગમાં (કોલોન-સેપરેટેડ) પાથ. ldConfig કેશ ફાઇલ (ઘણીવાર/et/ld. so. કેશ પર સ્થિત) પર આધારિત શોધ જેમાં અગાઉ સંવર્ધિત પુસ્તકાલય માર્ગમાં મળી આવેલી ઉમેદવાર પુસ્તકાલયોની સંકલિત સૂચિ હોય છે (/et/ld. so. conf દ્વારા સુયોજિત). જો, જોકે, દ્વિસંગીને-z નોડેફોલ્ટલિબ લિંકર વિકલ્પ સાથે જોડવામાં આવ્યું હોય, તો મૂળભૂત લાઈબ્રેરી પાથમાં લાઈબ્રેરીઓ અવગણવામાં આવે છે. વિશ્વસનીય મૂળભૂત પાથ/lib માં, અને પછી/usr/lib. જો દ્વિસંગીને-z નોડેફોલ્ટલિબ લિંકર વિકલ્પ સાથે જોડવામાં આવ્યું હોય, તો આ પગલું છોડવામાં આવે છે. આ તમામ સ્થળોએ વહેંચાયેલ લાઇબ્રેરી શોધવામાં નિષ્ફળતા "વહેંચાયેલ ઓબ્જેક્ટ ફાઇલ ખોલી શકાતી નથીઃ આવી કોઈ ફાઇલ અથવા ડિરેક્ટરી નથી" ભૂલ ઉભી કરશે. નોંધોઃ સ્વયંને વાંચો-d <દ્વિસંગી નામ> | ગ્રેપ 'આર. * PATH 'દ્વિસંગી ફાઇલનું RPATH અથવા RUNPATH દર્શાવે છે. જીસીસીમાં, દાખલા તરીકે, કોઈ વ્યક્તિ આરપીએટીએચને-ડબલ્યુએલ,-આરપાથ,/કસ્ટમ/આરપાથ/દ્વારા સ્પષ્ટ કરી શકે છે. ડાયનેમિક લિંકરનો વિકલ્પ-- ઇનહિબિટ-આરપાથ લિસ્ટ તેને લિસ્ટમાં ઑબ્જેક્ટના નામોના DT _ RPATH અને DT _ RUNPATH એટ્રિબ્યુટ્સને અવગણવાની સૂચના આપે છે. LIST માં મુખ્ય પ્રોગ્રામને સ્પષ્ટ કરવા માટે, ખાલી શબ્દમાળા આપો. પર્યાવરણ ચલ LD _ PRELOAD દ્વારા નિર્દિષ્ટ પુસ્તકાલયો અને પછી/et/ld. so. preલોડમાં સૂચિબદ્ધ પુસ્તકાલયો શોધ શરૂ થાય તે પહેલાં લોડ થાય છે. આમ પ્રીલોડનો ઉપયોગ વિનંતી કરાયેલ લાઈબ્રેરીની કેટલીક (અથવા બધી) સામાન્ય કામગીરીઓને બદલવા માટે થઈ શકે છે, અથવા તેનો ઉપયોગ ફક્ત એવી લાઈબ્રેરી પૂરી પાડવા માટે થઈ શકે છે જે અન્યથા મળી ન હોત. સ્ટેટિક લાઈબ્રેરીઓ શોધવામાં આવે છે અને લિંક સમયે ELF ફાઇલમાં જોડવામાં આવે છે અને રન ટાઇમ પર શોધવામાં આવતી નથી. જી. એન. યુ. એલ. ડી. ની ભૂમિકા જી. એન. યુ. લિંકર (જી. એન. યુ. એલ. ડી.) એક સુવિધાનો અમલ કરે છે જેને તે "નવા-ડીટેગ્સ" કહે છે, જેનો ઉપયોગ એલ. ડી. _ એલ. આઈ. બી. આર. એ. આર. વાય. _ પાથ પર્યાવરણ ચલ કરતાં ઓછી પ્રાધાન્યતા ધરાવતા આરપાથને દાખલ કરવા માટે થઈ શકે છે. જો નવા-ડીટેગ્સની સુવિધા લિંકરમાં સક્રિય હોય (-- સક્ષમ-નવા-ડીટેગ્સ), તો જી. એન. યુ. એલ. ડી., ડી. ટી. આર. પી. એ. ટી. એચ. લક્ષણને સુયોજિત કરવા ઉપરાંત, તે જ શબ્દમાળામાં ડી. ટી. આર. એન. પી. એ. ટી. એચ. લક્ષણને પણ સુયોજિત કરે છે. રન ટાઇમ પર, જો ડાયનેમિક લિંકર DT _ RUNPATH એટ્રિબ્યુટ શોધે છે, તો તે DT _ RPATH એટ્રિબ્યુટના મૂલ્યની અવગણના કરે છે, જેની અસર LD _ LIBRARY _ PATH પહેલા તપાસવામાં આવે છે અને DT _ RUNPATH એટ્રિબ્યુટમાંના પાથ પછી જ શોધવામાં આવે છે. એલ. ડી. ડાયનેમિક લિંકર ડી. ટી. આર. પી. એ. ટી. એચ. થી વિપરીત, સંક્રમણશીલ નિર્ભરતા માટે ડી. ટી. આર. એન. પી. એ. ટી. એચ. સ્થાનો શોધતું નથી. લિંકરને-rpath નિર્દિષ્ટ કરવાને બદલે, પર્યાવરણ ચલ LD _ RUN _ PATH ને સમાન અસર પર સેટ કરી શકાય છે. સોલારિસ ld.so નું ડાયનેમિક લિંકર, ખાસ કરીને સનઓએસ 5.8 નું/lib/ld.so અને સમાન સિસ્ટમો DT _ RPATH લક્ષણને જોતા પહેલા LD _ LIBRARY _ PATH ચલમાં નિર્દિષ્ટ ડિરેક્ટરીઓમાં પુસ્તકાલયો જુએ છે. સન માઇક્રોસિસ્ટમ્સે સૌપ્રથમ ડાયનેમિક લાઈબ્રેરી લોડિંગની શરૂઆત કરી હતી. સન પછીથી એલ. ડી. માં આરપાથ વિકલ્પ ઉમેર્યો અને તેનો ઉપયોગ વધારાની સુરક્ષા સુવિધા તરીકે આવશ્યક પુસ્તકાલયોમાં કર્યો. જીએનયુ એલડીએ સન-સ્ટાઇલ ડાયનેમિક લાઈબ્રેરીઓને ટેકો આપવા માટે પણ આવું જ કર્યું હતું. ઉદાહરણ તરીકે $cc-શેર્ડ-Wl,-soname, termcap.so. 4,-rpath,/lib/termcap.so. 4-o termcap.so. 4 $objdump-x termcap.so. 4 Need libc.so.6 SONAME termcap.so. 4 RPATH/lib/termcap.so. 4 આ ઉદાહરણમાં, જીએનયુ અથવા સન એલડી (ld.so) જ્યાં સુધી ફાઇલ termcap.so/lib/માં ન હોય અને termcap.so. 4 નામ ન હોય ત્યાં સુધી તેને જરૂરી પ્રોગ્રામ માટે ટર્મકેપ લોડ કરવાનો ઇનકાર કરશે. તેની અવગણના કરવામાં આવે છે. જો/lib/termcap.so. 4 ને સુધારવા માટે દૂર કરવામાં આવે, તો શેલ મૃત્યુ પામે છે (કોઈ વૈકલ્પિક termcap.so લોડ કરી શકતું નથી અને બચાવ ડિસ્કની જરૂર છે, પણ જો નવી termcap.so. 4 પાસે RPATH/lib હોય, તો ld.so તેને લોડ કરવા માટે ઉપયોગ કરવાનો ઇનકાર કરશે સિવાય કે તે/lib/termcap.so. 4 ક્લોબર કરેલ હોય). પરંતુ એક બીજો મુદ્દો છેઃ કેટલાક લિબ્સ ઇન/લિબની નકલ કરવી સલામત નથી કારણ કે તે "ઉપયોગમાં છે", જે સંભવિત લિબ ટેસ્ટરને વધુ પ્રતિબંધિત કરે છે. વધુમાં, વિ. નો અર્થ એ છે કે મૂળભૂત termcap.so ની જરૂર હોય તેવા પ્રોગ્રામ્સને નકારી કાઢવામાં આવે છે કારણ કે ઉપરની લાઇબ્રેરીએ મૂળભૂત સપોર્ટની ABI ઍક્સેસને કાઢી નાખી છે. $cc-શેર્ડ-Wl,-soname, lib termcap.so.2-o lib termcap.so.2 $objdump-x termcap.so.2 Need libc.so.6 SONAME termcap.so.2 ઓલ્ડ લિનક્સ/સન ઉપરોક્તનો ઉપયોગ કરે છે, જે વપરાશકર્તાને કોઈપણ પ્રોગ્રામને તેઓ નિર્દિષ્ટ કરે છે તે કોઈપણ termcap.so નો ઉપયોગ કરવા માટે, અથવા ld.so.conf જેવા શોધ નિયમોનો ઉપયોગ કરીને/usr/લોકલ/lib (n) માં જે મળે છે તેનો ઉપયોગ કરવા માટે નિર્દેશિત કરવાની મંજૂરી આપે છે. જો કે, જીએનયુ એલડી હંમેશાં/lib અથવા/usr/lib નો ઉપયોગ કરે છે, તેથી પ્રથમ/lib/ટર્મકેપ. તેથી/usr/સ્થાનિક/lib પર ખસેડવામાં આવે છે અને જેનો ઉલ્લેખ ld.so.conf માં કરવામાં આવ્યો છે, જે મૂવિંગ libs અને ld.so.conf નો ઉપયોગ અથવા ઉપયોગ કરવા માટે સક્ષમ કરે છે. એક પસંદગીની પ્રથા એ છે કે ઉપલબ્ધ સુવિધાઓનો ઉપયોગ કરવા માટે "" નો ઉપયોગ કરવો અને પ્રોગ્રામ્સ ચેક વર્ઝન (તમામ લિબ્સ તેને ટેકો આપે છે) હોય છે, પરંતુ ધીમી કમ્પ્યુટિંગ ઝડપ અને યોગ્ય રીતે કોડ કરવા માટે સમયના અભાવને કારણે તે ઘણીવાર જૂના પ્રકાશનોમાં છોડવામાં આવતું હતું. એવું કહેવાય છે કે, તેના પર આધાર રાખવાનું નક્કી કરતા પહેલા આપેલ પ્લેટફોર્મ પર આ પ્રકારની વસ્તુનું સંપૂર્ણ પરીક્ષણ કરો. આજે પ્રકાશન સંચાલકો ભૂતકાળની માર્ગદર્શિકાઓ અથવા દસ્તાવેજીકરણને માન આપવાની બાંયધરી આપતા નથી. કેટલીક યુનિક્સ જાતો સંપૂર્ણપણે અલગ રીતે જોડાય છે અને લોડ થાય છે. આરપાથ એ ચોક્કસ વિતરણ સાથે મોકલેલ એલ. ડી. માટે વિશિષ્ટ છે. છેલ્લે, જેમ કહેવામાં આવ્યું છે તેમ, આરપાથ એ એક સુરક્ષા સુવિધા છે જો કે "ફરજિયાત પ્રવેશ નિયંત્રણ" (એમ. એ. સી.) અને અન્ય તકનીકો લિબ વાંચન અને લેખનને નિયંત્રિત કરવા માટે આરપાથ જેટલા અસરકારક અથવા વધુ અસરકારક હોઈ શકે છે. આજના કમ્પાઇલર્સનો ઉપયોગ કરીને આરપાથ પર નિયંત્રણ ઘણીવાર લાંબા અને ગૂંચવણભર્યા મેક (1) સ્ક્રિપ્ટીંગને જોતાં લગભગ અશક્ય છે. આનાથી પણ ખરાબ બાબત એ છે કે કેટલીક બિલ્ડ સ્ક્રિપ્ટો તેને એક વિકલ્પ તરીકે રજૂ કરતી હોવા છતાં-- ડિસેબલ-આરપાથની અવગણના કરે છે. સંકલન કરવા માટે દરેક વિચિત્ર પ્રોગ્રામમાં બિલ્ડ સ્ક્રિપ્ટીંગને ઠીક કરવા માટે તે સમય માંગી લે તેવું અને નિરાશાજનક અને કદાચ અશક્ય હશે. એક સરળ એસ. એચ. (1) "આવરણ" વાસ્તવિક એલ. ડી. ને ld.bin નામ આપી શકે છે. એલ. ડી. નો ઉપયોગ કરતા પહેલા આવરણ અંદર/બહારના વિકલ્પને ફિલ્ટર કરી શકે છે. જો કે, નોંધ લો કે કેટલાક બિલ્ડ્સ ખોટી રીતે આરપાથ-લિંકને બદલે આરપાથનો ઉપયોગ કરે છે અથવા બિલ્ડ ડિરેક્ટરીમાં રહેલા મધ્યવર્તી ઉત્પાદનોને શોધવા માટે-આમ અંતિમ ઉત્પાદનમાં પછાત રીતે આરપાથની માંગ કરે છે, જે "આરપાથ શું છે" સંબંધિત એક નવો મુદ્દો છે. સુરક્ષાની વિચારણાઓ આરપાથ અને રનપાથનો ઉપયોગ સુરક્ષા જોખમો રજૂ કરી શકે છે જ્યાં લાગુ કરાયેલ મૂલ્યમાં હુમલાખોરના નિયંત્રણ હેઠળની ડિરેક્ટરીઓનો સમાવેશ થાય છે. આમાં એવા કિસ્સાઓનો સમાવેશ થઈ શકે છે કે જ્યાં વ્યાખ્યાયિત મૂલ્ય સ્પષ્ટપણે હુમલાખોરને લખી શકાય તેવા સ્થાનનો સંદર્ભ આપે છે પણ એવા ઉદાહરણો પણ છે કે જ્યાં સંબંધિત પાથનો ઉપયોગ કરવામાં આવે છે, ક્યાં તો તેની હાજરી દ્વારા. અથવા., $ORIGIN વગેરે દ્વારા અથવા જ્યાં ડિરેક્ટરી સ્ટેટમેન્ટ બિનઅસરકારક છોડી દેવામાં આવે છે. ખાસ કરીને, આ સેટયુઆઇડી દ્વિસંગીનો ઉપયોગ કરવાની મંજૂરી આપી શકે છે, જ્યાં અસુરક્ષિત માર્ગનો ઉપયોગ થાય છે. હુમલાખોરના નિયંત્રણ હેઠળની એક અથવા અન્ય ડિરેક્ટરીઓમાંથી દૂષિત પુસ્તકાલયોને લોડ કરવા માટે દ્વિસંગીને છેતરવા માટે આનો લાભ લઈ શકાય છે. સંદર્ભો બાહ્ય લિંક્સ chrpath-એક્ઝેક્યુટેબલના DT _ RPATH એટ્રિબ્યુટને બદલવા અને તેને DT _ RUNPATH એટ્રિબ્યુટમાં રૂપાંતરિત કરવા માટેનું સાધન-ફ્રીબીએસડી ડેવલ/chrpath પોર્ટ-હાલના ELF દ્વિસંગી પેચઇએલએફમાં DT _ RPATH ને સંશોધિત કરવા માટેનું સાધન-ગતિશીલ લિંકર અને ELF એક્ઝેક્યુટેબલના DT _ RUNPATH એટ્રિબ્યુટને સંશોધિત કરવા માટેની એક નાની ઉપયોગિતા. - DT _ RPATH કમ્પ્યુટર લાઈબ્રેરીઓ ઓપરેટિંગ સિસ્ટમ ટેકનોલોજી પરના હુમલા સહિત રન-ટાઇમ લિંકર પર હુમલો કરવા માટેનું પેપર