Modail cuairteachaidh chòraichean èigneachail ann an FreeBSD

Ro-ràdh

Gus ìre a bharrachd de thèarainteachd an fhrithealaiche a thoirt seachad, faodaidh tu a chleachdadh modail àithne sgaoileadh ruigsinneachd. Bheir am foillseachadh seo cunntas air mar as urrainn dhut apache a ruith sa phrìosan le ruigsinneachd dìreach air na pàirtean sin a dh’ fheumas ruigsinneachd airson apache agus php gus obrachadh gu ceart. A 'cleachdadh a' phrionnsapail seo, faodaidh tu a bhith a 'cuingealachadh chan e a-mhàin Apache, ach cuideachd stac sam bith eile.

Ullachadh

Chan eil an dòigh seo freagarrach ach airson siostam faidhle ufs; san eisimpleir seo, thèid zfs a chleachdadh anns a’ phrìomh shiostam, agus ufs sa phrìosan, fa leth. Is e a’ chiad cheum an kernel ath-thogail; nuair a stàlaicheas tu FreeBSD, stàlaich an còd stòr.
Às deidh an siostam a chuir a-steach, deasaich am faidhle:

/usr/src/sys/amd64/conf/GENERIC

Chan fheum thu ach aon loidhne a chur ris an fhaidhle seo:

options     MAC_MLS

Bidh prìomh àite aig an leubail mls / àrd thairis air an leubail mls / ìosal, cha bhith e comasach dha tagraidhean a thèid a chuir air bhog leis an leubail mls / ìosal faighinn gu faidhlichean aig a bheil an leubail mls / àrd. Gheibhear tuilleadh fiosrachaidh mu na tagaichean uile a tha rim faighinn san t-siostam FreeBSD ann an seo stiùireadh.
An uairsin, rachaibh chun eòlaire / usr / src:

cd /usr/src

Gus tòiseachadh air an kernel a thogail, ruith (anns an iuchair j, sònraich an àireamh de choraichean san t-siostam):

make -j 4 buildkernel KERNCONF=GENERIC

Às deidh an kernel a bhith air a chuir ri chèile, feumar a chuir a-steach:

make installkernel KERNCONF=GENERIC

Às deidh dhut an kernel a chuir a-steach, na dèan cabhag gus an siostam ath-thòiseachadh, oir tha e riatanach luchd-cleachdaidh a ghluasad chun chlas logadh a-steach, às deidh dhaibh a rèiteachadh roimhe. Deasaich am faidhle /etc/login.conf, san fhaidhle seo feumaidh tu an clas logadh a-steach bunaiteach a dheasachadh, thoir chun fhoirm e:

default:
        :passwd_format=sha512:
        :copyright=/etc/COPYRIGHT:
        :welcome=/etc/motd:
        :setenv=MAIL=/var/mail/$,BLOCKSIZE=K:
        :path=/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin ~/bin:
        :nologin=/var/run/nologin:
        :cputime=unlimited:
        :datasize=unlimited:
        :stacksize=unlimited:
        :memorylocked=64K:
        :memoryuse=unlimited:
        :filesize=unlimited:
        :coredumpsize=unlimited:
        :openfiles=unlimited:
        :maxproc=unlimited:
        :sbsize=unlimited:
        :vmemoryuse=unlimited:
        :swapuse=unlimited:
        :pseudoterminals=unlimited:
        :kqueues=unlimited:
        :umtxp=unlimited:
        :priority=0:
        :ignoretime@:
        :umask=022:
        :label=mls/equal:

Leigidh an loidhne :label = mls / equal cothrom do luchd-cleachdaidh a tha nam buill den chlas seo faighinn gu faidhlichean a tha comharraichte le leubail sam bith (mls / ìosal, mls / àrd). Às deidh na h-atharrachaidhean sin, feumaidh tu an stòr-dàta ath-thogail agus an neach-cleachdaidh freumha (a bharrachd air an fheadhainn a tha feumach air) a chuir sa chlas logadh a-steach seo:

cap_mkdb /etc/login.conf
pw usermod root -L default

Gus am bi am poileasaidh a’ buntainn ri faidhlichean a-mhàin, feumaidh tu am faidhle /etc/mac.conf a dheasachadh, a’ fàgail dìreach aon loidhne ann:

