Hooks ɗin haɗi a kan daemon na VPN suna gudana a matsayin daemon, kuma yawanci hakan yana nufin suna gudana a matsayin root. A lokacin da ɗaya daga cikin waɗannan hooks ya rubuta cikin babban fayil ɗin wani ko ya sake kunna mataimakin tebur, ka ba wa wani abin da ya faru a cibiyar sadarwa ikon yin aiki a matsayin kowane mai amfani na gida. Hanyar gajeriyar da aka saba, karanta sunan mai amfani daga sauɓin muhalli da miƙa shi, ba ya gyara hakan. Yana sake yi wa aikin lakabi ne kawai ba tare da canza wane asusu ne ke aiwatar da shi ba. Abin da ke aiki shi ne miƙa kashi uku inda matakin da ke da izini ke faɗin abin da ya faru, sannan wani rukuni daban ke yin aikin a ƙarƙashin ainihin asalin da ya dace.

Sunan mai amfani a cikin muhalli ba makullin asali ba ne

Unix yana yanke shawarar abin da tsari zai iya taɓawa daga ID ɗin mai amfani mai tasiri, ba daga igiyoyin da ke cikin muhallinsa ba. Saita USER=alice ko fitar da LOGNAME yana canza abin da software marar kulawa ke bugawa a fitarsa; ba ya canza kome a cikin duba mallakar fayil. Hook da ke gudana a matsayin root tare da wannan sauɓin yana buɗe fayilolin Alice a matsayin root har yanzu.

Su ma sunayen ba suna ɗaya ba ne. Shiga na nesa, asusun Unix na gida da sunan gama gari na takardar shaida su ne masu gano abu uku waɗanda sukan zo ɗaya kuma wani lokacin ba su zo ba. Mai amfani da ke tabbatarwa a matsayin a.smith ƙila ba shi da wani asusu na gida kwata-kwata, ko kuma ana mai da shi asmith ta hanyar sabis ɗin jagora. Duk wani tsari da ke ɗauka cewa igiya ɗaya za ta yi ayyukan uku zai karye a ɗan kwangila na farko.

Don haka tambaya ta farko ba «wane mai amfani ne aka haɗa» ba ce, sai dai «wane asusu na gida aka ba shi izinin yin wannan aikin». Amsa hakan daga rumbun bayanan asusunka, ba daga abin da abokin ciniki ya aika ba:

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

Umurnin na uku shi ne wanda mutane ke tsallakewa. Idan fayil ɗin da ake nufi mallakar root ne domin hook ɗin da ya gabata ya ƙirƙira shi, aikin mai amfani da aka tsara daidai zai kasa da kuskuren izini wanda ke kama da matsalar systemd amma ba ita ba ce.

Daemon ɗin yana nan inda yake

Canza User= na sabis ɗin VPN da kansa zuwa Alice shine sandar da ba ta dace ba. Yana canza yadda daemon ke ɗaure muƙamai, karanta maɓallai, rubuta fayil ɗin matsayinsa da sarrafa hanyoyi, kuma yana mayar da duk wannan haɗarin cikin rukuni da ke aiki. Daemon yana buƙatar izininsa; aikin da ke biyo baya ba ya buƙata.

Duba abin da rukunin ke yi a zahiri kafin ka taɓa shi. Umurnai biyu suna gaya maka asalin aiwatarwa da ainihin layukan umarni da ke aiki, gami da duk abin da wani sakewa ya ƙara:

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

A kan shigarwar fakiti ta tsohuwa daemon ɗin root ne kuma rubutun --up yana gado hakan. Tabbatar da hakan maimakon ɗauka, domin rarraba da aka taurare ƙila ya matsar da shi zuwa wani asusu na musamman, kuma drop-in da aka rubuta da hannu zai iya gudanar da hook ɗin ta hanyar nade mai wasu dokoki.

Sassa uku masu suna, mai tayarwa ɗaya mai kunci

