我刚刚了解到一些令我震惊的事情,因为我不知道这是事实。
如果我有一个具有以下权限的目录:
user@host:~$ ls -la testdir
total 8
drwxrwxrwx 2 user user 4096 Mar 3 20:36 .
drwx------ 34 user user 4096 Mar 3 20:36 ..
-rw-r--r-- 1 user user 0 Mar 3 20:36 testfile 1
-rw-r--r-- 1 user user 0 Mar 3 20:36 testfile 2
即使文件testfile 1
和testfile 2
有仅拥有者的写入权限每个人都可以在上面写字。
到目前为止,我认为目录的权限只影响目录本身。
现在我的问题是——如果一切似乎都是由文件所在的目录权限设置的,那么文件的文件权限有什么用呢?
====编辑1====
另一方面查看这些权限:
[user@geruetzel2 default]$ ls -la
total 24
drwxr-xr-x. 2 root root 41 Dec 19 23:07 .
drwxr-xr-x. 96 root root 8192 Mar 3 20:28 ..
-rw-r--r--. 1 root root 354 Dec 19 23:07 grub
-rw-r--r--. 1 root root 1756 Nov 30 19:57 nss
-rw-------. 1 root root 119 Mar 6 2015 useradd
cat useradd
如果我在这里以非root身份执行,我会得到一个没有权限错误。这是为什么?该目录具有“其他”的读取权限,因此它应该是可读的?我给出的两个示例之间似乎存在差异,但我没有看到不同行为的原因。
答案1
目录权限“仅”影响目录的内容。因此,任何对目录具有写权限的人都可以删除该目录中的文件或文件夹,即使文件或文件夹的权限设置为没有写访问权限。如果您使用或任何其他文本编辑器
打开该文件夹,可能会更容易理解。vi
在 Unix 和 Linux 中“一切皆文件”。
例如,如果您使用 编辑文件vi
,它不会就地编辑该文件,而是制作副本并在保存时删除原始文件。
另一方面,不拥有该文件的用户无法echo
直接进入该文件。
答案2
不可以,没有权限的文件无法写入。 -- 但可以删除它们并创建同名的新文件。为此,您需要它们所在目录的写权限。
带有目录...
x
未经许可 你几乎什么都不能做- 独自
r
一人你可以仅有的非递归地列出其内容,仅显示名称,您甚至无法区分条目是目录还是文件,也无法打开任何条目
- 独自
- 独自
x
一人你可以cd
进入那个目录- 访问所有文件和子目录读写包括权限设置(根据他们的自己的权限),如果您知道他们的名字
- 独自
w
一人你什么也做不了(!?) - 你需要
x
和w
到- 添加条目(即创建文件/目录)
- 删除条目(即删除文件或空目录)
- 您需要文件本身的零权限才能执行此操作
- 非空目录永远无法删除...
- ...并且缺少子目录的权限可能会阻止父目录的所有者删除其内容,即递归删除
dir1/dir2/dir3/file
根据您的需要 进行操作x
的dir1
,dir2
和dir3
dir3
和/或 的一些权限file
,具体取决于操作