default_labels file ?mls

Feumaidh tu cuideachd am modal mac_mls.ko a chur ri autorun:

echo 'mac_mls_load="YES"' >> /boot/loader.conf

Às deidh seo, faodaidh tu an siostam ath-thòiseachadh gu sàbhailte. Ciamar a chruthachadh prìosan Faodaidh tu a leughadh ann am fear de na foillseachaidhean agam. Ach mus cruthaich thu prìosan, feumaidh tu clàr cruaidh a chuir ris agus siostam faidhle a chruthachadh air agus multilabel a chomasachadh air, siostam faidhle ufs2 a chruthachadh le meud brabhsair de 64kb:

newfs -O 2 -b 64kb /dev/ada1
tunefs -l enable /dev/ada1

Às deidh dhut an siostam faidhle a chruthachadh agus multilabel a chuir ris, feumaidh tu an clàr cruaidh a chuir ri /etc/fstab, cuir loidhne ris an fhaidhle seo:

/dev/ada1               /jail  ufs     rw              0       1

Ann am Mountpoint, sònraich an eòlaire anns an cuir thu suas an clàr cruaidh; ann an Pass, dèan cinnteach gun sònraich thu 1 (dè an t-sreath a thèid an draibh cruaidh seo a sgrùdadh) - tha seo riatanach, leis gu bheil siostam faidhle ufs mothachail air gearraidhean cumhachd obann . Às deidh na ceumannan seo, cuir suas an diosc:

mount /dev/ada1 /jail

Stàlaich prìosan san eòlaire seo. Às deidh don phrìosan a bhith a’ ruith, feumaidh tu na h-aon làimhseachadh a dhèanamh ann agus a tha sa phrìomh shiostam le luchd-cleachdaidh agus na faidhlichean /etc/login.conf, /etc/mac.conf.

adjustment

Mus stàlaich thu na tagaichean riatanach, tha mi a’ moladh na pacaidean riatanach uile a chuir a-steach; anns a ’chùis agam, thèid na tagaichean a shuidheachadh a’ toirt aire do na pacaidean sin:

mod_php73-7.3.4_1              PHP Scripting Language
php73-7.3.4_1                  PHP Scripting Language
php73-ctype-7.3.4_1            The ctype shared extension for php
php73-curl-7.3.4_1             The curl shared extension for php
php73-dom-7.3.4_1              The dom shared extension for php
php73-extensions-1.0           "meta-port" to install PHP extensions
php73-filter-7.3.4_1           The filter shared extension for php
php73-gd-7.3.4_1               The gd shared extension for php
php73-gettext-7.3.4_1          The gettext shared extension for php
php73-hash-7.3.4_1             The hash shared extension for php
php73-iconv-7.3.4_1            The iconv shared extension for php
php73-json-7.3.4_1             The json shared extension for php
php73-mysqli-7.3.4_1           The mysqli shared extension for php
php73-opcache-7.3.4_1          The opcache shared extension for php
php73-openssl-7.3.4_1          The openssl shared extension for php
php73-pdo-7.3.4_1              The pdo shared extension for php
php73-pdo_sqlite-7.3.4_1       The pdo_sqlite shared extension for php
php73-phar-7.3.4_1             The phar shared extension for php
php73-posix-7.3.4_1            The posix shared extension for php
php73-session-7.3.4_1          The session shared extension for php
php73-simplexml-7.3.4_1        The simplexml shared extension for php
php73-sqlite3-7.3.4_1          The sqlite3 shared extension for php
php73-tokenizer-7.3.4_1        The tokenizer shared extension for php
php73-xml-7.3.4_1              The xml shared extension for php
php73-xmlreader-7.3.4_1        The xmlreader shared extension for php
php73-xmlrpc-7.3.4_1           The xmlrpc shared extension for php
php73-xmlwriter-7.3.4_1        The xmlwriter shared extension for php
php73-xsl-7.3.4_1              The xsl shared extension for php
php73-zip-7.3.4_1              The zip shared extension for php
php73-zlib-7.3.4_1             The zlib shared extension for php
apache24-2.4.39 

