YAY!

Как заставить yay «помнить» единожды предоставленный root доступ

Каж­дый поль­зо­ва­тель Arch Linux стал­ки­вал­ся с ситу­а­ци­ей, когда с помо­щью сце­на­ри­ев сбор­ки из AUR нуж­но собрать несколь­ко «тяже­лых» про­грамм за раз, напри­мер archtorify-git и linux-zen. С помо­щью AUR-хел­пе­ра (в нашем слу­чае) yay запус­ка­ет­ся про­цесс сбор­ки в тер­ми­на­ле. Так как запуск yay от поль­зо­ва­те­ля root или с помо­щью коман­ды sudo – боль­шая угро­за без­опас­но­сти, yay запус­ка­ют от име­ни обыч­но­го поль­зо­ва­те­ля, и в кон­це про­цес­са сбор­ки он запра­ши­ва­ет root доступ само­сто­я­тель­но перед уста­нов­кой собран­но­го паке­та в систе­му. И запра­ши­вать пароль root’a у поль­зо­ва­те­ля  yay при­шлось бы перед каж­дой уста­нов­кой паке­та в систе­му. Но у коман­ды sudo есть тай­маут, и если коман­да была запро­ше­на повтор­но недав­но и тай­маут не про­шел – опе­ра­ция выпол­ня­ет­ся с root досту­пом без запро­са паро­ля, что сде­ла­но для удоб­ства поль­зо­ва­те­ля. Но что будет, если yay соби­ра­ет какой-нибудь «тяжё­лый» пакет, вре­мя на ком­пи­ля­цию кото­ро­го при­вы­ша­ет тай­маут коман­ды sudo? А что, если таких паке­тов под­ряд штук 15? Пра­виль­но, поль­зо­ва­те­лю 15 раз при­дёт­ся вво­дить пароль root перед каж­дой уста­нов­кой паке­та в систе­му. До недав­не­го вре­ме­ни это меня очень беси­ло, т.к. AUR-паке­тов у меня в систе­ме не так мало, обнов­ляя их yay посто­ян­но дол­бил запро­сом паро­ля для sudo, и в один момент чаша мое­го тер­пе­ния пере­пол­ни­лась. При­шлось лезть к гуг­лу с вопро­сом, кото­рый ещё и сфор­му­ли­ро­вать попро­буй. Но, как ока­за­лось, реше­ние нашлось быст­ро и повто­рить само­сто­я­тель­но смо­жет даже нови­чок в Linux.

Зада­ча име­ет несколь­ко вари­ан­тов реше­ния: сию­ми­нут­но­го, но не удоб­но­го и тре­бу­ю­ще­го создать и попра­вить один кон­фи­гу­ра­ци­он­ный файл, но забыть далее о про­бле­ме навсе­гда.

Вариант 1: дополнительная опция в строке команды yay

Yay име­ет полез­ную опцию --sudoloop кото­рая застав­ля­ет yay дёр­гать коман­ду sudo с такой часто­той, что­бы не успе­вал выхо­дить её тай­маут. Добав­ля­ет­ся в любое место коман­ды так же, как напри­мер --noconfirm:

yay -Sa --sudoloop linux-zen

Вариант 2: добавление опции sudoloop в конфиг yay

Этот вари­ант лич­но для меня пред­по­чти­тель­нее. Вме­сто того, что­бы каж­дый раз добав­лять --sudoloop к коман­дам yay, луш­че один раз вклю­чить эту опцию в кон­фи­ге и забыть о про­бле­ме.

Созда­ём кон­фиг yay:

yay --save

Откры­ва­ем для редак­ти­ро­ва­ния создан­ный кон­фи­гу­ра­ци­он­ный файл:

nano ~/.config/yay/config.json

Нахо­дим строч­ку "sudoloop": false, и меня­ем false на true.

Опция sudoloop в конфиге yay

Сохра­ня­ем изме­не­ния ком­би­на­ци­ей кла­виш [CTRL+O] -> [ENTER], и закры­ва­ем файл ком­би­на­ци­ей [CTRL+X].

Вот и всё, теперь yay будет запра­ши­вать пароль root толь­ко 1 раз в нача­ле сво­ей рабо­ты неза­ви­си­мо от того, како­во будет вре­мя меж­ду уста­нов­ка­ми соби­ра­е­мых паке­тов.