Oibríonn an hook nuair a ritheann tú de láimh é mar root agus filleann sé Operation not permitted an nóiméad a thosaíonn an tseirbhís é. Níor athraigh an comhad idir na ritheanna sin; d'athraigh an timpeallacht. Tugann systemd domhan níos lú don phróiseas: níos lú cumas, /dev difriúil, cosáin chórais chomhad inléite amháin agus uasteorainn tasc. Léigh an teip mar theorainn a dhiúltaigh oibríocht amháin ar leith, ní mar script a bhris.

Tosaigh ag an oibríocht ar diúltaíodh di

Ní insíonn líne loga a deir gur theip ar an aonad mórán duit. Ainmníonn an líne úsáideach an glao ar diúltaíodh dó: nód gléis nár féadadh a oscailt, eolaire nár féadadh scríobh ann, ainmspás nár féadadh a chruthú. Faigh an glao sin sula dteagmhálann tú le haon treoir amháin, mar freagraíonn gach ceann do shrian difriúil. Ansin léigh an t-aonad a rith i ndáiríre, drop-ins san áireamh, seach an comhad a sheol an pacáiste.

Priontálann an cheist thíos cosán an fhragmint, na heolairí drop-in agus na hairíonna atá tábhachtach do dhiúltú gléis nó córais chomhad. Léigh iad go léir sula gcinneann tú cé acu teorainn atá ábhartha:

systemctl show "[email protected]" -p FragmentPath -p DropInPaths -p PrivateDevices -p DevicePolicy -p DeviceAllow -p ProtectHome -p ProtectSystem -p TasksMax
journalctl -u "[email protected]" -b --no-pager | grep -iE 'operation not permitted|permission denied|cannot open|failed'

Ní scríobhann aon rud sa bhloc sin. Má tá an glao diúltaithe ar iarraidh ón dialann, ardaigh foclóireacht an chliaint ar feadh rith amháin in ionad treoracha a thomhas. Cruthaíonn próiseas atá ag rith go bhfuil an t-aonad tosaithe, ní go bhfuil an hook rite leis na pribhléidí a bhí ag teastáil uaidh.

Teastaíonn cearta feistis ó ainmspás nach n-úsáideann gléas TUN riamh

Tá próifílí ceada éagsúla ag dhá oibríocht a bhféachann mar an gcéanna laistigh d'aon hook amháin. Teastaíonn riarachán líonra móide rochtain ar an nód sin chun /dev/net/tun a oscailt agus an comhéadan a chruthú. Teastaíonn obair feistis freisin chun ainmspás líonra ainmnithe a chruthú, mar feistíonn uirlis an ainmspáis /sys radharc úr agus ceanglaíonn sí eolaire stáit ina áit. aonad cliaint ó upstream riarachán feistis a fhágáil lasmuigh dá thacar teorann go toiliúil, mar sin diúltaítear don chéim ainmspáis cé go n-oibreodh an tollán féin.

Sin é an fáth nach sábhálann cead an nóid ghléis an script. Freagraíonn cead gléis ceist amháin, an féidir leis an bpróiseas seo an nód seo a oscailt, agus ceist eile is ea ceist an ainmspáis. Meaitseáil an glao atá ag teip lena chumas sula leathnaíonn tú aon rud.

Faigheann tástáil i do shell gach cumas atá ag root gan srian, agus faigheann an t-aonad an méid a choimeád a thacar teorann. Is turgnaimh dhifriúla an dá rith fiú nuair atá an dénártha comhionann.

Gléasanna, cosáin chosanta agus uasteorainneacha tasc

Nuair atá an oibríocht diúltaithe ar eolas, míníonn trí ghrúpa treoracha an chuid is mó de na teipeanna. Rialaíonn PrivateDevices rochtain ar ghléasanna, a chuireann /dev in ionad DevicePolicy le DeviceAllow, a shocraíonn cad a cheadaíonn an cgroup. /dev/net/tun nach cuid den tacar íosta sin é, mar sin aonad le PrivateDevices=yes ní féidir leis é a oscailt, cibé a deir an pholasaí gléis.

