У фразе «запусціце гэта ў фоне» хаваюцца два пытанні. Першае — ці можа гэты карыстальнік наогул запускаць прывілеяваны працэс; другое — ці можа сеанс працягвацца без таго, каб хтосьці ўводзіў тэкст у тэрмінал. Амперсанд абалонкі не адказвае ні на адно з іх, а сцэнар, які захоўвае пароль 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 спытае пазней.

Ні адзін з варыянтаў не з'яўляецца прычынай даваць усім каманды без пароля або перадаваць пароль адміністратара ў сцэнар.

Аддайце перавагу ўласніку, якога можна назіраць

Для тунеля, якім валодае машына, выкарыстоўвайце асобнік службы, які падтрымлівае дыстрыбутыў. Такі ўласнік дае запуск, спыненне, статус і журналы, і ён перажывае завяршэнне вашага сеансу. Зборка фонавага рэжыму абалонкі, дэманізацыі і цыклу перазапуску вакол аднаго стварае трох уласнікаў для аднаго тунеля і не дае яснага адказу, які з іх працуе.

Што б вы ні выбралі, праверце рэсурс, для якога існуе тунель. Паспяховы запыт на запуск — гэта падзея працэсу, а не доказ працуючага злучэння.

Падобныя артыкулы