linux - 无法打开文件 lol.json:使用 Jq 拒绝权限?
问题描述
我在这里面临某种许可问题。我可以使用 读取文件cat
,使用它对其进行更改,nano
但由于某种原因,jq
存在权限问题。这是我所面临的:
msp@coolpad:~/projects/lol$ jq .name lol.json
jq: error: Could not open file lol.json: Permission denied
在检查权限时,这是我得到的:
msp@coolpad:~/projects/lol$ ls -l
total 4
-rw-rw-r-- 1 msp msp 0 Sep 27 04:04 lol-domains.txt
-rwxrwxrwx 1 msp msp 593 Sep 27 04:38 lol.json
如您所见,我已尝试授予它777
权限,但它仍在显示Permission denied
。我知道设置777
权限不是一个好主意,我完全打算664
在问题解决后将其改回。Anyhelp将被appriciated。
更新1:我尝试过重新安装jq
,snap
但仍然没有解决问题。
更新 2:输出cat lol.json
msp@coolpad:~$ cat lol.json
{"name":"lol"}
更新 3:输出echo '{"name":"lol"}' | jq .name
msp@coolpad:~$ echo '{"name":"lol"}' | jq .name
"lol"
更新 4:评论中出现的一种解决方法:
cat lol.json | jq .name
解决方案
sudo snap remove jq
sudo apt install jq
您jq
通过 Ubuntu 的snap
.
Snap 包具有“限制”,即“严格”或“经典”。在这种情况下jq
,必须已打包为“严格”,这意味着它有自己的/tmp/snap.jq/
目录,无法读取系统/tmp
目录和一堆其他目录。想要使用“经典禁锢”的 Snap 包必须经过 snap 负责人的手动批准,并且--classic
在安装时必须通过,如下所示:sudo snap install <package name> --classic
.
无论如何,卸载快照版本jq
并从apt
(上述两个命令)重新安装它为我修复了权限错误。无论如何,jq
inapt
是比最新版本更新的版本snap
(至少截至 2020 年 7 月在 Ubuntu 20.04 上)。
在我看来,通过安装命令行工具snap
是一个错误,至少不会--classic
因为您会遇到上述错误。这是预期的行为,不太可能改变,因为设计者snap
认为软件告诉您存在的文件不存在有什么问题。在 snapcraft 论坛上查看有关此问题的主题:https ://forum.snapcraft.io/t/jq-cant-read-some-files/17835
推荐阅读
- angularjs - 如何使用带有导出按钮的 Angular js 数据表
- drupal-8 - 重置密码链接在 drupal 8 中不起作用
- regex - sed 删除字符串开头的字符
- ios - 如何使用 Swift 从 STPPaymentMethodsViewController 获取付款令牌?
- java - 如果在线程休眠之前,RSA 解密需要更长的时间
- python - 每次我在 PyCharm 中重新运行脚本时,都需要终止在端口上运行的进程
- c# - C#中 CompareTo() 返回的值(-1 或 1 或 0)如何实际对数字进行排序
- raspberry-pi3 - 树莓派红灯不亮
- windows - Get-ScheduledTask 命令在 Windows Server 2008 R2 中不起作用
- javascript - JSON.parse(JSON.stringify(object_with_function)) != object_with_function