Мені потрібен еквівалент gksu в 18.04


23

Я прочитав багато тем про те, що gksu видаляється з багатьох смаків Linux, включаючи Ubuntu 18.04. Багато хто стверджує, що gksu - гидота, і жоден користувач ніколи не повинен використовувати щось подібне. У мене є 2 приклади, коли, наскільки я знаю, я повинен мати щось, що дозволяє мені запускати як root (не тільки для редагування файлів).

По-перше, у мене є необхідність запускати mysql лише після відкриття зашифрованої папки в команді (GUI). Це означає, що сценарій запускається системою шифрування, яка запускає службу mysql. Це потрібно зробити як root, тому я використовую gksu в тому сценарії запуску, який запитує мене паролем. Як інакше можна запустити послугу із системи GUI?

Я також запускаю резервні копії системи Ubuntu як root, інакше багато системних файлів неможливо створити резервну копію. Таким чином, файл на робочому столі використовує gksu для запуску резервної копії.

pkexec виглядає складно, потребують файли політики. Це єдина альтернатива, і якщо так, то чому це безпечніше?

Інші відповіді на подібні запитання, схоже, не стосуються окремих питань, які виникають у людей, коли гксу більше немає (або важче знайти ...). Я думаю, що такі запитання некваліфікованих користувачів виграють від більш детальних відповідей. Зараз у мене є деякі, і тому я хотів би відповісти на власне запитання.


Чи pkexecпрацює для вас замість gksu?
Thomas Ward

@karel погодився, хоча в цій публікації чітко не зазначено, що "заміна" є pkexec. (ви повинні полювати за цим)
Томас Уорд

2
Ви також можете спробувати використати, sudo -H GUI-programі якщо у Wayland є це посилання, це може бути корисним, ... є обхідні шляхи, якщо у вас є інструмент GUI, який добре працює для вас і потребує підвищених дозволів.
sudodus

3
Це суперечлива тема, але, використовуючи графічні програми як корінь, запуск графічної програми як корінь - це загроза безпеці. Хоча ви і багато інших, можливо, не погоджуєтеся з цим, запуск графічних додатків, оскільки корінь відлякує Ubuntu та багато дистрибутивів. Ubuntu в процесі написання альтернативних рішень, pkexec та інших політик. Ви можете подати звіт про помилки, і розробники працюватимуть над рішенням програм, які, на їх думку, повинні робити це, наприклад, менеджери пакетів. Це складно, оскільки це стосується X та Wayland. По черзі використовуйте не графічні програми або пишіть власні. Для шифрування не потрібен gui
Пантера

Я використовую gnome-encfs-manager, який забезпечує gui для монтажу зашифрованих папок. Він передбачає запуск сценарію, коли диск встановлений. У цьому сценарії мені потрібно запустити mysql. Як ще я можу це зробити? Що стосується Wayland, то, не допускаючи синаптичних чи здирливих засобів, смішно з точки зору звичайного домашнього користувача робочого столу. Вони безцінні. Системи можуть бути настільки безпечними, що ніхто не хоче ними користуватися - є баланс, і в цьому конкретному випадку (wayland) користувач повинен мати рацію.
pastim

Відповіді:



8

Я знаю, що там, як кажуть, є відповіді на це в інших місцях, але я не знайшов жодного з них достатньо зрозумілим і простим для вирішення цього питання. Тому я копався в багатьох місцях і придумав це. Я досі не розумію, чому спільнота Linux вирішила зробити так важким життя для нас простих користувачів настільних ПК (і я намагалася зрозуміти багато пояснень), але це життя. Я використовую GUI майже для всього, лише використовуючи вікно терміналу, коли це необхідно. Наскільки я можу сказати рішення, що використовують параметри sudo, це не допомагає в цьому. Тож у мене є .desktopфайли та сценарії, які виконують усі завдання, якими я користуюся регулярно.

Є два основних рішення.

1. Перевстановити gksu

Це рішення може тривати чи не тривати. Анти-гксу техники можуть знайти спосіб зупинити це. Але тим часом завантажте 2 .debфайли з libgksu (x64) та gksu (x64) . Встановіть libgksu2, а потім gksu, використовуючи gdebi або інший інструмент встановлення, який ви хочете використовувати. Це працювало для мене.

2. Використовуйте pkexec

