Нет альтернативы для этого использования GKSU

Ubuntu 18.04 полностью удалил пакет gksu из своих репозиториев.

Рациональное обоснование этого заключается в том, что gksu считается использованным только таким образом:

gksu gedit /some/root/setting

Но есть и другие способы использования ГКСУ. Gksu - важная программа, потому что в отличие от sudo или графических программ, таких как pkexec, она не позволяет другим программам захватыватьфокус.

Поэтому, когда вы хотите ввести свой пароль, используя простой клиент, и появляется какое-то окно чата, происходит следующее: пароль вводится в окно чата (если вы не смотрите на экран на мгновение) и ваш root пароль отправлен вам в чате, приятель. Это случилось со мной однажды, и я не хочу, чтобы это повторилось.

Вот почему gksu идеально подходит для обеспечения безопасности, и я часто использую его на уровне командной строки. Так что не запускать gedit, а делать что-то из командной строки, например, apt-get update && apt-get upgrade или выполнять некоторые сценарии bash.

И нет, pkexec не является альтернативой gksu, потому что 1) он не выполняет скрипты, только двоичные файлы и 2) он не мешает другим программам захватывать фокус.

Во-вторых, вы также можете использовать gksu для безопасного запроса паролей без полномочий root. Например:

ccrypt -K `gksu -p --message "Password:"` -d data.tar

Итак, мой вопрос: какую программу можно использовать в качестве альтернативы gksu в этих случаях?

1 ответ

Вы все еще можете получить gksu следующим образом:

wget http://mirrors.kernel.org/ubuntu/pool/universe/libg/libgksu/libgksu2-0_2.0.13~pre1-9ubuntu2_amd64.deb

sudo apt install ./libgksu2-0_2.0.13~pre1-9ubuntu2_amd64.deb

wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gksu/gksu_2.0.2-9ubuntu1_amd64.deb

sudo apt install ./gksu_2.0.2-9ubuntu1_amd64.deb

Этот ответ касается только gksu gedit и ничего больше.

Помимо исчезновения gksu с Ubuntu 17.10 у меня были давние проблемы, когда мои обычные пользовательские настройки для имени шрифта, размера шрифта, остановок табуляции, преобразования табуляции в пробелы и т. д. никогда не переносились на sudo / gksudo и мне всегда придется их сбрасывать.

более того sudo не получает меню верхнего уровня для редактирования настроек.

Написанный мною сценарий позволяет не только gksuкак использование с gedit но также копирует мой пользователь gedit предпочтения по отношению к sudo учетная запись.

Вам нужно будет изменить одну строку кода:

nohup gedit -g 1300x840+1+1220 $@ &>/dev/null &

Это позиционирует окно 1 правый пиксель и 1220 пикселей вниз. Вы можете предпочесть 1+1 вместо 1+1220,

Размер окна установлен на 1300 пикселей в ширину 840 пикселей высотой. Вы можете предпочесть меньший или больший размер в зависимости от разрешения монитора и HiDPI. Так что меняй 1330x840 с вашими предпочтениями.

#!/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 &
    nohup gedit -g 1300x840+1+1220 $@ &>/dev/null &
#              Set the X geometry window size (WIDTHxHEIGHT+X+Y).

}

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

exit 0

Создайте скрипт bash где-нибудь на вашем пути и пометьте его как исполняемый файл, используя:

sudo chmod a+x /path/to-script/sgedit

Затем для вызова используйте:

sgedit <file-name>

вместо старой системы:

gksu gedit <file-name>

НТН

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