قدیما خیلی راحت میشد با gksu
برنامه ها رو با کاربر root
از طریق یک پنجره که پسورد میخواست به صورت گرافیکی باز کرد. با ورود wayland همه این کاسه و کوزه ها شکست. اما انواع روشها برای رسیدن به این هدف بوجود اومد که در این ویکی میتونید اونها رو ببینید. اکثر این روشها این طوری هستن که شما یک کنسول (ترمینال) باز میکنید و دستور مربوطه رو با روشهایی که گفته میدید و اون برنامه از طریق ترمینال با یوزر root باز میشه.
اما هدف من اینه که آیکنی در بین اپلیکیشنها داشته باشم که وقتی روش کلیک میکنم یک پنجره باز بشه و از من پسورد root رو بخواد و بعد برنامه رو باز کنه. بدون دخالت کنسول و کامند و این حرفها. یک همچین چیزی:
برای اینکار نیاز به pkexec
داریم که در بسته polkit
قرار داره. اگر شما یک دسکتاپ مدرن نصب کرده باشید احتمالا polkit
هم جزو ملزومات نصب شده.
خب برای اینکه ببینیم باید چکار کنیم، ادامه مطلب رو ببینید.
یک فایل با نام دلخواه (من اسمش رو میذارم sugu یعنی مثلا super user gui ) در مسیری مثل /usr/local/bin/sugu
درست کنید و این محتوی رو داخلش قرار بدید:
#!/bin/bash
pkexec env WAYLAND_DISPLAY="$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" XDG_RUNTIME_DIR=/run/user/0 "$1"
و به اون مجوز اجرایی بدید:
# chmod +x /usr/local/bin/sugu
تمام شد! حالا شما هرجایی که بخواید (مثلا با Alt+f2) میتونید یک برنامه رو با کاربر root باز کنید. مثلا:
$ sugu meld
کافیه با یک menu editor هم یک آیکن برای برنامه مورد نظرتون درست بکنید و در قسمت command همین عبارت رو قرار بدید.
حاصل سر و کله زدن های من با لینوکس