自从我升级到 Ubuntu 18.04 以来,我无法再执行以下操作:
sudo su -
gparted
因为现在 root 无法访问 Display:0 并且我还没有找到解决方法。
有人知道如何解决这个问题吗?
使用 gparted 还好,但是我使用其他一些程序时,它根本不起作用,因为我没有其他程序可以做同样的事情。我不想以 root 身份启动所有程序,因为我知道如何做到这一点。
答案1
有kdesudo
,gsudo
(我认为),还有其他一些。
或者您可以将其复制到~/bin/xsudo
#!/bin/bash
inner() {
su - "$user" -c "xauth list" |
grep "$(echo "$display" |
cut -d ':' -f 2 |
cut -d '.' -f 1 |
sed -e s/^/:/ ) " |
xargs -n 3 xauth add &&
"$@"
}
if [ "$1" = "---innermode" ]
then
shift
user="$1"
display="$2"
shift 2
inner "$@"
else
self="$0"
sudo "${self}" ---innermode "$USER" "$DISPLAY" "$@"
fi
答案2
您可以使用pkexec
root 身份运行 GUI 应用程序。
$ pkexec gparted
或者:
$ pkexec bash
# gparted
pkexec
使用 PolicyKit 进行授权,因此您可能需要安装一个 PolicyKit 以允许您的用户使用pkexec
.看手册页有关授权的更多详细信息。
答案3
如果您以具有 sudo 权限的普通用户身份登录 X 会话,则只需打开终端并使用sudo gparted
即可正常工作。
该su
命令的行为有所不同,虽然它确实允许您成为另一个用户或以另一个用户身份运行特定命令,但它确实阻止连接到您的 X 服务器。