Freagraíonn cosaint an chórais chomhad dara ceist. ProtectHome=yes déanann /home, /root agus /run/user dorochtana, agus ProtectSystem=full déanann /usr, /boot agus /etc inléite amháin. Dá bhrí sin oibríonn hook a scríobhann taobh lena chomhad cumraíochta féin i do shell agus teipeann sé faoin aonad, leis an gcruth ceada chéanna is atá ag cumas atá ar iarraidh. Bog an t-ionchur inscríofa chuig cosán a cheadaíonn an pholasaí, nó cuir iontráil ReadWritePaths= chúng leis.

Is iad teorainneacha acmhainní an tríú grúpa, agus an ceann is lú soiléire. TasksMax= uasteorainn ar líon na dtasc a fhéadfaidh an t-aonad a chruthú, agus iompraíonn uasteorainn tuairisceoirí comhad mar an gcéanna do shocóidí agus do lámhchruthaí. Teipeann imscaradh a d'fhás thar an uasteorainn le hearráid acmhainne seach earraid ceada, agus sin é an fáth a mbíonn an teachtaireacht bheacht tábhachtach fós.

Bog an chéim ainmspáis amach as an hook

Baineann ullmhúchán a theastaíonn pribhléid nach ceart don chliant a bheith aige lena aonad féin. Tugann oneshot a ritheann roimh an gcliant, a choimeádann a thoradh agus atá ordaithe roimh an nasc, don chéim ainmspáis an méid a theastaíonn uaithi gan na cearta sin a thabhairt do phróiseas an tolláin. Tagraíonn an cliant ansin don aonad sin in ionad an script a ghlaoch óna hook up.

Is cruth tosaigh é an teimpléad thíos, ní rud a chuirtear i bhfeidhm gan léamh. Coimeádann sé an t-ullmhúchán san áit a bhfuil an phribhléid ina cónaí agus fágann sé aonad an tolláin gan teagmháil:

# /etc/systemd/system/[email protected]
[Unit]
Description=Namespace preparation for %i
Before=openvpn-client@%i.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/local/sbin/netns-up.sh %i
CapabilityBoundingSet=CAP_NET_ADMIN CAP_SYS_ADMIN
[Install]
WantedBy=multi-user.target

Cuir an t-ordú leis le drop-in in ionad an t-aonad pacáistithe a chur in eagar, ionas nach féidir le huasghrádú do athrú a ligean ar lár go ciúin. Tá an t-eolaire eochairthe d'ainm na hathshuite, mar sin teastaíonn a chomhad féin ó dhara próifíl:

sudo mkdir -p /etc/systemd/system/[email protected]
sudo tee /etc/systemd/system/[email protected]/10-namespace.conf >/dev/null <<'CONF'
[Unit]
[email protected]
[email protected]
CONF
sudo systemctl daemon-reload

Déan an glao céanna a athrá tar éis an athraithe

Ní dhearbhaítear deisiú ach amháin nuair a thugann an glao céanna toradh difriúil. Atosaigh an dá aonad, rith an oibríocht ar theip uirthi, agus cuir a toradh i gcomparáid leis an líne loga a shábháil tú roimh an athrú. Ní deisiú é aonad a thosaíonn nuair nach ritheann an hook go deo arís.

Coimeádann an tseicheamh thíos an chomparáid macánta, mar scrúdaíonn sé an glao diúltaithe seach dath an aonaid. Sábháil a aschur taobh leis an líne loga a ghabh tú roimh an athrú:

sudo systemctl restart "[email protected]" "[email protected]"
systemctl status "[email protected]" --no-pager
journalctl -u "[email protected]" -b --no-pager | grep -c 'Operation not permitted'
ip -brief addr show tun0

Déan na diúltuithe a chomhaireamh in ionad an líne dheireanach a léamh, mar féadfaidh hook teip, athiarracht agus éirí, agus ní thaispeánann ach an comhaireamh ar bhog an teorainn. Fág nóta sa drop-in ag ainmniú na treorach a d'fhuascail tú agus an chúis, ós rud é go gcuireann an chéad uasghrádú eile do chumraíocht i gcomparáid leis an réamhshocrú pacáistithe. Ní deisíodh aonad nach dtosaíonn ach nuair a dhíghníomhaítear gach cosaint.

Ailt ghaolmhara