Ritheann crúcaí naisc ar dhaemon VPN mar an daemon, agus de ghnáth ciallaíonn sé sin go ritheann siad mar root. An nóiméad a scríobhann ceann de na crúcaí sin i gcomhadlann bhaile duine éigin nó a atosaíonn sé cúntóir deisce, tá cumas tugtha agat d’imeacht líonra gníomhú mar aon úsáideoir áitiúil treallach. Ní leigheasann an aicearra is gnách, ainm úsáideora a léamh ó athróg timpeallachta agus é a rith ar aghaidh, é sin. Ní dhéanann sé ach an gníomh a athlipéadú gan an cuntas a fhorghníomhaíonn é a athrú. Is é a oibríonn aistriú trí pháirt ina ndeir an chéim phribhléideach cad a tharla agus ina ndéanann aonad ar leith an gníomh faoin bhfíor-aitheantas ceart.

Ní lasc deimhnithe é ainm úsáideora sa timpeallacht

Cinneann Unix cad ar féidir le próiseas teagmháil leis óna ID úsáideora éifeachtach, ní ó na teaghráin ina thimpeallacht. Athraíonn socrú USER=alice nó easpórtáil LOGNAME an rud a phriontálann bogearraí míchúramacha ina n-aschur; ní athraíonn sé aon rud sna seiceálacha úinéireachta comhad. Osclaíonn crúca a ritheann mar root agus an athróg sin socraithe comhaid Alice mar root fós.

Ní hé an t-ainm céanna iad na hainmneacha ach an oiread. Is trí aitheantóir iad an logáil isteach rochtana cianda, an cuntas Unix áitiúil agus príomhainm an teastais a thagann le chéile go minic agus nach dtagann uaireanta. B’fhéidir nach bhfuil aon chuntas áitiúil ag úsáideoir a fhíordheimhníonn mar a.smith, nó go ndéantar é a mhapáil chuig asmith trí sheirbhís eolairí. Brisfidh aon dearadh a ghlacann go bhfreastalaíonn teaghrán amháin ar na trí ról ar an gcéad chonraitheoir.

Mar sin ní hé an chéad cheist «cén t-úsáideoir atá nasctha» ach «cén cuntas áitiúil a bhfuil cead aige an gníomh seo a dhéanamh». Freagair é sin ó do bhunachar sonraí cuntas féin, ní ón rud a sheol an cliant:

id -u alice
getent passwd alice | cut -d: -f1,3,6
stat -c '%U:%G %a %n' /home/alice/.local/state/vpn-status.json

Is é an tríú ordú an ceann a scipeálann daoine. Má tá an comhad sprice faoi úinéireacht root toisc gur chruthaigh an crúca roimhe é, teipfidh gníomh úsáideora atá cumraithe i gceart le hearráid cheada a fhéachann mar fhadhb systemd agus nach ea.

Fanann an daemon san áit a bhfuil sé

Is é an luamhán mícheart User= féin na seirbhíse VPN a athrú go Alice. Athraíonn sé conas a cheanglaíonn an daemon comhéadain, a léann sé eochracha, a scríobhann sé a chomhad stádais agus a bhainistíonn sé bealaí, agus aistríonn sé an riosca sin go léir isteach in aonad a bhí ag obair. Teastaíonn a phribhléidí ón daemon; ní theastaíonn siad ón ngníomh leantach.

Féach cad atá an t-aonad a dhéanamh i ndáiríre sula dtéann tú i dteagmháil leis. Insíonn dhá ordú duit an t-aitheantas forghníomhaithe agus na línte ordaithe cruinne atá i bhfeidhm, lena n-áirítear aon rud a chuir sárú isteach:

systemctl show -p User -p Group -p ExecStart openvpn-server@server
systemctl cat openvpn-server@server

Ar shuiteáil phacáiste réamhshocraithe is root an daemon agus faigheann an script --up sin le hoidhreacht. Deimhnigh é seachas glacadh leis, mar b’fhéidir go bhfuil dáileadh cruaite tar éis é a bhogadh chuig cuntas tiomnaithe, agus b’fhéidir go ritheann drop-in scríofa de láimh an crúca trí fhilleadh le rialacha difriúla.

Trí pháirt ainmnithe, aon truicear cúng

Tá teagmhas, truicear agus gníomh ag an socrú a mhaireann trí chothabháil. Tuairiscíonn an daemon gur éirigh seisiún ainmnithe. Glacann truicear leis an bhfíric bheag sin agus iarrann sé aon ghníomh amháin seasta. Ritheann an gníomh faoin gcuntas áitiúil ar leis na comhaid a mbíonn sé i dteagmháil leo. Ní ghlacann aon rud sa slabhra le cosán ordaithe treallach.

