У изразу „покрени то у позадини“ крију се два питања. Прво је да ли овај корисник уопште сме да покрене привилеговани процес; друго је да ли се сесија може наставити без тога да неко куца у терминал. Амперсанд љуске не одговара ни на једно, а скрипта која чува sudo лозинку у променљивој лоше одговара на прво и оставља друго нетакнутим. Раздвојите их и опције постају лаке за поређење.

Упоредите три кандидата по власништву, а не по удобности.

Три начина да напустите терминал, три различита власника

Додавање амперсанда на команду тражи од љуске да је изврши као позадински посао, а посао и даље припада тој љусци. sudo може да пита пре него што програм уопште почне, а OpenVPN може затим да пита за лозинку кључа или пријаву. Покретање команде која очекује унос у позадини ствара процес који чека терминал који нико не гледа. Терминал се ослобађа; интеракција не.

То је најјефтинија опција и она која не успева најзбуњујуће, јер се захтев појављује на месту које је оператер већ напустио.

sudo -b није руковалац акредитива

sudo -b извршава команду у позадини из перспективе самог sudo, што звучи као функција која недостаје и није. Према упутству за sudo, интерактивне команде се у том режиму обично понашају лоше, а контрола послова љуске не може да управља процесима које ствара. Премешта процес без тога да му да начин да одговара на питања. Ништа у њему не обезбеђује лозинку приватног кључа или пријаву на мрежни пролаз.

Ако веза захтева интеракцију, решење је подржана неинтерактивна поставка аутентификације, а не други начин да се покрене исти захтев.

--daemon мења програм, а не пријаву

--daemon тражи од самог OpenVPN да се одвоји после иницијализације. Упутство за верзију 2.6 примећује да се преусмеравање syslog-а дешава приликом парсирања опције, иако се одвајање дешава касније, па поруке могу престати да се појављују у терминалу раније него што се очекивало. Тишина после те тачке ништа не доказује о тунелу. Додајте експлицитну --log или --log-append тако да излаз стигне негде где можете да га прочитате.

Режим демона такође трајно уклања конзолу. Заштићени приватни кључ у том режиму захтева askpass , а акредитиви унети са конзоле заједно са опцијама кеширања могу оставити каснију поновну аутентификацију без места за питање. Проверите модел аутентификације према инсталираној верзији пре него што претпоставите да ће позадинско покретање преживети прво обнављање кључа.

Шта sudo валидација даје, а шта не

sudo -v валидира или освежава кеширане локалне акредитиве, аутентикујући се ако политика то захтева. Не покреће OpenVPN, не аутентикује се са мрежним пролазом и не гарантује да ће каснија команда у скрипти бити дозвољена. sudo -n значи супротно: не питај, него не успеј. То чини локални неуспех ауторизације експлицитним, што је корисно, и не говори ништа о томе шта ће OpenVPN затражити касније.

Ниједна опција није разлог да се свима доделе команде без лозинке или да се администраторска лозинка убаци у скрипту.

Преферирајте власника који се може посматрати

За тунел у власништву машине, користите пример услуге који дистрибуција подржава. Такав власник пружа покретање, заустављање, статус и дневнике, и преживљава крај ваше сесије. Састављање позадинског рада љуске, демонизације и петље за поновно покретање једног око другог ствара три власника за један тунел и нема јасан одговор који од њих ради.

Шта год изабрали, проверите ресурс због којег тунел постоји. Успешан захтев за покретање је догађај процеса, а не доказ радне везе.

Повезани чланци