linux 无法打开文件lol.json:使用Jq?拒绝权限

juzqafwq  于 2023-05-06  发布在  Linux
关注(0)|答案(1)|浏览(212)

我在这里遇到了一些许可问题。我可以用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。任何帮助将不胜感激。

**更新1:**我已经尝试从snap重新安装jq,但仍然无法解决问题。
更新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

sf6xfgos

sf6xfgos1#

sudo snap remove jq
sudo apt install jq

不要在没有--classicsnap上安装命令行工具。
Snap软件包有“confinement”,这是“严格”或“经典”。jq只被打包为“严格”,这意味着它有自己的/tmp/snap.jq/目录,不能读取系统/tmp目录和一堆其他目录。想要使用“经典限制”的软件包必须由负责Snapcraft的人员手动批准,并且在安装它们时必须通过--classic,如下所示:sudo snap install <package_name> --classic
为了避免这种情况,永远不要在snap中安装命令行工具。这个错误是is intended behavior,他们不会改变它。

相关问题