File Permissions hauv Linux

Nyob zoo sawv daws. Peb nquag mus ua hauj lwm thiab tab tom npaj ntau lub zog tshaj tawm hauv lub Ib Hlis. Ntawm lwm tus, kev tso npe kawm tau raug tshaj tawm rau cov kwj tshiab ntawm txhua tus nyiam chav kawm. "Linux Administrator". Nyob rau hauv kev cia siab ntawm lub community launch, peb ib txwm muab kev txhais lus ntawm cov khoom muaj txiaj ntsig.

File Permissions hauv Linux

Cov ntaub ntawv tso cai muaj lwm txoj hauv kev nyab xeeb rau SUID executables, tab sis tuaj yeem zoo li tsis meej pem thaum xub thawj.


Peb txhua tus paub tias binaries SOOB yog cov kev txiav txim siab phem los ntawm qhov kev pom kev ruaj ntseg. Hmoov zoo, yog tias koj daim ntawv thov xav tau qee cov cai txwv, muaj txoj hauv kev zoo dua hu ua tso cai ua ntaub ntawv thov.

Kuv yuav txuag koj qee lub sijhawm yog tias koj xav kom tsis txhob nyeem cov lus saum toj no kom ntxaws: Qhov tseem ceeb, cov ntaub ntawv tso cai tso cai rau cov txheej txheem uas khiav raws li hauv paus thiab yog li tso cai ua ib yam dab tsi los tuav qee lub peev xwm, txwv daim ntawv nothaum lawv tso cai thiab khiav los ntawm tus neeg siv tsis muaj cai. Qhov no txhais tau hais tias yog tias tus neeg tawm tsam tswj hwm los cuam tshuam cov txheej txheem siv qhov tsis txaus los yog lwm yam kev siv, lawv yuav tsis muaj peev xwm ua kom zoo dua lwm yam tshaj li qee yam tshwj xeeb me me uas cov txheej txheem xav tau tiag tiag.

Kev tso cai yog qhov zoo rau cov kev pabcuam uas ib txwm ua haujlwm raws li lub hauv paus, tab sis ua li cas txog kev siv kab lus txib? Luckily, qhov no kuj tau txais kev txhawb nqa yog tias koj muaj cov khoom siv tsim nyog. Yog tias koj siv Ubuntu, piv txwv li koj yuav xav tau pob libcap2-bin. Koj tseem yuav tau khiav lub ntsiav tsis-archaic (los ntawm version 2.6.24).

Cov haujlwm no tso cai rau kev tso cai los cuam tshuam nrog cov ntaub ntawv ua tau zoo, zoo ib yam li teeb tsa SUID me ntsis, tab sis tsuas yog rau ib qho kev tso cai tshwj xeeb. Kev siv hluav taws xob setcap siv los ntxiv thiab tshem tawm kev tso cai los ntawm cov ntaub ntawv.

Thawj kauj ruam yog xaiv cov kev tso cai uas koj xav tau. Rau lub hom phiaj ntawm tsab xov xwm no, kuv xav tias muaj ib lub cuab yeej kuaj xyuas lub network hu ua tracewalk, uas yuav tsum tau siv cov qhov (socket) raw. Qhov no feem ntau xav tau daim ntawv thov kom khiav raws li hauv paus, tab sis thaum saib tus sau nws hloov tawm tias tsuas yog yuav tsum tau tso cai CAP_NET_RAW.

Piv txwv tias koj nyob hauv phau ntawv teev npe uas binary nyob tracewalk, koj tuaj yeem ntxiv qhov kev tso cai zoo li no:

sudo setcap cap_net_raw=eip tracewalk

Tsis quav ntsej lub ntsiab lus rau tam sim no =eip rau kev daws teeb meem, kuv mam li tham txog qhov ntawd hauv ob peb vib nas this. Nco ntsoov tias lub npe tso cai yog tus lej qis. Tam sim no koj tuaj yeem tshawb xyuas yog tias koj tau teeb tsa kev tso cai raug nrog:

setcap -v cap_new_raw=eip tracewalk