San eisimpleir seo, thèid bileagan a shuidheachadh a’ toirt aire do eisimeileachd nam pasganan sin. Gu dearbh, faodaidh tu a dhèanamh nas sìmplidhe: airson am pasgan / usr / local / lib agus na faidhlichean a tha suidhichte san eòlaire seo, suidhich na mls / bileagan ìosal agus na pacaidean stàlaichte às deidh sin (mar eisimpleir, leudachain a bharrachd airson php) bidh e comasach dhaibh faighinn a-steach. na leabharlannan san eòlaire seo, ach tha e coltach gu bheil e nas fheàrr dhomh a bhith a’ toirt cothrom dìreach air na faidhlichean sin a tha riatanach. Cuir stad air prìosan agus suidhich mls / bileagan àrda air a h-uile faidhle:

setfmac -R mls/high /jail

Nuair a bhios tu a’ suidheachadh chomharran, thèid stad a chuir air a’ phròiseas ma choinnicheas setfmac ri ceanglaichean cruaidh, nam eisimpleir chuir mi às do cheanglaichean cruaidh anns na clàran a leanas:

/var/db/etcupdate/current/
/var/db/etcupdate/current/etc
/var/db/etcupdate/current/usr/share/openssl/man/en.ISO8859-15
/var/db/etcupdate/current/usr/share/man/en.ISO8859-15
/var/db/etcupdate/current/usr/share/man/en.UTF-8
/var/db/etcupdate/current/usr/share/nls
/etc/ssl
/usr/local/etc
/usr/local/etc/fonts/conf.d
/usr/local/openssl

Às deidh na bileagan a bhith air an suidheachadh, feumaidh tu na mls / bileagan ìosal a shuidheachadh airson apache, is e a ’chiad rud a dh’ fheumas tu a dhèanamh faighinn a-mach dè na faidhlichean a tha a dhìth gus apache a thòiseachadh:

ldd /usr/local/sbin/httpd

Às deidh an àithne seo a chuir an gnìomh, thèid eisimeileachd a thaisbeanadh air an sgrion, ach cha bhith suidheachadh na bileagan riatanach air na faidhlichean sin gu leòr, leis gu bheil an leubail mls / àrd aig na clàran anns a bheil na faidhlichean sin suidhichte, agus mar sin feumaidh na clàran sin a bhith air an ainmeachadh cuideachd mls/ìosal. Nuair a thòisicheas tu, cuiridh apache a-mach na faidhlichean a tha riatanach airson a ruith, agus airson php gheibhear na h-eisimeileachd sin ann an log httpd-error.log.

setfmac mls/low /
setfmac mls/low /usr/local/lib/libpcre.so.1
setfmac mls/low /usr/local/lib/libaprutil-1.so.0
setfmac mls/low /usr/local/lib/libdb-5.3.so.0
setfmac mls/low /usr/local/lib/libgdbm.so.6
setfmac mls/low /usr/local/lib/libexpat.so.1
setfmac mls/low /usr/local/lib/libapr-1.so.0
setfmac mls/low /lib/libcrypt.so.5
setfmac mls/low /lib/libthr.so.3
setfmac mls/low /lib/libc.so.7
setfmac mls/low /usr/local/lib/libintl.so.8
setfmac mls/low /var
setfmac mls/low /var/run
setfmac mls/low /var/log
setfmac mls/low /var/log/httpd-access.log
setfmac mls/low /var/log/httpd-error.log
setfmac mls/low /var/run/httpd.pid
setfmac mls/low /lib
setfmac mls/low /lib/libcrypt.so.5
setfmac mls/low /usr/local/lib/db5/libdb-5.3.so.0
setfmac mls/low /usr/local/lib/db5/libdb-5.3.so.0.0.0
setfmac mls/low /usr/local/lib/db5
setfmac mls/low /usr/local/lib
setfmac mls/low /libexec
setfmac mls/low /libexec/ld-elf.so.1
setfmac  mls/low /dev
setfmac  mls/low /dev/random
setfmac  mls/low /usr/local/libexec
setfmac  mls/low /usr/local/libexec/apache24
setfmac  mls/low /usr/local/libexec/apache24/*
setfmac  mls/low /etc/pwd.db
setfmac  mls/low /etc/passwd
setfmac  mls/low /etc/group
setfmac  mls/low /etc/
setfmac  mls/low /usr/local/etc
setfmac -R mls/low /usr/local/etc/apache24
setfmac mls/low /usr
setfmac mls/low /usr/local
setfmac mls/low /usr/local/sbin
setfmac mls/low /usr/local/sbin/*
setfmac -R mls/low /usr/local/etc/rc.d/
setfmac mls/low /usr/local/sbin/htcacheclean
setfmac mls/low /var/log/httpd-access.log
setfmac mls/low /var/log/httpd-error.log
setfmac -R mls/low /usr/local/www
setfmac mls/low /usr/lib
setfmac mls/low /tmp
setfmac -R mls/low /usr/local/lib/php
setfmac -R mls/low /usr/local/etc/php
setfmac mls/low /usr/local/etc/php.conf
setfmac mls/low /lib/libelf.so.2
setfmac mls/low /lib/libm.so.5
setfmac mls/low /usr/local/lib/libxml2.so.2
setfmac mls/low /lib/libz.so.6
setfmac mls/low /usr/lib/liblzma.so.5
setfmac mls/low /usr/local/lib/libiconv.so.2
setfmac mls/low /usr/lib/librt.so.1
setfmac mls/low /lib/libthr.so.3
setfmac mls/low /usr/local/lib/libpng16.so.16
setfmac mls/low /usr/lib/libbz2.so.4
setfmac mls/low /usr/local/lib/libargon2.so.0
setfmac mls/low /usr/local/lib/libpcre2-8.so.0
setfmac mls/low /usr/local/lib/libsqlite3.so.0
setfmac mls/low /usr/local/lib/libgd.so.6
setfmac mls/low /usr/local/lib/libjpeg.so.8
setfmac mls/low /usr/local/lib/libfreetype.so
setfmac mls/low /usr/local/lib/libfontconfig.so.1
setfmac mls/low /usr/local/lib/libtiff.so.5
setfmac mls/low /usr/local/lib/libwebp.so.7
setfmac mls/low /usr/local/lib/libjbig.so.2
setfmac mls/low /usr/lib/libssl.so.8
setfmac mls/low /lib/libcrypto.so.8
setfmac mls/low /usr/local/lib/libzip.so.5
setfmac mls/low /etc/resolv.conf

Anns an liosta seo tha mls / tagaichean ìosal airson a h-uile faidhle a tha riatanach airson obrachadh ceart a’ chothlamadh apache agus php (airson na pacaidean sin a tha air an stàladh san eisimpleir agam).

Is e an suathadh mu dheireadh am prìosan a rèiteachadh gus ruith aig an ìre mls / co-ionann, agus apache aig an ìre mls / ìosal. Gus prìosan a thòiseachadh, feumaidh tu atharrachaidhean a dhèanamh air an sgriobt /etc/rc.d/jail, lorg na gnìomhan jail_start san sgriobt seo, atharraich an caochladair àithne chun fhoirm:

command="setpmac mls/equal $jail_program"

Bidh an àithne setpmac a’ ruith am faidhle so-ghnìomhaichte aig an ìre comais a tha a dhìth, sa chùis seo mls / equal, gus am faigh thu cothrom air a h-uile bileag. Ann an apache feumaidh tu an sgriobt tòiseachaidh /usr/local/etc/rc.d/apache24 a dheasachadh. Atharraich an gnìomh apache24_prestart:

apache24_prestart() {
        apache24_checkfib
        apache24_precmd
        eval "setpmac mls/low" ${command} ${apache24_flags}
}

В oifigeil Tha eisimpleir eile anns an leabhar-làimhe, ach cha b’ urrainn dhomh a chleachdadh oir chùm mi a’ faighinn teachdaireachd mu neo-chomas an àithne setpmac a chleachdadh.

co-dhùnadh

Cuiridh an dòigh seo airson ruigsinneachd a chuairteachadh ìre tèarainteachd a bharrachd ri apache (ged a tha an dòigh seo freagarrach airson stac sam bith eile), a bhios cuideachd a 'ruith sa phrìosan, aig an aon àm, airson an rianadair bidh seo uile a' tachairt gu follaiseach agus gun mhothachadh.

Liosta de na stòran a chuidich mi le bhith a’ sgrìobhadh an fhoillseachaidh seo:

https://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/mac.html

Source: www.habr.com

Cuir beachd ann