Мне нужен эквивалент gksu в 18,04

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

Во-первых, у меня есть потребность запустить mysql только после того, как зашифрованная папка будет открыта на команде (GUI). Это означает запускать скрипт системой шифрования, которая запускает mysql сервис. Это должно быть сделано как корень, таким образом, я использую gksu в том сценарии запуска, который просит у меня пароль. Как еще я могу запустить сервис с системы GUI?

Я также выполняю системные резервные копии человечности как корень, иначе много системных файлов не могут быть сохранены. Таким образом, файл на рабочем столе использует gksu для запуска резервного копирования.

pkexec выглядит сложным, нуждаясь в файлах политики. Это - единственная альтернатива, и если так, почему она так более безопасна?

Другие ответы на подобные вопросы, кажется, не решают отдельные проблемы, которые имеют люди теперь, когда gksu больше не (или тяжелее найти...). Я думаю, что такие вопросы от пользователей неспециалиста извлекли бы выгоду из более подробных ответов. Я теперь имею некоторых и так хотел бы ответить на свой собственный вопрос.

36
задан 1 June 2018 в 12:41

8 ответов

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 излишне сложно управлять, потому что он повышает ваши привилегии до суперпользователя на продолжительный период времени, когда вам нужно быть суперпользователем только для выполнения одной команды.

4
ответ дан 23 November 2019 в 01:51

Я знаю, что есть ответы на этот вопрос в другом месте, но я не нашел ни одного из них достаточно ясным и простым для решения этой проблемы. Так что я покопался во многих местах и ​​придумал это. Я до сих пор не понимаю, почему сообщество Linux решило так усложнить жизнь нам, простым пользователям настольных компьютеров (и я пытался понять множество объяснений), но это жизнь. Я использую графический интерфейс практически для всего, используя окно терминала только при необходимости. Насколько я могу судить, решения с использованием параметров sudo в этом не помогают. Итак, у меня есть файлы и сценарии .desktop , которые выполняют все задачи, которые я регулярно использую.

Есть два основных решения.

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

. Это решение может длиться или длиться недолго. Специалисты по борьбе с гксу могут найти способ остановить это. А пока загрузите 2 файла .deb из libgksu (x64) и gksu (x64) . Установите libgksu2, а затем gksu, используя gdebi или любой другой инструмент установки, который вам нравится. У меня это сработало.

2. Используйте pkexec

В качестве (надеюсь) долгосрочного решения мне удалось заставить pkexec работать с необходимыми мне инструментами.

  1. Для запуска службы из сценария. Оказывается, ни gksu, ни pkexec не нужны. Просто запустите службу xyz , и она запросит ваш пароль.

  2. Чтобы отредактировать корневые файлы или открыть nautilus от имени пользователя root, см. Как запустить Gedit и Nautilus как root с pkexec вместо gksu - Web Upd8 . Это предоставляет два файла «polkit» для pkexec, которые позволяют вам использовать сценарий, содержащий pkexec gedit , для редактирования корневого файла, и аналогично для nautilus. Все инструкции находятся на этой веб-странице. Теперь я использую «filemanager-actions», чтобы предоставить действия по щелчку правой кнопкой мыши для запуска gedit или nautilus от имени пользователя root.

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

     
     
    
     
       deja-dup 
    
      <действие id = "org.gnome.DejaDup">
       Резервное копирование 
       Для резервного копирования системных файлов требуются права 
      <по умолчанию>
       нет 
       auth_admin 
       auth_admin 
      
       / usr / bin / deja-dup 
       true 
      
    
     
     

    Обратите внимание, что в этом каталоге есть еще один файл deja-dup, который утверждает, что помогает с восстановлением файлов, но мне не удалось заставить его работать. Этот новый файл должен иметь уникальное имя, например org.gnome.DejaDupNew.policy .

На данный момент я работаю без gksu. Я постараюсь продолжить…

10
ответ дан 23 November 2019 в 01:51

Я нашел эту команду

alias gksu='pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY'

на странице ниже:
https://sites.google.com/site/installationubuntu/home/ubuntu-17-10/alternatives-for-gksu-and-gksudo

После выполнения команды alias:

gksu /path/to/script.sh

Она запросит пароль, как обычно.

Вам нужно добавить псевдоним в конец ~/.bashrc, чтобы команда gksu оставалась постоянной при перезагрузке.

31
ответ дан 23 November 2019 в 01:51

Я использую сценарий называется sgedit , который наследует пользовательские настройки шрифта, вкладок и расширений. Он использует sudo -H gedit вместо gksu gedit для обеспечения стабильности в среде графического интерфейса пользователя. Он запрашивает пароль.

Пусть sudo унаследует вашу учетную запись пользователя gedit settings

sgedit 80 column right slider.gif

