在 GUI 应用程序上使用 sudo

在 GUI 应用程序上使用 sudo

sudo kate例如,当我使用 kubuntu 时,我总是可以使用 sudo 打开 X 应用程序。现在我已经切换到 arch 不起作用了。我知道我一直被告知要使用 kdesu,但是 kubuntu 中的哪些设置允许我在 X 应用程序上使用 sudo,从而阻止我在 arch 上执行此操作?

编辑:
对不起,我做了我自己最讨厌的事情>_<

这就是我想做的:

[falmarri@falmarri-z-arch 下载]$ sudo kate
密码:
未指定协议
凯特:无法连接到 X 服务器:0.0

请注意,这只是使用 konsole 的常规终端会话,我没有使用 SSH

/etc/sudoers:

## sudoers 文件。
##
## 该文件必须以 root 身份使用“visudo”命令进行编辑。
## 未能使用 'visudo' 可能会导致语法或文件权限错误
## 阻止 sudo 运行。
##
## 有关如何编写 sudoers 文件的详细信息,请参阅 sudoers 手册页。
##

##
## 主机别名规范
##
## 机器组。这些可能包括主机名(可选地带有通配符),
## IP 地址、网络号或网络组。
# Host_Alias WEBSERVERS = www1, www2, www3

##
## 用户别名规范
##
## 用户组。这些可能包括用户名、uid、Unix 组、
## 或网络组。
# 用户别名 ADMINS = millert、dowdy、mikef

##
## Cmnd 别名规范
##
## 命令组。通常用于将相关命令组合在一起。                                                               
# Cmnd_Alias PROCESSES = /usr/bin/nice, /bin/kill, /usr/bin/renice, \                                                             
# /usr/bin/pkill, /usr/bin/top                                                                             

##                                                                                                                                   
## 默认规范                                                                                                            
##                                                                                                                                   
## 您可能希望保留以下一些环境变量                                                                  
## 通过 sudo 运行命令时。                                                                                                   
##                                                                                                                                   
## 区域设置                                                                                                                   
# 默认值 env_keep += "LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET"                                                                     
##                                                                                                                                   
## 通过 sudo 运行 X 应用程序; HOME 用于查找                                                                         
## .Xauthority 文件。请注意,其他程序使用 HOME 来查找                                                                      
## 配置文件,这可能会导致权限升级!                                                                    
 默认值 env_keep += "HOME"                                                                                                         
##                                                                                                                                   
## X11资源路径设置                                                                                                        
 默认值 env_keep += "XAPPLRESDIR XFILESEARCHPATH XUSERFILESEARCHPATH"                                                              
##                                                                                                                                   
## 桌面路径设置                                                                                                             
 默认值 env_keep += "QTDIR KDEDIR"                                                                                                 
##                                                                                                                                   
## 允许 sudo-run 命令继承调用者的 ConsoleKit 会话
# 默认值 env_keep += "XDG_SESSION_COOKIE"
##
## 取消注释以启用特殊输入法。应注意
## 这可能允许用户破坏通过 sudo 运行的命令。
 默认值 env_keep += "XMODIFIERS GTK_IM_MODULE QT_IM_MODULE QT_IM_SWITCHER"
##
## 取消注释以启用命令输出的日志记录,除了
## sudo 重播并重新启动。使用 sudoreplay 回放记录的会话。
# 默认日志输出
# 默认值!/usr/bin/sudoreplay !log_output
# 默认值!/usr/local/bin/sudoreplay !log_output
# 默认值!/sbin/reboot !log_output

##
## Runas 别名规范
##


默认值:falmarri timestamp_timeout=10

##
## 用户权限规范
##
根全部=(全部)全部

## 取消注释以允许组wheel的成员执行任何命令
%wheel 全部=(全部) 全部

## 没有密码也一样
# %wheel ALL=(ALL) NOPASSWD: ALL

## 取消注释以允许 sudo 组的成员执行任何命令
# %sudo ALL=(全部) 全部

## 取消注释以允许任何用户在知道密码的情况下运行 sudo
## 他们运行命令的用户(默认为 root)。
# 默认值 targetpw # 询问目标用户的密码
# ALL ALL=(ALL) ALL # 警告:只能与“Defaults targetpw”一起使用

## 从 /etc/sudoers.d 读取嵌入式文件
##(这里的“#”不代表注释)
#includedir /etc/sudoers.d

答案1

图形程序不应使用 sudo 运行。正确的方法是kdesudo在 KDE 中以 root 身份运行 GUI 程序,或者在 GNOME 中使用gksu

以 root 身份运行图形程序可能会导致严重问题,这就是提供包装器的原因。读这个 Arch 邮件列表主题sudo对于试图欺骗启动 GUI 应用程序时可能遇到的严重问题。

答案2

这看起来像是 Arch Linux 中的有意配置。看到这个进行讨论并提供解决方案链接。

最好的提示似乎是将“DISPLAY XAUTHORITY”添加到/etc/sudoers.

Fedora 有/etc/sudoers以下内容,这使得 sudo somexapp 能够成功。

Defaults    env_reset
Defaults    env_keep =  "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults    env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults    env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults    env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"

相关内容