Gëschter huet den Tunnel funktionéiert, an haut de Moien ass d’Unit dout mat Failed at step EXEC spawning /usr/local/bin/vpnclient am Journal. D’Zougangsdaten, d’Routen an de Kont kommen ni an dee Saz. systemd huet ExecStart zu engem Pfad opgeléist, de Kernel gefrot en auszeféieren, an de Kernel huet refuséiert, meeschtens well et op deem Pfad näischt gëtt oder d’Datei net ausféierbar ass. Behandelt de Feeler als Datei-an-argv-Problem, bis de geparste Befehl dat Géigendeel beweist.

Firwat EXEC feelt, ier d’Authentifizéierung ufänkt

systemd féiert ExecStart net iwwer eng Shell aus. Et forkt, baut aus der Linn en Argumentvektor a rifft execve um éischten Element op. Wann deen Opruff feelt, erreecht den Service ni den eegene Code vum VPN-Client, dofir hëlleft weder Profilännerung nach Kontroll vun den Zougangsdaten.

Den Statuscode trennt dës Famill vun normale Crash’en. Eng Unit, déi mat status=203/EXEC erausgeet, huet ni e Prozess gestart; eng Unit, déi startet an duerno mat status=1 erausgeet, ass vläicht bei der Authentifizéierung, dem DNS oder der Routéierung gescheitert. Liest de Code virum Client-Log, well am éischte Fall wäert de Client-Log eidel sinn.

De Pfad am Journal ass deen, deen systemd benotzt huet, net onbedéngt deen, deen Dir geännert hutt. Drop-in-Dateien an d’Ausgab vum Generator kënnen d’Datei vum Liwwerant iwwerschreiwen, an en ale daemon-reload léisst déi al Linn am Späicher. Dofir ass déi éischt Diagnos, systemd ze froen, wat et fir de Befehl hält, amplaz d’Datei opzemaachen, déi Dir nach als geännert erënnert.

Dräi Plazen, wou de Pfad vun der Binärdatei steet

E VPN-Client, deen aus engem Distributiounspak, engem Liwwerantskript an engem Release-Tarball installéiert gouf, kann an dräi verschidde Präfixer landen. D’Unit, d’Privilegieregel an den Installateur hunn jee een dovun notéiert, an de Feeler erschéngt, wann zwee vun den dräi net iwwerenee stëmmen.

RecordCommon valueHow to read it
Unit or drop-in/usr/local/bin/vpnclientsystemctl cat vpnclient.service
Installed binary/usr/bin/vpnclientcommand -v vpnclient, then ls -l the result
Sudoers grant/opt/vpnclient/bin/vpnclientsudo grep -r vpnclient /etc/sudoers.d/

Eng konkret Onstëmmegkeet gesäit esou aus: d’Liwwerantskript installéiert op /usr/local/bin, den Tarball gouf ënner /opt ausgepakkt, an d’Unit nennt nach ëmmer den ale Pfad /usr/bin aus engem fréiere Pak. Nëmmen eng vun dësen Dateie gëtt et, an et ass seelen déi an ExecStart.

Entscheet, wéi ee Pfad kanonesch ass, ier Dir eng vun den Dateie ännert. Wann d’Distributiounspak d’Binärdatei besëtzt, ass de Pakpfad kanonesch an d’Unit soll him follegen. Wann d’Liwwerantskript se besëtzt, gëllt déi selwecht Regel fir de Präfix vum Liwwerant. Eng Binärdatei tëscht Präfixer ze kopéieren erstellt zwee Kopien, déi beim nächsten Upgrade auserneelafen.

Wann e Befehl an Anführungszeechen en Dateinumm gëtt

En zweeten Feelerzoustand verstoppt sech hannert der selwechter Journallinn. Iergendeen schreift dëst an d’Unit a erwaart, datt de Client beim Boot verbënnt:

ExecStart=/usr/bin/"vpnclient connect office"

systemd deelt de Wäert a Wierder, sou datt d’éischt Wuert /usr/bin/vpnclient connect office gëtt, woubäi d’Anführungszeechen als Gruppéierungssyntax ewechgeholl ginn. Duerno sicht de Kernel eng Datei, deenen hirem Numm Espacen dran sinn, an et gëtt keng. De Feeler ass identesch mat deem vun enger fehlender Binärdatei, obwuel d’Binärdatei installéiert ass.

Déi ënnerstëtzt Form ass eng richteg ausféierbar Datei, gefollegt vun getrennten Argumenter, zum Beispill ExecStart=/usr/bin/vpnclient connect office. Wann den Aarbechtsflux wierklech eng Pipeline oder eng Kette brauch, setzt se an e Skript a rifft d’Skript op, well ExecStart huet keen &&, keng Pipen a keng Glob-Erweiderung.

Reparéiert d’Unit, net de Dateisystem

Déi verlockend Reparatur ass e symblesche Link vum erwaartenen Pfad op déi richteg Binärdatei. E funktionnéiert, bis de Pak aktualiséiert gëtt an de Link op eng geläschte Datei weist, oder bis en SELinux-Label net méi zum Zil passt. Ännert d’Unit léiwer iwwer en Drop-in, sou datt d’Datei vum Liwwerant onberéiert bleift an d’Upgraden viraussobar bleiwen.

D’Privilegieregel muss zu deem selwechte Pfad an deene selwechte Sousbefehler passen. En sudoers-Antrrag fir /usr/local/bin/vpnclient autoriséiert net /usr/bin/vpnclient, an en Antrrag, deen all Argument erlaabt, léisst all lokale Prozess den Tunnel nei konfiguréieren oder stoppen. Gitt déi zwee Verben, déi d’Unit brauch, a haalt den Ofbau dobaussen, wann d’Stoppe vum Service d’Interface schonn zoumaacht.

Hei bezilt sech de Verglach: d’Unit, d’Pakdatebank an sudoers sollten all ee Pfad nennen. Wa se dat maachen, verschwënnt den EXEC-Feeler ouni Neistart an ouni eng Kopie vun der Binärdatei op enger drëtter Plaz.

Beweist de geparste Befehl virum Neistart

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-pager

systemctl show ass déi entscheedend Ausgab, well se d’argv ausgëtt, déi systemd tatsächlech geparst huet, inklusiv all Drop-in. systemd-analyze verify fänkt en onbekannten oder net ausféierbaren Pfad of, ier Dir nei start, an de Statusbefehl nom Neistart seet Iech, ob de Prozess elo existéiert.

Wann d’Unit startet an duerno feelt, hutt Dir d’EXEC-Famill verlooss an sidd an dem Client seng eege Feelerbehandlung komm. Sicht am Journal no der Noriicht vum Client, net no nach engem execve-Feeler. Haalt den Unit-Diff an den sudoers-Diff zesummen am Ännerungsregister, sou datt den nächsten Upgrade de gedeelte Pfad net roueg erëmbréngt.

Ähnlech Artikelen