在自己的目录中更改所有者


0

我有一个与用户一起运行的脚本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访问权限之外还有其他方法吗?

UPDATE

该脚本生成一个git clone,然后生成一个带有Apache目录的rsync。新文件为所有者提供当前用户,但我需要Apache作为所有者。




在我看来,这是一个相当基本的安全措施:如果它不存在,我可以随意将受感染文件的所有权转移给其他用户。
MariusMatutiae 2016年

Answers:


1

chown命令仅在root出于安全原因时可用,因此如果您想这样做,则必须以root身份执行此操作。

我可以做两件事:

  • 用这个SETUID位。这样,您允许用户运行脚本root(尽管它也有安全问题,具体取决于您的脚本的功能)。更多关于这里

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


感谢您的回答。我已经用脚本的细节更新了我的帖子。我试着做chmod u+s script,但它没有改变任何东西。这是使用它的正确方法吗?
ôkio2016年

您以root身份运行脚本?如果不是这就是为什么它什么都不做
Ramhound 2016年

您需要将所有权更改为root。当以非root身份运行时,它将有效地运行,root而不是调用脚本的用户。
nKn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.