如何允许应用程序以 sudo 身份打开并执行操作?

如何允许应用程序以 sudo 身份打开并执行操作?

我正在运行带有 KDE Plasma 桌面 5.27 的 Debian 12,我的问题是每次打开应用程序时,它都不允许我以 sudo 身份执行操作,或者权限设置不正确。

例如,当我打开 Dolphin 文件管理器时,我可以读取、写入和修改主文件夹中的文件,但如果我转到根文件夹,则无法写入或修改文件。我必须打开终端,使用 sudo 命令在根文件夹中创建一个文件。但我希望能够使用 Dolphin 执行这些任务。

另一个例子是 KDE 分区管理器。打开它时,我可以看到我的所有设备,但如果我尝试格式化我的 USB 驱动器,我实际上无法执行任何操作。所有选项都呈灰色,分区旁边有一个锁。

有没有什么办法可以让我以 sudo 身份打开应用程序并允许它们具有 sudo 访问权限,这样我就不必去终端来完成这些任务?

答案1

例如,当我打开 Dolphin 时,我可以读取、写入和修改主文件夹中的文件,但如果我进入根文件夹,则无法写入或修改文件。我必须打开终端,使用 sudo 命令在根文件夹中创建一个文件。但我希望能够使用 Dolphin 执行这些任务。

打开 使用 KIO 的“以管理员身份访问”功能admin:/。(这通常作为单独的kio-admin软件包提供;它应该适用于所有“KDE 原生”应用程序。GNOME(GTK)应用程序中也存在同样的功能,无需单独安装。)

另一个例子是 KDE 分区管理器。当我打开它时,我可以看到我的所有设备,但如果我尝试格式化我的 USB,我实际上没有选择执行任何操作。所有选项都呈灰色,分区旁边有一个锁

那个特定的锁意味着分区已被安装;它与权限无关。

答案2

不要进行永久性更改以始终以超级用户(root用户)身份打开应用程序,因为正如其他人所说,这会破坏 Linux 固有的安全性。

反而,需要时,使用打开应用程序须藤。这似乎是一个额外的步骤,但为了避免反恶意软件在后台持续运行,这是值得的,因为这是另一个流行的操作系统所需要的。

例如,运行以超级用户身份进行 gedit,打开终端并输入sudo gedit。完成后关闭 gedit 实例。“以 root 用户身份编辑文件具有潜在危险,可能会严重破坏您的系统。”

Dolphin 文件管理器具有内置检查以防止疏忽大意造成伤害。话虽如此,我承认这种做法很冒险(并制作磁盘映像以防万一)。电脑调频是另一个文件管理器不是启动 sudo 时抱怨...但它可能会破坏某些功能。操作员需谨慎!

至于无法对驱动器进行更改,如果驱动器已安装,则某些操作禁止。这就像在驾驶汽车时试图更换分电器盖一样。第一的卸载,然后调整。

答案3

帖子 如何在不使用终端的情况下以 root 用户身份运行程序 有以下内容 Radu Rădeanu 的回答 可以帮助解决你的问题:

如果您想在不使用终端的情况下运行程序,我可以推断您指的是 GUI 程序。并且所有这些 GUI 应用程序中的每一个通常都有一个位于 /usr/share/applications/或位于您的用户目录中的 .desktop 文件~/.local/share/applications。因此,要以 root 身份启动程序,您必须编辑或最好复制其关联的 .desktop 文件。

让我们举个例子编辑,Ubuntu 中的默认 GUI 编辑器。其 .desktop 文件为/usr/share/applications/gedit.desktop,内容如下:

[Desktop Entry]
Name=gedit
GenericName=Text Editor
Comment=Edit text files
Exec=gedit %U
Terminal=false
Type=Application
StartupNotify=true
MimeType=text/plain;
Icon=accessories-text-editor
Categories=GNOME;GTK;Utility;TextEditor;
X-GNOME-DocPath=gedit/gedit.xml
X-GNOME-FullName=Text Editor
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gedit
X-GNOME-Bugzilla-Component=general
X-GNOME-Bugzilla-Version=3.10.4
X-GNOME-Bugzilla-ExtraInfoScript=/usr/share/gedit/gedit-bugreport
Actions=Window;Document;
Keywords=Text;Editor;Plaintext;Write;
X-Ubuntu-Gettext-Domain=gedit

[Desktop Action Window]
Name=Open a New Window
Exec=gedit --new-window
OnlyShowIn=Unity;

[Desktop Action Document]
Name=Open a New Document
Exec=gedit --new-document
OnlyShowIn=Unity;

现在创建该文件的副本如下:

sudo cp /usr/share/applications/gedit.desktop /usr/share/applications/root_gedit.desktop

并做以下更改:

[Desktop Entry]  
Name=gedit as root  
GenericName=Text Editor as root  
Comment=Edit text files  
Exec=gksudo gedit %U  
Terminal=false  
Type=Application  
StartupNotify=true  
MimeType=text/plain;
Icon=accessories-text-editor  
Categories=GNOME;GTK;Utility;TextEditor;  
X-GNOME-DocPath=gedit/gedit.xml  
X-GNOME-FullName=Text Editor  
X-GNOME-Bugzilla-Bugzilla=GNOME  
X-GNOME-Bugzilla-Product=gedit  
X-GNOME-Bugzilla-Component=general  
X-GNOME-Bugzilla-Version=3.10.4  
X-GNOME-Bugzilla-ExtraInfoScript=/usr/share/gedit/gedit-bugreport  
Actions=Window;Document;  
Keywords=Text;Editor;Plaintext;Write;  
X-Ubuntu-Gettext-Domain=gedit

[Desktop Action Window]  
Name=Open a New Window  
Exec=gksudo gedit --new-window  
OnlyShowIn=Unity;

[Desktop Action Document]  
Name=Open a New Document  
Exec=gksudo gedit --new-document  
OnlyShowIn=Unity;

gedit此后,当您在 Dash 中搜索时,您将看到两个 gedit 实例:一个名为文本编辑器和一个以 root 身份编辑文本你应该打开那个名为以 root 身份编辑文本如果您想以 root 身份运行 gedit。

笔记: gksudo必须安装才能使用它。如果你还没有安装,你可以从终端使用以下命令安装它:

sudo apt-get install gksudo

相关内容