我在解释目录中 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
命令更改这些文件的所有权。
脚步:
- 以
root
用户身份登录。 cd
到包含您的文件的文件夹chown ubuntu:ubuntu *.json
或者只是执行:
cd <to the directory>; sudo chown ubuntu:ubuntu *.json
希望这可以帮助!