Is aonad seirbhíse coitianta é an gníomh féin, agus is aon treoir amháin taobh istigh de é an t-aitheantas:

[Service]
Type=oneshot
User=alice
Group=alice
ExecStart=/usr/local/bin/refresh-vpn-status --slot %i

Tabhair faoi deara go mbaineann User=alice leis an aonad iomlán, agus déanann systemd doiciméadú ar aon eisceacht amháin ar fiú í a bheith ar eolas: ritheann ordú a bhfuil an réimír + leis le lánphribhléidí beag beann ar sin. Is uirlis dhlisteanach an réimír sin do aon chéim phribhléideach amháin agus is bealach áisiúil é chun an scaradh a rinne tú a chealú, mar sin caith le haon + san aonad sin mar rud a chaithfear a chosaint le linn athbhreithnithe.

Coinnigh ionchur an truiceartha íosta agus neamh-rúnda. Is iad aitheantóir an tseisiúin, an cuntas mapáilte agus stampa ama de ghnáth gach a dteastaíonn. Ná cuir riamh blúire sliogáin, cosán inrite nó bloc timpeallachta ón gcliant thar na teorann, mar níl aon bhealach ag an taobh glacadóra idirdhealú a dhéanamh idir luach dlisteanach agus ceann insteallta.

Fíoraigh an t-aitheantas a rith i ndáiríre

Ní fianaise é athbhreithniú cumraíochta. Tar éis nasc tástála ceadaithe, deimhnigh an UID a bhain leis an gcomhad agus an UID atá an daemon fós ag úsáid:

stat -c '%U %G %y %n' /home/alice/.local/state/vpn-status.json
ps -o user=,pid=,cmd= -p "$(pgrep -o -f 'openvpn --daemon')"
systemd-run --uid=alice --pipe /usr/local/bin/refresh-vpn-status --dry-run

Ba chóir go dtaispeánfadh an chéad líne Alice agus stampa ama laistigh de do fhuinneog tástála. Ba chóir go dtaispeánfadh an dara líne root nó cuntas seirbhíse an phacáiste fós, rud a chruthaíonn nár bhog an daemon. Is é an tríú ceann an bealach is saoire chun ceadanna an ghnímh a thástáil gan fanacht le hathnascadh fíor.

Más é Alice úinéir an chomhaid ach gur athraigh a ghrúpa nó a mhód idir ritheanna, féach le haghaidh UMask= nó difríocht chead comhadlainne seachas earráid loighce. Mura bhfuil an stampa ama bogtha ar chor ar bith, níor lasadh an truicear riamh, agus is é an chéad chéim úsáideach eile journalctl -u don aonad gnímh seachas athnascadh cliaint eile.

Cad nach gcruthaíonn teagmhas naisc fós

Is aon fhíric amháin é tollán bunaithe. Ní chiallaíonn sé go bhfuil seisiún an deisce díghlasáilte, go bhfuil bus an tseisiúin inrochtana, nó go bhfuil an acmhainn phríobháideach a theastaíonn ón ngníomh ar fáil fós. Tá a aitheantas ag aonad oneshot faoi UID Alice agus rud ar bith dá seisiún, mar sin caithfidh aon rud a éilíonn bus grafach dul trí mheicníocht seisiúin úsáideora atá tacaíochta agus a shainiú cad a tharlaíonn nuair a bhíonn sí logáilte amach.

Athnítear athnascadh freisin. Is féidir le ríomhaire glúine a chodlaíonn ar thraein dosaen imeachtaí naisc a chruthú in uair an chloig, agus casann crúca a chuireann líne leis gach uair comhad stádais ina log nach féidir le duine ar bith é a léamh. Déan an gníomh idempotent, nó lig dó taifead amháin a bhfuil eochair seisiúin aige a athsholáthar.

Ar deireadh, cuir teorainn leis an ngaol damáiste san aonad féin: radharc córas comhad inléite amháin seachas an chomhadlann stádais, gan aon phribhléidí nua, agus teorainn ama shoiléir. Is fiú an scaradh idir daemon agus gníomh úsáideora ann féin, ach is fiú i bhfad níos mó é nuair nach féidir leis an ngníomh aon rud a dhéanamh ach an t-aon rud a cheadaigh tú.

Ailt ghaolmhara