解释 ls-l 的结果

解释 ls-l 的结果

我在解释目录中 ls -l 的结果时遇到问题:

-rwxrwxr-x 1 root   root      37114 Jul 24 02:13  madison_events.json
-rwxrwxr-x 1 root   root     131355 Jul 24 16:00  milwaukee_events.json
-rwxrwxr-x 1 root   root      67570 Jul 26 19:42  minneapolis_events.json
-rwxrwxr-x 1 root   root     402115 Jul 24 16:33  nashville_events.json
-rwxrwxr-x 1 root   root      70429 Jul 24 16:46  neworleans_events.json
-rw-rw-r-- 1 ubuntu ubuntu   546936 Jul 27 02:15  nyc_events.json
-rwxrwxr-x 1 root   root      58037 Jul 24 16:50  seattle_events.json
-rw-rw-r-- 1 ubuntu ubuntu   141303 Jul 27 01:04  sf_events.json

我注意到我的 python 脚本可以写入列出的文件ubuntu(nyc_events.josn 和 sf_events.json),但它无法写入列出的根目录(seattle_events.json、nashville_events.json 等)。

在这种情况下,root 与 ubuntu 意味着什么?如何让读取“root”的文件读取“ubuntu”?我还注意到,在 filezilla 中,根文件的数值为664,而 ubuntu 文件的数值为775

简而言之,我希望能够写入所有这些文件。谢谢。

答案1

某些文件归 root(以及组 root)所有。这是因为在某些时候您已经以 root 身份运行了生成它们的脚本。不要这样做,仅使用 root 来执行需要 root 权限的系统管理任务。所有权可以通过 固定chown

root 拥有的文件也具有执行权限,可能是因为 rootumask默认设置了新文件的执行位。 .json文件通常不需要可执行(因为它们只是 json 数据,而不是脚本),因此您应该使用chmod.

cd要修复包含文件的目录的所有权和权限,并且:

sudo chown ubuntu:ubuntu *.json
sudo chmod 644 *.json

答案2

原因是列出的文件root由用户拥有root,因此不能被任何其他用户更改,就像ubuntu您的情况一样。
为了使您的程序能够写入列出的文件,root您必须使用chown命令更改这些文件的所有权。
脚步:

  1. root用户身份登录。
  2. cd到包含您的文件的文件夹
  3. chown ubuntu:ubuntu *.json

或者只是执行:

  1. cd <to the directory>; sudo chown ubuntu:ubuntu *.json

希望这可以帮助!

相关内容