使用C复制文件并在Linux中更改其权限

时间:2010-06-30 19:17:52

标签: c linux permissions copy

我通过以只读模式打开源并以只写模式打开目标来复制文件。这很简单,也很有效。

问题是,有时我正在复制一个位于NFS驱动器或其他网络驱动器上的文件,在这些情况下,权限会被搞砸,SELinux会抱怨。然后我去手动设置我刚刚复制的文件的权限,这没关系。我可以再次访问它们(通过ftp,web等)。

有没有办法复制文件并将权限更改为某个用户和组?

代码表示赞赏。 感谢

编辑:

会像

open(argv[2], O_WRONLY | O_CREAT, 0666)

工作?

2 个答案:

答案 0 :(得分:2)

对于用户和组设置更改,请使用chown()函数。 chmod()处理st_mode值,如protectctions和setuid,setgid,sticky bit。

答案 1 :(得分:0)

根据http://www.delorie.com/gnu/docs/glibc/libc_290.html,有一个功能:

int chmod (const char *filename, mode_t mode)

这应该做你想要的。