Як (сподіваюся) довгострокове рішення, мені вдалося змусити pkexec працювати над потрібними інструментами.

  1. Щоб запустити послугу зі сценарію. Виявляється, ні gksu, ні pkexec не потрібні. Просто start service xyzі він запитає ваш пароль.

  2. Щоб редагувати кореневі файли або відкрити nautilus як корінь, див. Як запустити Gedit і Nautilus як корінь за допомогою pkexec замість gksu - Web Upd8 . Це забезпечує два файли 'polkit' для pkexec, які дозволяють використовувати скрипт, що містить pkexec geditдля редагування кореневого файлу, і аналогічно для nautilus. Інструкції розміщені на цій веб-сторінці. Зараз я використовую 'filemanager-Actions', щоб забезпечити дії правою кнопкою миші, щоб запустити gedit або nautilus як root.

  3. Я запускаю deja-dup як root для резервного копіювання основної системи. Я роблю це нечасто, виключаючи /home(бо /homeя роблю часті резервні копії, які не потребують кореневого доступу). Щоб приступити до роботи, я взяв копію файлу, який використовується на кроці 2 для gedit, і відредагував його для deja-dup. Я не дуже розумію вміст, але він працює, як для резервного копіювання, так і для відновлення файлів, використовуючи pkexec backupсценарій, ініційований з файлу .desktop. Я додав цей новий файл до /usr/share/polkit-1/actions:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD polkit Policy Configuration 1.0//EN" "http://www.freedesktop.org/software/polkit/policyconfig-1.dtd">
    
    <policyconfig>
      <icon_name>deja-dup</icon_name>
    
      <action id="org.gnome.DejaDup">
        <description gettext-domain="deja-dup">Backup</description>
        <message gettext-domain="deja-dup">Privileges are required to backup system files</message>
        <defaults>
        <allow_any>no</allow_any>
        <allow_inactive>auth_admin</allow_inactive>
        <allow_active>auth_admin</allow_active>
         </defaults>
        <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/deja-dup</annotate>
        <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
      </action>
    
    </policyconfig>
    

    Зауважте, що в цьому каталозі є ще один файл deja-dup, який стверджує, що допомагає відновити файли, але я не зміг його працювати. Цей новий файл повинен мати унікальне ім’я, наприклад org.gnome.DejaDupNew.policy.

Я поки що біжу без гксу. Я спробую продовжувати…


Команда для запуску резервного копіювання була pkexec deja-dupдля мене після додавання файлу, як ви описали. Діалогове вікно дозволить мені спершу вибрати налаштування, що чудово.
wbloos

Введення файлу політики /usr/share/polkit-1/actionsнасправді було способом створення запуску робочого столу з підвищеними pkexecдозволами. Ось ще один приклад .
Серж Стротобандт

4

Nautilus Admin ( nautilus-admin ) - це просте розширення Python для файлового менеджера Nautilus, яке додає деякі адміністративні дії до меню правої кнопки миші:

  • Відкрити як адміністратор: відкриває папку в новому вікні Nautilus, що працює з правами адміністратора (root).
  • Редагувати як адміністратор: відкриває файл у вікні Gedit, що працює з правами адміністратора (root).

Щоб встановити Nautilus Admin у всіх підтримуваних на даний момент версіях Ubuntu, відкрийте термінал і введіть:

sudo apt install nautilus-admin

Я протестував всі альтернативи gksu в 18.04 для інших додатків, окрім файлів та Gedit, і той, який, здається, працює найбільш послідовно:

sudo -H appname &> / dev / null

pkexecє найкращою заміною для gksu, коли він працює, тому що він забезпечує більш високу безпеку, але він дуже непостійний у різних додатках (наприклад, він не працює з Gedit) і може спричинити збій у деяких додатках. sudo -iкерувати надмірно складно, оскільки це підвищує ваші привілеї, щоб викорінити коріння протягом тривалого періоду часу, коли для запуску однієї команди вам потрібно мати лише root.


3

Я використовую скрипт, sgeditякий називається, що успадковує налаштування користувача щодо шрифту, вкладок та розширень. Він використовується sudo -H geditзамість gksu geditстабільності в середовищі GUI. Тут буде запропоновано ввести пароль.

Є sudoуспадкувати облікового запису користувача geditнастройки