В этом примере пользовательские настройки для имени шрифта, размера шрифта, позиций табуляции, преобразования вкладок в пробелы, выделение 80 столбцов и ползунок с ползунком справа унаследованы sudo .

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

Этот сценарий также обращается к « gksu неисправен и не установлен по умолчанию» и « pkexec "трудно установить" проблемы.


Общие сведения

Меня уже много лет мучит одна и та же проблема. На этих выходных был задан проект по написанию сценария sgedit :

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

Bash-скрипт 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 $*;"

Housekeeping

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

Отметьте файл как исполняемый, используя:

chmod a+x ~/sgedit

Примечание. ~ - это ярлык для / home / ВАШЕ ИМЯ .

3
ответ дан 23 November 2019 в 01:51

Ubuntu 18.04: Некоторые программы установки и другие требуют наличия gksudo или gksu с тем же именем. Чтобы это заработало:

Установите версию ssh-askpass для gnome. Без этого диалоговое окно пароля может быть скрыто за другим окном:

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

Перезагрузите компьютер.

1
ответ дан 23 November 2019 в 01:51

XTerm, вероятно, лучший выбор.

xterm -e "sudo -b gedit /etc/fstab && sleep 1"

или

xterm -e su -c "gedit /etc/fstab &"

Последний предполагает, что учетная запись root включена и имеет установленный пароль.

-e сообщает XTerm открыть запуск одной команды, а -c указывает su выполнить одну команду от имени пользователя root. В первом варианте -b отправляет приложение в фоновый режим после аутентификации, которая действует таким же образом во втором варианте, с и . Это необходимо, поскольку XTerm останется открытым, если приложение находится на переднем плане. Команда sleep 1 требуется, потому что по неизвестной причине приложение не запустится.

Если первая альтернатива не сработает, используйте следующую.

xterm -e sudo su -c "gedit /etc/fstab &"

Вот псевдоним, похожий на gksu.

gksu(){
  xterm -e "sudo -b $* && sleep 1"
}

Вставьте его в .bashrc . Обязательно перезапустите его перед использованием.

Можно также поместить его в двоичный каталог, чтобы команда стала общесистемной.

cd /usr/local/bin && sudo su -c "echo 'xterm -e \"sudo -b \$* && sleep 1\"' > gksu && chmod 0755 gksu && ln -s gksu gksudo" && cd ~
1
ответ дан 5 January 2021 в 22:10

ЧТО НАСЧЕТ УСТАНОВКИ (УСТАРЕЛО) GKSU BACK?

Для тех, кто задается вопросом, можно ли установить gksu , ответ будет возможно да : хотя его пакеты DEB устарели с ~ 2015 г. 9 декабря 2020 г. они все еще были доступны можно скачать на Launchpad. Следующее решение работало на 64-битной (AKA amd64 ) версии XUbuntu 18.04 (обновленной с 16.04) и 20.04 (новая установка), которую я использую в настоящее время.


КРАТКО

Я загрузил эти 7 пакетов DEB:

... а затем установите их с помощью gdebi : диспетчера пакетов DEB, который не только устанавливает пакеты DEB, но также проверяет и решает (т.е. устанавливает) их зависимости. Обязательно сначала установить пакет multiarch-support , затем установить пакет libgcrypt11 и так далее (в строгом порядке сверху вниз в списке), пока вы завершите установку последнего пакета (т.е. пакета gksu ).


ОБЪЯСНЕНИЕ УСТАНОВКИ (ГРАФИЧЕСКИЙ СПОСОБ)

  1. Для каждой из 7 ссылок в списке выше щелкните ссылку правой кнопкой мыши, затем выберите Сохранить ссылку как ... а затем сохраните пакет DEB в папке Загрузки (например, / home / yourname / Downloads ).

  2. Запустите gdebi в графическом режиме (например, ] gdebi интерфейс). Если вы не можете найти gdebi в меню Приложения (обычно оно находится в Системе ), откройте окно эмулятора терминала ( Ctrl ) Alt T обычно помогает), затем введите sudo gdebi-gtk & и нажмите Введите , введите свой пароль и снова нажмите Введите .

  3. В окне gdebi щелкните Файл , затем щелкните Открыть ... , затем откройте папку Загрузки . выберите первый пакет для установки (например, multiarch-support_2.17-93ubuntu4_amd64.deb ), щелкните Открыть , а затем щелкните Установить пакет . Повторите эти шаги для других пакетов (не забудьте соблюдать строгий порядок, указанный в списке выше, сверху вниз). Поэтому последним устанавливаемым пакетом будет gksu_2.0.2-9ubuntu1_amd64.deb .

Как только вы выполните эти 3 простых шага, gksu будет доступен по адресу меню Приложения .


