如何使用C删除其他用户创建的文件?

时间:2017-01-10 12:14:25

标签: linux ubuntu-14.04

我有两个C代码,第一个代码叫做“Producer”,我在用户“A”中运行它,代码创建一个文件。名为“Consumer”的第二个代码在用户“B”中运行,此代码读取“Producer”创建的文件,并在结束读取后删除此文件。用户“A”和“B”都在“ABshare”组中。该文件由“Producer”创建,权限为0660。

当我在用户“A”中运行de“Producer”代码时,文件创建完美无缺,我可以在用户“B”中运行“消费者”时阅读此内容,但问题是我无法删除文件。要删除文件,请尝试使用“remove()”http://man7.org/linux/man-pages/man3/remove.3.html

功能

当我在用户“A”或用户“B”中运行“Producer”和“Consumer”时,“Producer”生成文件,“Consumer”可以读取和删除此文件。

为什么我在不同用户中运行“Producer”和“Consumer”时无法删除文件?我尝试将文件的自身从“A”修改为“B”,然后使用“消费者”代码删除它,为此我使用此代码:更改c中的所有者和组,但我只能更改文件组而不是自己的。

在手册页中阅读chown功能:http://man7.org/linux/man-pages/man3/chown.3p.html我发现此信息:“更改用户ID仅限于具有适当权限的流程。”

当“消费者”在“B”中运行时,我如何向“消费者”代码提供“适当的权限”以更改用户A中“生产者”创建的文件的拥有权?或者,当“生产者”和“消费者”在不同的用户中运行时,如何删除“生产者”创建的文件?

拜托,有人可以帮帮我吗?

谢谢!!!

1 个答案:

答案 0 :(得分:0)

就像wildplasser所说的那样,我所需要的只是给文件所在目录提供正确的权限。在我的例子中,目录的新权限是0777。