我有两个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中“生产者”创建的文件的拥有权?或者,当“生产者”和“消费者”在不同的用户中运行时,如何删除“生产者”创建的文件?
拜托,有人可以帮帮我吗?
谢谢!!!
答案 0 :(得分:0)
就像wildplasser所说的那样,我所需要的只是给文件所在目录提供正确的权限。在我的例子中,目录的新权限是0777。