如果我尝试使用它sudo kate
来编辑系统文件,我会收到以下消息:
无法以 root 身份执行 Kate。
那么我该如何编辑系统文件?
我提出这个问题是为了自己回答。据我所知,所有涉及 gksudo 的建议都比不上我提出的解决方案:只需以非 root 用户身份编辑文件,完成后保存,然后提供 root 密码。
答案1
继续编辑文件,不要带sudo
。完成后,照常保存。您将收到提示,要求输入系统密码。输入密码,您就完成了。(不过,这可能不适用于某些 Ubuntu 版本。)
答案2
尝试一下SUDO_EDITOR=kate sudo -e /path/to/the/file
。这将使 sudo 将文件复制到临时目录,您的编辑器将以非特权用户的身份调用,然后当编辑器返回时(即关闭时),它将被复制到任何特权位置。
它还适用于任何其他编辑器。sudo -e
也可以拼写sudoedit
。
答案3
您可以尝试以下代码并将其放入 bash 脚本中。动机是gksudo
使用 Debian Buster 上的 Wayland。我现在还没有使用 Ubuntu 20.04,所以我没有测试它。
#!/usr/bin/env bash
#
# Enable root access to x-windows system.
#
# Motivation: Trying to run a graphical application as root via su, sudo in a
# Wayland session (e.g. GParted or Gedit), will fail. Apps which use polkit to
# request administrator permissions for just certain operations and only when
# needed are not affected (they are not started as root right away).
# [1] https://bugzilla.redhat.com/show_bug.cgi?id=1274451
#
# Based on a Reddit comment.
# [2] https://www.reddit.com/r/Fedora/comments/5eb633/solution_running_graphical_app_with_sudo_in/
if (( $# != 1 )); then
echo "Illegal number of parameters."
echo
echo "Usage: wsudo [command]"
exit 1
fi
for cmd in sudo xhost; do
if ! type -P $cmd &>/dev/null; then
echo "$cmd it's not installed. Aborting." >&2
exit 1
fi
done
xhost +SI:localuser:root
sudo $1
#disable root access after application terminates
xhost -SI:localuser:root
#print access status to allow verification that root access was removed
xhost