ОБЪЯСНЕНИЕ УСТАНОВКИ (МЕТОД ТЕРМИНАЛА / ТЕКСТОВОГО РЕЖИМА)

  1. Запустите окно эмулятора терминала, чтобы у вас был доступ к оболочке Linux («командная строка»). Нажатие Ctrl Alt T , скорее всего, поможет.

  2. Введите mkdir ~ / gksu в окне эмулятора и нажмите Enter . Это создаст папку gksu в вашей домашней папке (например, / home / yourname / gksu ).

  3. Введите cd ~ / gksu в окне эмулятора а затем нажмите Введите . Это приведет к тому, что ~ / gksu (то есть папка gksu в вашей домашней папке) станет вашим рабочим каталогом (то есть папкой, в которой активен ваш текущий сеанс оболочки, то есть папкой, в которой ваша учетная запись пользователя в настоящее время подключена через окно эмулятора оболочки Linux).

  4. Выберите и скопируйте команду ниже:

     wget http://launchpadlibrarian.net/153554150/multiarch-support_2.17-93ubuntu4_amd64.deb;  wget http://launchpadlibrarian.net/147472576/libgcrypt11_1.5.0-3ubuntu3_amd64.deb;  wget http://launchpadlibrarian.net/141785150/libgnome-keyring-common_3.8.0-2_all.deb;  wget http://launchpadlibrarian.net/141785305/libgnome-keyring0_3.8.0-2_amd64.deb;  wget http://launchpadlibrarian.net/182650077/libgtop2-10_2.30.0.is.2.30.0-0ubuntu1_amd64.deb;  wget http://launchpadlibrarian.net/182741643/libgksu2-0_2.0.13~pre1-6ubuntu7_amd64.deb;  wget http://launchpadlibrarian.net/193391454/gksu_2.0.2-9ubuntu1_amd64.deb
     
  5. Используйте Ctrl Shift V , чтобы вставить указанную выше команду в окно эмулятора, а затем нажмите Enter . Программа wget затем загрузит все эти 7 необходимых пакетов DEB и поместит их все в ~ / gksu .

  6. По завершении загрузки выберите и скопируйте эту другую команду:

     sudo gdebi -n multiarch-support_2.17-93ubuntu4_amd64.deb;  sudo gdebi -n libgcrypt11_1.5.0-3ubuntu3_amd64.deb;  sudo gdebi -n libgnome-keyring-common_3.8.0-2_all.deb;  sudo gdebi -n libgnome-keyring0_3.8.0-2_amd64.deb;  sudo gdebi -n libgtop2-10_2.30.0.is.2.30.0-0ubuntu1_amd64.deb;  sudo gdebi -n libgksu2-0_2.0.13 ~ pre1-6ubuntu7_amd64.deb;  sudo gdebi -n gksu_2.0.2-9ubuntu1_amd64.deb
     
  7. Используйте Ctrl Shift V , чтобы вставить указанную выше команду в окно эмулятора, а затем нажмите Enter , затем введите свой пароль и нажмите Enter снова. Для каждого экземпляра команды gdebi будет установлен соответствующий пакет DEB. -Параметр n указывает gdebi автоматически определять зависимости пакетов, поэтому gdebi не будет задавать вам вопросов: вместо этого он автоматически установит основной пакет, а также автоматически обнаружит, загрузит и установите его случайные зависимости пакета DEB.

Как только вы выполните эти 7 шагов, gksu будет доступен в вашем меню Приложения .

0
ответ дан 5 January 2021 в 22:10

Незначительное дополнение для тех, кто хочет использовать дополнение gksu в файле рабочего стола для запуска программы WINE от имени администратора. В моем случае целевой программой был Total Commander (прошу прощения у тех, у кого это вызывает сопротивление). Я хотел запустить его от имени администратора из Unity Launcher .

Вот мое решение:

Exec=sh -c "zenity --password --title=\"sudo password prompt\" --timeout=10 2>/d
ev/null | sudo -S -H wine \"/root/.wine/drive_c/totalcmd/TOTALCMD.EXE\""

Вам будет предложено ввести пароль, а затем передать его в sudo.

Вот все содержимое файла рабочего стола:

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_US]=/home/zsolti/MyApps/.icons/Total_commander_Admin64.png
Name[en_US]=TotalCommanderAdmin
Exec=sh -c "zenity --password --title=\"sudo password prompt\" --timeout=10 2>/d
ev/null | sudo -S -H wine \"/root/.wine/drive_c/totalcmd/TOTALCMD.EXE\""
Comment[en_US]=Total Commander Admin
Name=TotalCommanderAdmin
Comment=Total Commander Admin
Icon=/home/zsolti/MyApps/.icons/Total_commander_Admin64.png
0
ответ дан 5 January 2021 в 22:10

Другие вопросы по тегам:

Похожие вопросы: