我在 Ubuntu 22.04 上安装了 poedit 3.3.1,我想访问var/www/html/
目录中的 .po 文件。但是,每次我尝试时,都会得到Error opening directory '/var': Permission Denied
我更改了目录的所有权var
,甚至chmod 777
在其上运行,但错误仍然存在。每次我都必须将文件复制到桌面,编辑它们,然后重新复制它们。有人知道我如何以管理员身份运行 poedit 或修复此问题吗?
尝试运行时sudo poedit
出现以下错误:
mkdir: cannot create directory '/run/user/0': Permission denied
Authorization required, but no authorization protocol specified
14:21:13: Error: Unable to initialize GTK+, is DISPLAY set properly?
似乎存在一些 UID 问题。当我手动创建目录时,错误的第一行消失了。
不使用 sudo运行poedit
可以正常打开,没有任何错误或警告。
更新:已修复 sudo 问题,sudo poedit
现在可以工作,但仍然存在权限问题。
答案1
一般情况下,不要运行图形程序sudo
。如果您需要编辑您没有权限的内容,那么最好授予自己访问该文件的权限。
不幸的是,在这种情况下,Snap 系统的 AppArmor 策略限制应用程序只能访问主目录中的文件——文件权限或 /var 的所有权很可能不是问题——尽管你可以编辑 Snap 为 poedit 安装的 AppArmor 配置文件,我不确定是否有办法持久地执行此操作。(我可能会在某天更新该帖子,但它可能已经在 AskUbuntu 上讨论过了。)
另一种方法是通过该工具运行编辑器sudoedit
- 这不会“sudo”编辑器,而是自动将文件复制到可访问的位置并返回:
SUDO_EDITOR=poedit sudoedit /var/html/whatever.po
或者,如果编辑器是基于 GTK 的,请指定一个admin://
URL 以使用 GTK 的内置“管理员访问”功能:
poedit admin:///var/html/whatever.po