Is-servizz VPN ifalli f’EXEC: qabbel unit, binari u sudoers
Falliment fil-pass EXEC ifisser li systemd ma setax jibda l-binari. Qabbel il-mogħdija tal-unit, il-mogħdija installata u l-permess sudoers qabel ma tbiddel xejn.
Ilbieraħ it-tunnel ħadem, u dalgħodu l-unit hija mejta b’Failed at step EXEC spawning /usr/local/bin/vpnclient fil-journal. Il-kredenzjali, ir-rotot u l-kont qatt ma jidħlu f’dik is-sentenza. systemd irriżolva ExecStart għal mogħdija, talab lill-kernel biex jeżegwiha, u l-kernel irrifjuta, ħafna drabi għax f’dik il-mogħdija m’hemm xejn jew il-fajl mhuwiex eżekutibbli. Ittratta l-ħsara bħala problema ta’ fajl u argv sakemm il-kmand analizzat jipprova l-kuntrarju.
Għaliex EXEC ifalli qabel ma jibda l-awtentikazzjoni
systemd ma jmexxix ExecStart permezz ta’ shell. Jagħmel fork, jibni vettur ta’ argumenti mil-linja u jsejjaħ execve fuq l-ewwel element. Jekk dik is-sejħa tfalli, is-servizz qatt ma jasal għall-kodiċi proprju tal-klijent VPN, għalhekk l-ebda editjar tal-profil jew verifika tal-kredenzjali ma jista’ jgħin.
Il-kodiċi tal-istat jifred din il-familja minn ħsarat ordinarji. Unit li toħroġ b’status=203/EXEC qatt ma bdiet proċess; unit li tibda u mbagħad toħroġ b’status=1 forsi falliet fl-awtentikazzjoni, fid-DNS jew fl-instradar. Aqra l-kodiċi qabel il-log tal-klijent, għax fl-ewwel każ il-log tal-klijent se jkun vojt.
Il-mogħdija fil-journal hija dik li uża systemd, mhux bilfors dik li editjajt. Il-fajls drop-in u l-output tal-ġeneratur jistgħu jaqbżu l-fajl tal-fornitur, u daemon-reload antik iħalli l-linja l-qadima fil-memorja. Għalhekk l-ewwel dijanjosi hija li tistaqsi lil systemd x’jaħseb li huwa l-kmand, minflok ma tiftaħ il-fajl li tiftakar li biddilt.
Tliet postijiet fejn tinbarà l-mogħdija tal-binari
Klijent VPN installat minn pakkett tad-distribuzzjoni, skript tal-fornitur u tarball tar-rilaxx jista’ jispiċċa fi tliet prefissi differenti. L-unit, ir-regola tal-privileġġ u l-installatur kull wieħed irreġistra waħda minn dawk il-prefissi, u l-ħsara tidher meta tnejn mit-tlieta ma jaqblux.
| Record | Common value | How to read it |
|---|---|---|
| Unit or drop-in | /usr/local/bin/vpnclient | systemctl cat vpnclient.service |
| Installed binary | /usr/bin/vpnclient | command -v vpnclient, then ls -l the result |
| Sudoers grant | /opt/vpnclient/bin/vpnclient | sudo grep -r vpnclient /etc/sudoers.d/ |
Nuqqas ta’ qbil konkret jidher hekk: l-iskript tal-fornitur jinstalla f’/usr/local/bin, it-tarball inħareġ taħt /opt, u l-unit għadha ssemmi l-mogħdija l-qadima /usr/bin minn pakkett preċedenti. Wieħed biss minn dawk il-fajls jeżisti, u rari huwa dak li jinsab f’ExecStart.
Iddeċiedi liema mogħdija hija kanonika qabel ma tbiddel wieħed mill-fajls. Jekk il-pakkett tad-distribuzzjoni jippossjedi l-binari, il-mogħdija tal-pakkett hija kanonika u l-unit għandha ssegwiha. Jekk jippossjediha l-iskript tal-fornitur, l-istess regola tapplika għall-prefiss tal-fornitur. L-ikkupjar ta’ binari bejn prefissi joħloq żewġ kopji li jitbiegħdu fl-aġġornament li jmiss.
Meta kmand fil-virgoletti jsir isem ta’ fajl
It-tieni mod ta’ ħsara jinħeba wara l-istess linja tal-journal. Xi ħadd jikteb dan fl-unit u jistenna li l-klijent jikkonnettja waqt il-boot:
ExecStart=/usr/bin/"vpnclient connect office"systemd jaqsam il-valur fi kliem, għalhekk l-ewwel kelma ssir /usr/bin/vpnclient connect office, filwaqt li l-virgoletti jitneħħew bħala sintassi ta’ grupp. Imbagħad il-kernel ifittex fajl li f’ismu hemm spazji, u dan ma jeżistix. L-iżball huwa identiku għal binari nieqes għalkemm il-binari huwa installat.
Il-forma appoġġjata hija eżekutabbli vera segwita minn argumenti separati, pereżempju ExecStart=/usr/bin/vpnclient connect office. Jekk il-fluss tax-xogħol tassew jeħtieġ pipeline jew katina, poġġih fi skript u sejjaħ l-iskript, għax ExecStart m’għandux &&, m’għandux pipes u m’għandux espansjoni glob.
Sewwi l-unit, mhux is-sistema tal-fajls
It-tiswija li tħajjar hija rabta simbolika mill-mogħdija mistennija għall-binari veru. Taħdem sakemm il-pakkett jiġi aġġornat u r-rabta tipponta lejn fajl imneħħi, jew sakemm tikketta SELinux ma tibqax taqbel mal-mira. Ippreferi teditja l-unit permezz ta’ drop-in sabiex il-fajl tal-fornitur jibqa’ mhux mittiefes u l-aġġornamenti jibqgħu prevedibbli.
Ir-regola tal-privileġġ trid taqbel mal-istess mogħdija u l-istess subkmandi. Entrata sudoers għal /usr/local/bin/vpnclient ma tawtorizzax /usr/bin/vpnclient, u entrata li tippermetti kull argument tħalli lil kwalunkwe proċess lokali jikkonfigura mill-ġdid jew iwaqqaf it-tunnel. Agħti ż-żewġ verbi li teħtieġ l-unit u żomm l-iżmontar barra minnha jekk it-twaqqif tas-servizz diġà jagħlaq l-interface.
Hawnhekk il-paragun iħallas: l-unit, id-database tal-pakketti u sudoers għandhom kollha jsemmu mogħdija waħda. Meta jagħmlu hekk, l-iżball EXEC jisparixxi mingħajr reboot u mingħajr kopja tal-binari f’post terz.
Ipprova l-kmand analizzat qabel it-tnedija mill-ġdid
sudo systemctl daemon-reload
sudo systemctl cat vpnclient.service
systemctl show -p ExecStart vpnclient.service
systemd-analyze verify /etc/systemd/system/vpnclient.service
sudo systemctl restart vpnclient.service
systemctl status vpnclient.service --no-pagersystemctl show huwa l-output deċiżiv għax jipprintja l-argv li systemd tassew analizza, inkluż kwalunkwe drop-in. systemd-analyze verify jaqbad mogħdija nieqsa jew mhux eżekutibbli qabel ma terġa’ tibda, u l-kmand status wara t-tnedija mill-ġdid jgħidlek jekk il-proċess issa jeżistix.
Jekk l-unit tibda u mbagħad tfalli, tkun ħallejt il-familja EXEC u dħalt fil-ġestjoni tal-iżbalji tal-klijent stess. Fittex fil-journal il-messaġġ tal-klijent, mhux falliment ieħor ta’ execve. Żomm id-diff tal-unit u d-diff ta’ sudoers flimkien fir-rekord tal-bidla, sabiex l-aġġornament li jmiss ma jerġax idaħħal il-mogħdija maqsuma bil-kwiet.