sgedit 80 стовпець праворуч слайдер.gif

У цьому прикладі користувацькі настройки для імені шрифту, розміру шрифту, зупинок вкладки, перетворення вкладок у пробіли, підсвічування 80 стовпців та повзунка панелі слайдів правої сторони були успадковані sudo.

За допомогою регулярних sudo -H geditналаштувань конфігурації ви не можете встановити і не зберегти. Сценарій нижче sgeditналаштування успадковується від вашого облікового запису користувача.

Цей скрипт також вирішує проблеми " gksuпогано та не встановлено за замовчуванням" та " pkexecважко налаштувати".


Фон

Мене вже кілька років занурює те саме питання. Проектом цих вихідних було написати sgeditсценарій:

  • Дзвінок за допомогою sgedit filename1 filename2...
  • Отримує налаштування gedit користувача для зупинок вкладок, шрифтів, загортання рядків тощо.
  • Піднімається, щоб sudo -Hзберегти право власності на файл, отримуючи при цьому повноваження root.
  • Запрошує пароль, якщо минуло останнє судо.
  • Отримує параметри gedit sudo
  • Порівняє відмінності між налаштуваннями користувача та sudo gedit
  • Працює лише gsettings setна відмінностях (скорочує 174 setкоманди до десятка або менше. Наступного разу він запускає, можливо, лише одну або дві зміни, але часто ніколи.
  • Викликає gedit як фонове завдання таким чином, що підказка терміналу знову з’являється.

Баш сценарій sgedit

#!/bin/bash

# NAME: sgedit
# PATH: /mnt/e/bin
# DESC: Run gedit as sudo using $USER preferences
# DATE: June 17, 2018.

# Must not prefix with sudo when calling script
if [[ $(id -u) == 0 ]]; then
    zenity --error --text "You cannot call this script using sudo. Aborting."
    exit 99
fi

# Get user preferences before elevating to sudo
gsettings list-recursively | grep -i gedit | grep -v history |
    grep -v docinfo |
    grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings

sudoFunc () {
    # Must be running as sudo
    if [[ $(id -u) != 0 ]]; then
        zenity --error --text "Sudo password authentication failed. Aborting."
        exit 99
    fi

    # Get sudo's gedit preferences
    gsettings list-recursively | grep -i gedit | grep -v history |
        grep -v docinfo |
        grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings.root
    diff /tmp/gedit.gsettings.root /tmp/gedit.gsettings | grep '>' > /tmp/gedit.gsettings.diff
    sed -i 's/>/gsettings set/g; s/uint32 //g' /tmp/gedit.gsettings.diff
    chmod +x /tmp/gedit.gsettings.diff
    bash -x /tmp/gedit.gsettings.diff  # Display override setting to terminal
    nohup gedit $@ &>/dev/null &
}

FUNC=$(declare -f sudoFunc)
sudo -H bash -c "$FUNC; sudoFunc $*;"

Ведення господарства

Скопіюйте скрипт bash в новий файл, який називається sgedit. Я рекомендую розмістити його у своєму $HOME/binкаталозі, тобто /home/YOURNAME/bin. Можливо, спочатку доведеться створити каталог.

Позначте файл як виконуваний за допомогою:

chmod a+x ~/sgedit

Примітка ~- це ярлик для /home/YOURNAME.


0

Ubuntu 18.04: Для деяких програм інсталяції, а для інших потрібні gksudo або gksu, щоб вони були доступними з такою ж назвою. Щоб зробити цю роботу:

Встановити версію gnome ssh-askpass. Без цього діалогове вікно пароля може бути приховано за іншим вікном:

sudo apt-get install ssh-askpass-gnome

Створіть новий файл my-gksudo.sh:

sudo -H gedit /etc/profile.d/my-gksudo.sh

вміст файлу:

export SUDO_ASKPASS=/usr/bin/ssh-askpass

Створіть нові файли gksudo та gksu з однаковим вмістом:

sudo -H gedit /usr/bin/gksudo

і

sudo -H gedit /usr/bin/gksu

вміст файлу для обох:

sudo -A $@

Зробіть gksudo та gksu виконуваним:

sudo chmod +x /usr/bin/gksudo

І

sudo chmod +x /usr/bin/gksu

Перезавантажте комп'ютер.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.