Lossis koj tuaj yeem sau tag nrho cov kev tso cai uas tau teem tseg rau qhov muab ua tiav:

getcap tracewalk

Rau kev siv, koj tuaj yeem tshem tawm tag nrho cov kev tso cai los ntawm kev ua haujlwm nrog:

setcap -r tracewalk

Txij ntawm no mus, koj yuav tsum muaj peev xwm khiav lub executable raws li ib tug neeg siv unprivileged, thiab nws yuav tsum tau ua hauj lwm nrog raw sockets, tab sis tsis muaj ib yam ntawm cov lwm yam cai uas tus neeg siv hauv paus muaj.

Yog li ntawd dab tsi yog qhov txawv txawv lub ntsiab lus? =eip? Qhov no yuav tsum muaj qee qhov kev nkag siab ntawm qhov kev tso cai. Txhua txheej txheem muaj peb txheej tso cai - muaj txiaj ntsig, tau txais txiaj ntsig thiab tso cai:

  • Siv tau Kev tso cai yog cov uas txhais tau tias qhov txheej txheem tuaj yeem ua tau tiag tiag. Piv txwv li, nws tsis tuaj yeem cuam tshuam nrog cov khoom siv raw yog tias CAP_NET_RAW tsis nyob rau hauv cov txheej txheem zoo.
  • Muaj kev tso cai yog cov uas txheej txheem tau tso cai muaj yog tias nws thov kom lawv siv qhov tsim nyog hu. Lawv txwv tsis pub tus txheej txheem los ua ib yam dab tsi tshwj tsis yog nws tau sau tshwj xeeb los thov kev tso cai. Qhov no tso cai rau cov txheej txheem sau los ntxiv cov kev tso cai tseem ceeb rau cov txheej txheem siv tau tsuas yog rau lub sijhawm thaum lawv xav tau tiag tiag.
  • Ua cuab yeej cuab tam kev tso cai yog cov uas tuaj yeem tau txais qub txeeg qub teg hauv cov txheej txheem nkag mus tau ntawm cov txheej txheem me nyuam spawned. Thaum phais fork() los yog clone() tus txheej txheem tus me nyuam yeej ib txwm muab ib daim qauv ntawm niam txiv txoj kev tso cai txij li nws tseem tab tom khiav zoo li qub thaum lub sijhawm ntawd. Cov txheej txheem qub txeeg qub teg yog siv thaum exec() (los yog sib npaug) raug hu los hloov cov ntaub ntawv executable nrog lwm tus. Lub sijhawm no, txheej txheem cov txheej txheem muaj yog npog los ntawm cov txheej txheem qub txeeg qub teg kom tau txais cov txheej txheem siv tau uas yuav siv rau cov txheej txheem tshiab.

Yog li kev siv hluav taws xob setcap tso cai rau peb ntxiv cov kev tso cai ntawm peb qhov teeb tsa ntawm nws tus kheej rau qhov muab ua tiav. Nco ntsoov tias lub ntsiab lus ntawm pab pawg tau txhais txawv me ntsis rau cov ntaub ntawv tso cai:

  • Muaj cov ntaub ntawv tso cai yog cov uas ib txwm muaj rau cov ntaub ntawv executable, txawm tias cov txheej txheem niam txiv uas hu nws tsis muaj lawv. Lawv tau raug hu ua "yuam kev" tso cai.
  • Ua qub txeeg qub teg cov ntaub ntawv tso cai txhais lub npog ntsej muag ntxiv uas tuaj yeem siv los tshem tawm kev tso cai los ntawm cov txheej txheem hu xov tooj. Lawv thov ntxiv rau cov txheej txheem hu ua cov txheej txheem tau txais txiaj ntsig, yog li kev tso cai tau txais qub txeeg qub teg yog tias nws muaj nyob hauv ob pawg.
  • Siv tau cov ntaub ntawv tso cai tsuas yog ib qho me me xwb, tsis yog ib qho teeb tsa, thiab yog tias teeb tsa, nws txhais tau tias tag nrho cov txheej txheem muaj kuj tau theej rau hauv cov txheej txheem tshiab cov txheej txheem zoo. Qhov no tuaj yeem siv los ntxiv kev tso cai rau cov txheej txheem uas tsis tau sau tshwj xeeb los thov lawv. Txij li nws yog ib qho me ntsis, yog tias koj teeb tsa rau kev tso cai, nws yuav tsum tau teeb tsa rau txhua qhov kev tso cai. Koj tuaj yeem xav tias nws yog ib qho qub txeeg qub teg vim nws yog siv los tso cai rau siv los ntawm cov ntawv thov uas tsis txhawb nqa lawv.