Tsarin da ke jure kulawa yana da abin da ya faru, mai tayarwa da aiki. Daemon ɗin yana ba da labarin cewa wani zama mai suna ya tashi. Mai tayarwa yana karɓar wannan ƙaramin gaskiya kuma yana neman aiki ɗaya tsayayye. Aikin yana gudana ƙarƙashin asusun gida wanda ya mallaki fayilolin da yake taɓawa. Babu wani abu a cikin sarkar da ke karɓar hanyar umarni da aka yi yadda aka so.

Aikin da kansa rukunin sabis ne na yau da kullum, kuma asalin shine umarni ɗaya a cikinsa:

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

Lura cewa User=alice ya shafi dukan rukunin, kuma systemd yana rubuta keɓancewa ɗaya da ya cancanci sani: umarni da ke da prefix + yana gudana da cikakken izini ko da menene. Wannan prefix kayan aiki ne na halal don mataki ɗaya mai izini da kuma hanya mai sauƙi ta soke rabuwa da ka gina yanzu, don haka ɗauki duk wani + a cikin wannan rukunin a matsayin abin da za a bayar da hujja a bita.

Ka riƙe shigarwar mai tayarwa kaɗan kuma ba ta sirri. Mai gano zama, asusun da aka mai da shi da tambarin lokaci yawanci sune duk abin da ake buƙata. Kada ka taɓa miƙa guntun shell, hanyar fayil mai aiwatarwa ko toshewar muhalli da abokin ciniki ya bayar a kan iyaka, domin ɓangaren da ke karɓa ba shi da hanyar bambance ƙima ta halal da wadda aka saka.

Tabbatar da asalin da ya gudana a zahiri

Bitar saitin ba hujja ba ce. Bayan haɗin gwaji da aka amince da shi, tabbatar da UID ɗin da ya taɓa fayil ɗin da UID ɗin da daemon ke amfani da shi har yanzu:

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

Layin farko ya kamata ya nuna Alice da tambarin lokaci cikin tagar gwajinka. Na biyu ya kamata ya nuna root ko asusun sabis na fakitin har yanzu, wanda ke tabbatar da cewa daemon bai motsa ba. Na uku ita ce hanya mafi arha ta gwada izinin aikin ba tare da jiran sake haɗi na gaske ba.

Idan mai fayil ɗin Alice ne amma ƙungiyarsa ko yanayinsa ya canza tsakanin gudanarwa, nemi UMask= ko bambancin izinin babban fayil maimakon kuskuren dabaru. Idan tambarin lokaci bai motsa kwata-kwata ba, mai tayarwa bai taɓa tashi ba, kuma mataki na gaba mai amfani shine journalctl -u don rukunin aikin maimakon wani sake haɗin abokin ciniki.

Abin da abin da ya faru na haɗi har yanzu ba ya tabbatarwa

Ramin da aka kafa gaskiya ɗaya ce. Ba ya nufin an buɗe zaman tebur, ana iya isa bas ɗin zama, ko kuma wataƙila kayan sirri da aikin ke so suna nan. Rukunin oneshot a ƙarƙashin UID na Alice yana da asalinta kuma babu kome daga zamanta, don haka duk abin da ke buƙatar bas mai hoto dole ya bi hanyar zaman mai amfani da aka tallafa kuma ya bayyana abin da ke faruwa lokacin da ta fita.

Sake haɗi ma suna maimaitawa. Kwamfutar tafi-da-gidanka da ke barci cikin jirgin ƙasa na iya haifar da abubuwan da suka faru goma sha biyu cikin sa'a ɗaya, kuma hook da ke ƙara layi kowace lokaci yana mai da fayil ɗin matsayi ya zama tarihin da babu wanda zai iya karantawa. Ka mai da aikin idempotent, ko ka bar shi ya maye gurbin rikodi ɗaya mai maɓallin zama.

A ƙarshe, iyakance gwargwadon ɓarna cikin rukunin kansa: kallon tsarin fayil mai karatu kawai banda babban fayil ɗin matsayi, babu sabon izini, da ƙayyadadden lokaci. Rabuwar daemon da aikin mai amfani tana da amfani da kanta, amma tana da amfani sosai lokacin da aikin ba zai iya yin komai sai abin da ka amince da shi.

Labarai masu alaƙa