Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C在Linux中复制文件并更改其权限_C_Linux_Permissions_Copy - Fatal编程技术网

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

使用C在Linux中复制文件并更改其权限,c,linux,permissions,copy,C,Linux,Permissions,Copy,我通过以只读模式打开源文件,以只读模式打开目标文件来复制文件。这很简单,而且很有效 问题是,有时我复制的文件位于NFS驱动器或其他网络驱动器上,而在这种情况下,权限被破坏,SELinux会抱怨。然后我去手动设置我刚才复制的文件的权限,这样就可以了。我可以再次访问它们(通过ftp、web等) 有没有办法复制文件并更改某个用户和组的权限 代码是赞赏的。 谢谢 编辑: 你想要什么 open(argv[2], O_WRONLY | O_CREAT, 0666) 工作?根据,有一个功能: int chm

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

问题是,有时我复制的文件位于NFS驱动器或其他网络驱动器上,而在这种情况下,权限被破坏,SELinux会抱怨。然后我去手动设置我刚才复制的文件的权限,这样就可以了。我可以再次访问它们(通过ftp、web等)

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

代码是赞赏的。 谢谢

编辑:

你想要什么

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

根据,有一个功能:

int chmod (const char *filename, mode_t mode)

这应该可以满足您的需要。

对于用户和组设置更改,请使用chown()函数。chmod()适用于st_模式值,如protections和setuid、setgid、sticky bit。

您的意思是更改权限(
rwxrwx
),还是更改所有权(用户和组)?david:或者。我的意思是,我试过使用chown user:group,我试过chmod 666,也很有效……你可能不想要0666;这使得文件可以公开写入,这通常是一个错误。我推荐0644;我接受0664。我很高兴你没有说0777,这是很多人不小心使用的。0666只是一个例子,我通常会说0600,使用类似于:open(argv[2],O|WRONLY | O|u CREAT,0666)的东西怎么样