Нет альтернативы для этого использования 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>
НТН