我有一个文件夹,里面有我对系统的笔记。
我以 user1 身份登录
cd masternotes
生成:
bash: cd: mastersnotes: permission denied
whoami
生成:user1
ls -l
生成:
drw-rw-rw-. 2 user1 user1 4096 Mar 26 20:47 masternotes
ls -l
目录内部产生:
-rw-rw-rw-. 7 user1 user1 345 Oct 7 2006 crontab
-rw-rw-rw-. 7 user1 user1 348 Oct 7 2006 crontab~
-rw-rw-rw-. 7 user1 user1 3702 Oct 7 2006 grep_usage.txt
-rw-rw-rw-. 7 user1 user1 91868 Oct 7 2006 lvm-layout-10-14-03.tif
-rw-rw-rw-. 7 user1 user1 30 Oct 7 2006 mysql
-rw-rw-rw-. 7 user1 user1 35764 Oct 7 2006 notes
我已经chmod -R 666 masternotes
在该文件夹上运行了。
我已经运行chown
到 root 并chgrp
再次运行回 user1。
root 可以登录进入该文件夹并打开该文件。
user1 不能。
有什么线索可以知道这里发生了什么事吗?
答案1
这是一个权限问题,而不是所有权问题。
您向我们展示的权限中明显缺少执行权限(缩写x
并出现-
在 中的 位置)。rw-
目录的执行权限与常规文件的执行权限有很大不同。对于目录,执行权限允许进入目录(即cd
访问它或在文件管理器中打开它)。它们还允许尝试访问目录中的文件(尽管是否成功还取决于其他权限,有时包括被访问文件的权限)。
root
能够进入目录,因为它实际上不受通常的权限约束。在许多方面,以 身份运行的命令和应用程序root
将尝试尊重权限以遵守用户的意愿。但root
有权对任何文件或目录执行任何操作(操作系统能够执行的操作)。在root
shell 中,cd
进入没有任何执行权限的目录将会成功。
解决方案解决问题的方法是运行:
chmod u+x masternotes
这赋予 ( +
) 所有者masternotes
( )对该目录的u
可执行权限 ( )。x
然后,您将能够以普通用户的身份进入该目录并尝试访问那里的文件。
如果您希望群组所有者的成员也能执行此操作,那么您可以运行以下命令:
chmod ug+x masternotes
但您可能是您所在特定用户组(拥有该文件夹)的唯一成员。
chmod
这里的命令不是需要运行root
——我故意不是包含sudo
在任一命令中。您自己的该文件夹,因此您可以自己更改其权限 - 您不需要root
为您执行此操作。
如果你有兴趣以数字方式设置执行权限,请记住,对于您添加的每个数字(从零开始):
- 4 为已读。
- 2 表示写入。
- 1 表示执行。
例如,如果你想让每个人都能阅读和执行some-file
但只有所有者才有写入权限,您可以使用:
chmod 755 some-file
我建议社区文档中的 FilePermissions,进一步了解 Ubuntu 中的文件权限,包括可执行位及其对文件夹的特殊含义。