Thaum qhia kev tso cai ntawm setcap peb tsab ntawv e, i ΠΈ p xa mus rau muaj txiaj ntsig, muaj txiaj ntsig thiab siv tau teem raws. Yog li, cov specification ua ntej:

sudo setcap cap_net_raw=eip tracewalk

... qhia tias kev daws teeb meem CAP_NET_RAW yuav tsum tau ntxiv rau cov uas muaj thiab tau txais txiaj ntsig tau thiab cov khoom siv tau zoo yuav tsum tau teeb tsa. Qhov no yuav override ib qho kev tso cai yav dhau los ntawm cov ntaub ntawv. Txhawm rau teeb tsa ntau qhov kev tso cai ib zaug, siv cov npe sib cais:

sudo setcap cap_net_admin,cap_net_raw=eip tracewalk

Daim Ntawv Qhia Tso Cai tham txog tag nrho cov no hauv kev nthuav dav ntxiv, tab sis vam tias qhov kev tshaj tawm no tau demystified dab tsi tshwm sim me ntsis. Tsuas muaj ob peb lub caveats thiab tricks tshuav los hais.

Ua ntej, cov ntaub ntawv muaj peev xwm tsis ua haujlwm nrog symlinks - koj yuav tsum siv lawv rau cov ntaub ntawv binary nws tus kheej (piv txwv li lub hom phiaj ntawm symlinks).

Qhov thib ob, lawv tsis ua haujlwm nrog cov ntawv txhais lus. Piv txwv li, yog tias koj muaj tsab ntawv Python uas koj xav tso cai rau, koj yuav tsum muab nws rau tus neeg txhais lus Python nws tus kheej. Pom tseeb qhov no yog qhov teeb meem kev nyab xeeb vim tias tom qab ntawd tag nrho cov ntawv sau nrog tus neeg txhais lus yuav muaj kev tso cai tshwj xeeb, txawm tias qhov no tseem zoo dua li ua nws SUID. Qhov kev ua haujlwm ntau tshaj plaws zoo li yog sau ib qho kev ua haujlwm sib cais hauv C lossis sib npaug uas tuaj yeem ua cov haujlwm tsim nyog thiab hu nws los ntawm tsab ntawv. Qhov no zoo ib yam li kev siv los ntawm Wireshark uas siv binary /usr/bin/dumpcap los ua cov haujlwm tshwj xeeb:

$ getcap /usr/bin/dumpcap 
/usr/bin/dumpcap = cap_net_admin,cap_net_raw+eip

Thib peb, cov ntaub ntawv tso cai raug kaw yog tias koj siv ib puag ncig hloov pauv LD_LIBRARY_PATH vim pom kev ruaj ntseg(1). Tib yam siv rau LD_PRELOAD, raws li kuv paub.

1. Txij li thaum tus neeg tawm tsam tuaj yeem pom tseeb hloov ib qho ntawm cov qauv tsev qiv ntawv thiab siv LD_LIBRARY_PATHyuam kom nws lub tsev qiv ntawv hu ua qhov nyiam rau lub system ib qho, thiab yog li nws muaj nws tus kheej arbitrary code ua tiav nrog tib txoj cai raws li daim ntawv thov hu.

Yog tag nrho. Xav paub ntau ntxiv txog qhov kev kawm muaj nyob rau ntawm webinar, uas yuav muaj nyob rau lub Ib Hlis 24.

Tau qhov twg los: www.hab.com

Ntxiv ib saib