更改其自身目录的所有者

更改其自身目录的所有者

我有一个以用户身份运行的脚本user1:user1,在目录内进行操作dir。在脚本的末尾,我想使用 chown 将脚本的所有者更改为user2:user2

但它不起作用。我尝试了同样的操作,以 user1 身份登录:

$ ls -l
drwxr-xr-x 5 user1 user1 4096 Jan 11 10:58 dir
$ chown -R user2:user2 dir
chown: changing ownership of dir: Operation not permitted

为什么我无法更改我自己的文件/目录的所有者?除了使用 root 访问权限之外,还有其他方法可以执行此操作吗?

更新

该脚本会进行 git clone,然后与 Apache 目录进行 rsync。新文件的所有者是当前用户,但我需要 Apache 作为所有者。

答案1

出于安全原因,该chown命令仅适用于root,因此如果您想执行该操作,则必须以 root 身份执行。

我认为你可以做两件事:

  • 使用SETUID位。这样,您就允许用户以以下身份运行脚本root(尽管这也存在安全问题,具体取决于您的脚本的作用)。有关此内容的更多信息这里

  • 您还可以创建一个基于任务的队列(例如,使用redis)。脚本在运行时会在队列中插入一个值,而以该方式运行的脚本会root读取该队列并进行任何必要的更改(在您的情况下,chown在该文件上使用)。

相关内容