sudo, &, -b ці --daemon: як запусціць кліент OpenVPN у фоне
Амперсанд вызваляе тэрмінал, а не ўваход. Параўнайце sudo -b, --daemon і асобнік службы па тым, каму належыць працэс і хто адказвае на запыты.
У фразе «запусціце гэта ў фоне» хаваюцца два пытанні. Першае — ці можа гэты карыстальнік наогул запускаць прывілеяваны працэс; другое — ці можа сеанс працягвацца без таго, каб хтосьці ўводзіў тэкст у тэрмінал. Амперсанд абалонкі не адказвае ні на адно з іх, а сцэнар, які захоўвае пароль 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 спытае пазней.
Ні адзін з варыянтаў не з'яўляецца прычынай даваць усім каманды без пароля або перадаваць пароль адміністратара ў сцэнар.
Аддайце перавагу ўласніку, якога можна назіраць
Для тунеля, якім валодае машына, выкарыстоўвайце асобнік службы, які падтрымлівае дыстрыбутыў. Такі ўласнік дае запуск, спыненне, статус і журналы, і ён перажывае завяршэнне вашага сеансу. Зборка фонавага рэжыму абалонкі, дэманізацыі і цыклу перазапуску вакол аднаго стварае трох уласнікаў для аднаго тунеля і не дае яснага адказу, які з іх працуе.
Што б вы ні выбралі, праверце рэсурс, для якога існуе тунель. Паспяховы запыт на запуск — гэта падзея працэсу, а не доказ працуючага злучэння.