Erregistroa hazten da, baina ezin da berriz sortu: egiaztatu karpetaren ACL
Fitxategi bati gehitzeak ez du izen berririk behar karpetan; sortzeak bai. Konparatu sarbide-ACL-a heredatutako balio lehenetsiekin ezer zabaldu aurretik.
Hazten ari den erregistro bat hazteari uzten dio zerbait berriz sortzen duen unean, eta erroreak baimena ukatuta dio. Ondorio tentagarria da fitxategiak berak baimen gehiago behar dituela, nahiz eta fitxategia jada kontu berak idatz dezakeen. Dagoen izen bati gehitzea eta berri bat sortzea egiaztapen desberdinak dira, eta bigarrenak soilik galdetzen dio karpetari.
Gehitzea eta sortzea egiaztapen desberdinak dira
Dagoen fitxategi bat gehitze aldera irekitzeak fitxategi horretako idazketa-baimena eta bere bidean zehar karpeta bakoitzeko bilaketa-baimena eskatzen ditu. Fitxategi bat sortzeak hura daukan karpetako idazketa- eta bilaketa-baimena eskatzen ditu, eragiketak izen bat gehitzen diolako. Fitxategi bat berrizendatzearen bidez ordezkatzeak bi karpetak eta haien sticky bit arauak ukitzen ditu.
| Operation | What must permit it | Typical failure message |
|---|---|---|
| Append to an existing log | File write access, path traversal | Permission denied on the file |
| Create a missing log | Directory write and search access | Permission denied on the path |
| Rename a replacement into place | Both directories, plus sticky restrictions | Permission denied or operation not permitted |
Jada irekita dagoen deskriptore batek laugarren kasua gehitzen du. Prozesu batek pribilegioak galdu aurretik irekitako idazketa-kudeatzaile bat eduki dezake eta, hala ere, huts egin bide berbera berriz irekitzean bere geroagoko nortasunarekin. Gehitze arrakastatsuak eta sortze huts egina aldi berean egiazkoak izan daitezke prozesu berarentzat.
ACL lehenetsiak heredatu egiten dira, ez dute ematen
Aurrizki lehenetsiz hasten den sarrera batek deskribatzen du objektu berriek karpetatik zer heredatzen duten. Ez dio ezer ematen karpetari berari, eta ez du jada dagoen fitxategi baten ACL-a konpontzen.
namei -l /var/log/openvpn/server.log
getfacl -p /var/log/openvpn
getfacl -p /var/log/openvpn/server.log
Irakurri sarbide-sarrerak lehenetsietatik bereizita, eta irakurri maskara. Eskubide osoak zerrendatzen dituen izen-sarrera bat maskarak mugatu dezake oraindik, eta horregatik eraginkortasunaren iruzkinak lehenengo lerroko letrek baino gehiago balio du.
Erabili ebatzitako bidea konfigurazioko bidea beharrean. Esteka sinboliko batek, muntatze-puntu batek edo biratutako karpeta batek fitxategi erreala eman zenuen baimena inoiz iristen ez den tokira eraman dezake. Ibilbidea namei-rekin zeharkatu lehenik, eta gero konparatu maila bakoitza dagokion kontuarekin. Goiko karpeta asmatzea da zuzenketa maila bat goiegi lurreratzeko modua.
Egiaztatu nork idazten duen une horretan
Egiaztatu zerbitzu-unitatea, haren drop-in-ak eta daemonaren kontu-ezarpenak ezer aldatu aurretik. Gehitzen duen prozesua eta berriz sortzen duen prozesua desberdinak izan daitezke: biraketa-laguntzaile bat, egoera-idazle bat eta web irakurle bat gutxitan partekatzen dute nortasuna.
Root shell batetik egindako proba-execizioak ez du zerbitzu mugatu bat berreproduzitzen, eta arrakasta izango du zerbitzuak huts egiten jarraitzen duen bitartean. Berreproduzitu huts egiten duen eragiketa unitate beraren pean, kontu berarekin eta sandbox ezarpen berberekin. Ezin baduzu, abiarazi unitatea aldi baterako shell batekin eta egiaztatu jakinarazten duen nortasuna. Beste edozein gauzak zure terminala neurtzen du, zerbitzua ez.
Sortzea benetan beharrezkoa bada, eman idazleari erregistro-karpeta dedikaturako sarbidea eta mantendu irakurleen sarbidea bereizita. Kontu partekatu bat edo aplikazio-zuhaitz oso bat idazgarri egitea erregistro-dei bat asetzeko arazo txiki bat handi baten truke aldatzea da.
Bira ezazu hutsa berriro sartu gabe
Fitxategia berriz sortzen duenak erabakitzen du haren jabea eta modua hurrengo ziklorako, beraz koordinatu konponketa biraketa-konfigurazioarekin. Beste kontu batekin edo ACL berri batekin sortutako ordezko batek hutsa berriro ekartzen du konponketa arrakastatsu baten ondoren.
Ezarri modua eta taldea sortzean, ez geroago, eta egiaztatu hurrengo biraketa, hurrengo gehitzea beharrean. Gehitze batek jada gainditu zuen proba errepikatzen du soilik. Biraketa-tresnak sortze-modurako ezarpen bat eskaintzen badu, erabili hori sortze osteko chmod baten ordez. Sorkuntzaren eta chmod-aren arteko tartea da hurrengo idazketak huts egin dezakeen une zehatza.
Trunkatzeak hala ere huts egiten badu, utzi baimenak gehitzen
Idatz dezakezun fitxategi bat trunkatzeak huts egitea ez da karpeta-baimenekin azaltzen, eta horietako gehiago gehitzeak ez du lagunduko. Begiratu atributuak eta konfinamendua: append-only atributu batek gehitze-moduan soilik uzten ditu idazketak, eta irakurketa-soileko muntatze batek edo zerbitzu-sandbox batek ACL-ak uzten duen eragiketa bat ukatu dezake.
Egiaztatu unitatearen fitxategi-sistemaren murrizketak eta bidearen muntatze-aukerak, eta gero berreproduzitu huts egin zuen eragiketa zehatza. Inoiz kontsultatu ez zen baimen bat zabaltzeak soilik ezkutatzen du zein murrizketa zen erreala. Kendu murrizketa bat aldi bakoitzean unitate baztergarri batean, eta itzuli ezazu ezer iraunkorrik aldatu aurretik.