用于写入的Unix目录权限

时间:2013-03-13 02:22:07

标签: unix permissions

说我有一个文件夹“root”。我拥有这个文件夹,我这样做是为了其他人(包括用户“user2”,权限是r-x)

在root中我有另一个文件夹“bin”。我将“bin”的所有者更改为用户“user2”,并授予他rwx权限。

  1. user2能否在“bin”文件夹中创建新文件?没有为“root”写作会影响他这样做的能力吗?
  2. 另外,user2可以从“root”中删除整个文件夹“bin”吗? (我不希望他能够这样做 - 他只需要在文件夹bin中创建/删除文件!)

3 个答案:

答案 0 :(得分:5)

  1. 是。由于user2x拥有访问权限(root)且拥有bin,因此他可以在root/bin中创建文件。如果权限当前不包含所有者的写入权限,则所有者(user2)可以更改目录权限,以便权限包括写入权限。

  2. 没有。由于user2root中没有写入权限,user2无法从bin删除root

答案 1 :(得分:2)

他可以在bin里面写,但不能在bin之外写。除非您另行修改其权限,否则其rwx权限的范围将驻留在该文件夹中。

答案 2 :(得分:1)

了解你所说的你有这样的事情:

drwxr-xr-x  10 root     root          22 Dec 26 23:04 root

其中“root”的内容是这样的:

cd root
ls -la
drwxr-xr-x  10 root     root          22 Dec 26 23:04 .
drwxr-xr-x  29 root     root          34 Oct 24 06:13 ..
drwx------   2 user2    root           3 Oct 23 10:28 bin

“root”上的权限必须至少为555(r-xr-xr-x),因为如果“root”目录权限为500或550(见下文),它将无效,因为“user2”不会被允许进入目录“root”(有例外,如果“user2”是“root”组的成员,550就可以了。)

# This would not work, user2 cannot enter the "root" directory
drwx------  10 root     root          22 Dec 26 23:04 root

要了解所有这些安全性内容,首先必须意识到目录实际上只是一个文件。目录和文件之间的主要区别在于“x”权限的含义。如果用户没有“读取”权限,则他无法看到目录中的文件。所以,让我们把访问权限放到711,如下:

drwx--x--x  10 root     root          22 Dec 26 23:04 root

现在让我们尝试查看目录中的文件。你不能:

$ ls -la root
root: Permission denied
total 3

但是,您可以输入它(因为“x”执行权限),但您仍然无法看到内部:

$ cd root
$ ls -la
.: Permission denied
total 3

但是如果你知道里面有你可以访问的目录,你可以输入它:

$ cd bin  # Ps. Here we assume we did the 'cd root' above already
$ ls -la
total 6
drwxr-xr-x   2 user2    root           2 Mar 14 14:57 .
drwx--x--x   3 root     root           3 Mar 14 14:57 ..

“user2”可以作为所有者,做任何他想要的东西。对“bin”的访问甚至可以是“700”,只要您是所有者,就可以输入它。因为访问是755(在我们的示例中),任何人都可以进入目录“bin”,但只有“user2”可以在其中创建文件。修改或读取这些可能的文件将取决于“user2”提供的访问权限。

“user2”即使拥有它也无法删除“bin”目录,因为他不拥有写入“bin”目录名称的“文件”(即“根”目录)。这是“root”用户拥有的,他是唯一允许在那里写作的用户。