不允许删除目录但在其中创建新文件?

不允许删除目录但在其中创建新文件?

我的作业中的问题是这样说的:

创建一个临时目录,为所有人提供所有权限,且不能删除

并将hello.sh复制到该目录中,为每个人提供执行权,但hello.sh将以所有者身份执行。

所以我创建了一个名为 temp 的目录并授予了如下权限:

chmod 555 temp

但是当我尝试 cp hello.sh 到 temp 时,我收到错误,因为 temp 的权限为 555。教授在这里到底想问什么?如何不允许删除目录但将文件复制到其中?

答案1

鉴于这是一项家庭作业,我不会给出确切的答案,但请考虑一下:如果给您分配了这项作业,则意味着已经向您解释了setuid和位。sticky这些知识应该足以完成这项任务。

答案2

Linux 将权限设置分为 3 组:

  • 所有者 - 拥有该文件的用户
  • 组 - 用户集
  • 世界 - 不是所有者,也不是集团的一部分

可以授予以下权限:

  • 执行

您可以使用命令通过向每个组应用所需的 ( ) 标签来chmod设置每个组 ( ) 的权限。用于设置权限的数字实际上是每个组设置的二进制 ( ) 标志的十进制表示形式。例如,您想要设置允许以下操作的权限:Owner/User/WorldRead/Write/Execute0/1

  • 所有者 - 读、写和执行
  • 组 - 读取和执行(但不写入)
  • 世界 - 没有权限

因此,在这种情况下,Owner我们将拥有:read=1write=1execute=1获得许可:

111 -> 7

Group具有:read=1write=0execute=1获得许可:

101 -> 5

最后World将有:read=0write=0execute=0获得许可:

000 -> 0

此外,您可以设置一个所谓的粘性位到一个目录。它将阻止其他用户删除或重命名该目录中的文件。只有所有者才能删除或重命名该目录中的文件。因此,在您的情况下,正确的chmod命令将如下所示:

chmod 1777 temp

其中777允许read/write/execute所有三个组,附加的1粘性位

相关内容