VPN-knappen fungerar för administratören och misslyckas för alla andra, så någon lägger till en rad i sudoers. Den raden lever oftast längre än problemet den skulle lösa, och den ger ofta mer än knappen behöver. Innan du redigerar policyn, kontrollera om den stödda ägaren av anslutningen redan kan utföra arbetet. De tre villkoren nedan avgör om sudo ens är inblandat.

Villkor 1: den stödda ägaren kan göra det utan sudo

På de flesta Linux-skrivbord äger nätverkshanteraren redan VPN-anslutningarna, och dess auktorisering går via polkit i stället för sudo. En användare som får resa en anslutning kan göra det från kommandoraden utan någon root-regel. Kontrollera vad hanteraren tillåter innan du antar att knappen behöver ett privilegium. Om svaret är ja löser ändringen i sudoers ett problem som inte finns.

nmcli connection show
nmcli connection up "Work VPN"

Om hanteraren vägrar, läs varför: en saknad polkit-regel, en anslutning som ägs av en annan användare eller en profil som sparats där användaren inte kan läsa den. Var och en av dessa har en stödd lösning som är smalare än en sudo-regel. Privilegiehöjning är det sista medlet, inte det första.

Villkor 2: regeln namnger en enda körbar fil och dess argument

Om sudo verkligen behövs bör regeln namnge det exakta kommandot och, där det är möjligt, de argument det får använda. En regel som låter en användare köra ett omslagsskript är bara så säker som skriptets rättigheter, eftersom användaren kan redigera vad root ska köra. En regel med ett jokertecken efter kommandot är samma problem i kortare form.

sudo -l -U alice
ls -l /usr/local/sbin/vpn-up

Kontrollera varje sökväg i kommandokedjan: binären, skriptet den anropar, konfigurationsfilen den läser och varje katalog däremellan. Om användaren kan skriva i någon av dem är den avgränsade regeln i praktiken obegränsad root. Argument spelar också roll, eftersom ett kommando som tar emot en konfigurationssökväg kan riktas mot en fil som användaren kontrollerar. Skriv regeln för operationen, inte för knappen.

Stoppa om kommandot behöver en användarkontrollerad fil för att fungera. Då är designen fel, och ingen sudoers-syntax gör den säker.

Villkor 3: hela policyn tolkas, inte bara din rad

Validera med editorn som låser filen och kontrollerar syntaxen, och validera den sammansatta policyn i stället för ett fragment. En fil som tolkas själv kan fortfarande bryta inkluderingsordningen eller duplicera en regel på ett sätt som ändrar beteendet.visudo-handboken dokumenterar både den låsande editorn och det kontrolläge som används här.

sudo visudo -c
sudo visudo -cf /etc/sudoers.d/vpn-launcher

Kontrollen rapporterar filen och raden när den misslyckas, och just den rapporten är den användbara delen. Reparera den avsedda ändringen via editorn i stället för att tvinga fram en känd fel, eftersom en trasig policy kan låsa ute alla administratörer på en gång. Filer i inkluderingskatalogen behöver också det ägarskap och det läge som handboken kräver, annars ignoreras eller avvisas de. Syntax är bara den första porten: när den är passerad, läs regeln igen och fråga vad den faktiskt tillåter.

Stoppa om det enda sättet att få ändringen att fungera är att stänga av syntaxkontrollen. Det är ingen policy, det är ett avbrott som väntar på en omstart.

Återställning: behåll en session som fortfarande fungerar

Innan du sparar, se till att en auktoriserad administrativ session redan är öppen och att det finns en andra väg in i maskinen. Ett misstag i sudoers kan ta ifrån dig möjligheten att rätta det, och en skrivbordsknapp är inte värd den risken. Om sudo redan är trasigt, använd systemets dokumenterade återställningsväg i stället för att improvisera en.

sudo -n true
id

Alternativ som pkexec beror på sin egen installation och policy, så de är inte en garanterad andra root-fråga. Håll lokal auktorisering åtskild från leveransen av VPN-hemligheten också: en sudo-regel kan inte låsa upp en frånvarande hemlighetsagent, och den uppfyller inte gatewayens MFA. Efter rättelsen, testa det vanliga kontot som bara utför den avsedda operationen, och använd sedan hanterarens vanliga kontroller.

Beslutet slutar när du kan säga vilket villkor som motiverade sudo, vad regeln namnger, att hela policyn tolkas och hur du skulle återställa om inte. En privilegierad startare som kostar dig administrativ åtkomst är en dålig affär, och den är oftast undviklig.

Relaterade artiklar