De Log wächst, awer kann net nei ugeluecht ginn: préift den ACL vum Verzeechnis
Bäisetzen zu enger Datei brauch keen neien Numm a sengem Verzeechnis; si uleeë brauch een. Vergläicht den Access-ACL mat de geierfte Standardwäerter, ier dir eppes erweidert.
En Log, deen ëmmer weider wiisst, hält op ze wiissen, soubal eppes en nei uleet, an de Feeler seet, d'Erlaabnis wier refuséiert. Déi verlockend Conclusioun ass, datt d'Logdatei selwer méi Erlaabnisser brauch, awer d'Datei ka schonn duerch dee selwechten Kont beschreiwbar sinn. Bäisetzen zu engem existéierenden Numm an e neien Numm uleeë sinn zwee verschidde Prüfunge, an nëmmen déi zweet consultéiert d'Verzeechnis.
Bäisetzen an Uleeë si verschidde Prüfunge
Eng existéierend Datei opzemaachen fir bäizesetzen erfuerdert Schreibrecht op dëser Datei plus Sichrecht laanscht all Verzeechnis an hirem Pad. Eng Datei uleeën erfuerdert Schreiwen a Sichen um Verzeechnis, dat se hält, well d'Operatioun en Numm derbäisetzt. Eng Datei duerch Ëmbenenne ersetzen beréiert och allebéid Verzeechnisser an hir Sticky-Bit-Reegelen.
| 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 |
En ale schonn oppenen Deskriptor bäisetzt e véierte Fall. E Prozess ka en Schreibhandle halen, deen opgemaach gouf, ier en seng Privilegien opginn huet, an trotzdem fale beim erneiten Opmaachen vum selwechten Pad ënner senger spéiderer Identitéit. Déi gelungen Bäisätz an déi misslunge Kreatioun kënnen allebéid wouer sinn, am selwechten Ament, fir dee selwechte Prozess.
Standard-ACLen ierwen, si ginn net
En Entrée, deen mam Standard-Prefix ufänkt, beschreift, wat nei Objeten aus dem Verzeechnis ierwen. Et gëtt dem Verzeechnis selwer näischt an et reparéiert net den ACL vun enger Datei, déi schonn existéiert.
namei -l /var/log/openvpn/server.log
getfacl -p /var/log/openvpn
getfacl -p /var/log/openvpn/server.log
Liest d'Access-Entréeën getrennt vun den Standard-Entréeën, a liest d'Mask. En genannt Entrée, dee voll Rechter opzielt, ka nach ëmmer duerch d'Mask limitéiert ginn, dofir ass den effektiven Kommentar méi wichteg wéi d'Buschtawen an der éischter Linn.
Benotzt de opgeléiste Pad an net de Pad aus der Konfiguratioun. E Symlink, e Mountpunkt oder e roteiert Verzeechnis kënnen déi richteg Datei dohi setzen, wou d'Erlaabnis, déi dir ginn hutt, ni hikënnt. Gitt de Pad fir d'éischt mam Numm-Tool duerch, vergläicht dann all Niveau mam betraffene Kont. Beim Top-Niveau-Verzeechnis ze roden ass de Wee, wéi eng Korrektur eng Niveau ze héich landt.
Identifizéiert, wien an deem Ament schreift
Preift d'Servicer-Unit, hir Drop-ins an dem Daemon seng eege Kont-Astellungen, ier dir eppes ännert. De Prozess, deen bäisetzt, an de Prozess, deen nei uleet, kënne verschidde sinn: e Rotatiounshelfer, e Status-Schreiwer an e Web-Lieser deelen seelen eng Identitéit.
En Test vu enger Root-Shell reproduzéiert net e restriktiven Service, an et wäert geléngen, während de Service weider feelt. Reproduzéiert d'fehlgeschloe Operatioun ënner der selwechter Unit, mam selwechte Kont a mat de selwechten Sandbox-Astellungen. Wann dir dat net kënnt, start d'Unit mat enger temporärer Shell a preift d'Identitéit, déi se mësst. Alles anescht misst ären Terminal an net de Service.
Wann d'Kreatioun wierklech néideg ass, gitt dem Schreiwer Zougang zum dedizéierten Log-Verzeechnis a halt de Lies-Zougang fir Konsumenten getrennt. E gemeinsame Kont oder en ganzen Applikatiounsbaum beschreiwbar ze maachen, fir een eenzegen Logging-Call ze befriddegen, tauscht e klengt Problem géint e grousst.
Rotéiert, ouni et erëm anzeféieren
Wien d'Datei nei uleet, entscheet hire Besëtzer a säi Modus fir den nächsten Zyklus, also koordinéiert d'Korrektur mat der Rotatiounskonfiguratioun. Eng Ersatzdatei, déi ënner engem anere Kont oder mam frëschen ACL ugeleet gëtt, bréngt de Feeler no enger gelungener Korrektur zréck.
Setzt de Modus an d'Grupp beim Uleeën, net duerno, a verifizéiert déi nächst Rotatioun an net den nächsten Bäisatz. E Bäisatz widderhëlt just den Test, deen schonn duerchgaangen ass. Wann d'Rotatiouns-Tool eng Create-Mode-Astellung ubitt, benotzt se amplaz vun engem chmod no der Kreatioun. D'Lück tëschent Kreatioun a chmod ass genee de Moment, wou den nächste Schreiwen feele kann.
Wann d'Ofschneiden awer feelt, stoppt d'Erlaabnisser derbäizesetzen
De Feeler beim Ofschneide vun enger Datei, déi dir schreiwe kënnt, erkläert sech net duerch Verzeechnis-Erlaabnisser, an nach méi derbäizesetzen hëlleft net. Kuckt amplaz op d'Attributer an d'Confinement: en Append-only-Attribut erlaabt Schreiwen nëmmen am Append-Modus, an e Read-only-Mount oder e Service-Sandbox kënnen eng Operatioun verweigeren, déi den ACL erlaabt.
Preift dem Unit seng Dateisystem-Restriktiounen an d'Mountoptioune fir de Pad, reproduzéiert dann déi genee Operatioun, déi gefeelt huet. Eng Erlaabnis ze erweideren, déi ni consultéiert gouf, verbergt just, wéi eng Restriktioun richteg war. Huelt eng Restriktioun no der anerer an enger provisorescher Unit ewech, a setzt se zréck, ier dir eppes permanent ännert.