Kust see konfiguratsioon on? [Debian/Ubuntu]

Selle postituse eesmĂ€rk on nĂ€idata tĂ”rkeotsingu tehnikaid debian/ubuntu sĂŒsteemis, seoses "allika leidmisega" sĂŒsteemi konfiguratsioonifailis.

TestnÀide: pÀrast pikka vaeva tar.gz koopia taastamise ja uuenduste installimisega saame teate:

update-initramfs: genereerimine /boot/initrd.img-4.15.0-54-generic
W: initramfs-tools konfiguratsioon seab RESUME=/dev/mapper/U1563304817I0-swap
W: kuid sobivat vahetusseadet pole saadaval.
I: Initramfs proovib jÀtkata /dev/dm-1
I: (/dev/mapper/foobar-swap)
I: Seadke RESUME muutuja, et seda ĂŒle kirjutada.

EesmÀrk: mÔista, kust see vÀÀrtus (U1563304817I0) tuli ja kuidas seda Ôigesti muuta. See on esimene ettejuhtuv nÀide, mis iseenesest pole eriti huvitav, kuid mugav, et nÀidata praktilisi meetodeid Linuxi kasutamisel..

Samm number 1: Kust tuli RESUME?

# cd /etc
# grep -r RESUME
initramfs-tools/conf.d/resume:RESUME=/dev/mapper/U1563304817I0-swap

Otsime rekursiivselt (-r) mainimist selle muutuja kohta kataloogis /etc (seal, kus enamik konfiguratsioonifailidest asub). Leiame conf.d lÔike, mis on selgelt mÔeldud initramfs-tools paketi jaoks.

Kust see lÔik pÀrineb?

On kolm varianti:

  1. Kasutaja artefakt (keegi pani selle ja unustas)
  2. Paketi konfiguratsioon
  3. Konfiguratsioon, mis genereeriti mĂ”ne skripti kaudu sĂŒsteemipakettidest

Kontrollime nr 2 (kui kÔige lihtsam):

 dpkg -S initramfs-tools/conf.d/resume
dpkg-query: ei leitud sobivat teed mudeli *initramfs-tools/conf.d/resume* jaoks.

dpkg -S jÀrel annab meile vÔimaluse otsida installitud failide andmebaasist ja leida, kellele see fail kuulub. Siin on edukas otsingu nÀide:

dpkg -S resolv.conf
manpages: /usr/share/man/man5/resolv.conf.5.gz
systemd: /lib/systemd/resolv.conf

Naaseme tagasi meie ĂŒlesande juurde: fail initramfs-tools/conf.d/resume ei installita sĂŒsteemi paketi kaudu. Kas see genereeritakse postinst/preinst skripti kaudu? Kontrollime versiooni number 3.

# cd /var/lib/dpkg/info/
# grep -r initramfs-tools/conf.d/resume *
initramfs-tools-core.postrm:    rm -f /etc/initramfs-tools/conf.d/resume

Kataloogis /var/lib/dpkg/info/ seal asuvad kĂ”ik pakettide "meta-failide" lahti pakkimise versioonid (installimis-/eemaldamisprotseduurid, pakettide kirjeldused jne). Üllatavalt kustutatakse see fail postrm (paketi eemaldamisel) initramfs-tools-core paketi kaudu. Uurime, mis on selle postinst
 Mitte midagi, mis puudutab conf.d katalooge.

Uurime initramfs-tools-core paketi faile. dpkg -L.

# dpkg -L initramfs-tools-core
...
/usr/share/initramfs-tools/hooks/resume
...

Meeskond annab vĂ”imaluse vaadata kĂ”iki faile, mis on sĂŒsteemis antud paketist. Olen vĂ€lja valinud huvitava faili uurimiseks. Faili uurimine nĂ€itab, kuidas seda muutujat kasutatakse, kuid ei vasta sellele, kust see pĂ€rineb. debconf

debconf

Tundub, et see on kellegi artefakt. Kelle? Enne, kui sukeldume installeri, vaatame veel ĂŒhte olulist Debian infrastruktuuri — vastuseid kĂŒsimustele. Iga kord, kui pakk kĂŒsib kĂŒsimuse, ja paljuski ka siis, kui ta kĂŒsimust ei esita, vaid kasutab vaikimisi varianti, mĂ€rgitakse nii kĂŒsimus kui ka vastus spetsiaalsesse andmebaasi Debianis, mida nimetatakse debconf. Saame vaadata vastuste andmebaasi (ja isegi seada need enne paketi installimist — debconf-set-selections), selleks vajame utiliiti debconf-get-selections , mis kuulub debconf-utils. Kahjuks ei leitud midagi huvitavat: (debconf-get-selections | grep -i resume tĂ”i tĂŒhja).

debian-installer

Installeril on oma vastuste andmebaas: /var/log/installer/cdebconf/questions.dat. Kahjuks sealgi ei ole meie resume’ist kĂŒll sĂ”nagi.
KĂŒll aga on seal lĂ€heduses logid, sealhulgas syslog, kuhu kirjutatakse kogu installatsiooni logi. Seal mainitakse paketti base-installer, ja selle lehe me saame nĂ€ha viidet allikatele.

Nende sees leiame kergesti vastuse oma kĂŒsimusele:

  resume="$(mapdevfs "$resume_devfs")"; then
...
    if [ "$do_initrd" = yes ]; then
     ...
            resumeconf=$IT_CONFDIR/resume
....
                echo "RESUME=$resume" >> $resumeconf

mapdevfs on utiliit, millel on arusaadav otstarve, ja meid huvitav funktsioon on get_resume_partition, mis loeb /proc/swaps ja valib sealt suurima. Swap tuleb meil partman'ist.

Vastus meie testĂŒlesandele: fail luuakse installeriga /targetis installimise hetkel, st rÀÀgime well-known, kuid artefaktist. SĂŒsteemis olevates pakettides ei ole kedagi ega midagi, mis seda faili muudaks.

KokkuvÔtteks

  1. dpkg ja debconf on peamised meetodid failide tarnijate leidmiseks.
  2. otsimine /var/lib/dpkg/info vÔimaldab nÀha failidega seotud toimetamisi installimise etapis.
  3. Installer vÔib luua artefaktifaile, mida keegi kunagi ei muuda (vÀlja arvatud kasutaja), ja seda on vÔimalik nÀha installeri koodist.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster