【问题标题】:copy a file and change its permissions in Linux with C在 Linux 中使用 C 复制文件并更改其权限
【发布时间】:2010-06-30 19:17:52
【问题描述】:

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

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

有什么方法可以复制文件并更改特定用户和组的权限?

感谢代码。 谢谢

编辑:

会像

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

工作?

【问题讨论】:

  • 您的意思是更改权限 (rwxrwxrwx),还是更改所有权(用户和组)?
  • 大卫:要么。我的意思是,我尝试使用 chown user:group 并且尝试了 chmod 666 并且也可以...
  • 你可能不想要 0666;这使得文件可以公开写入,这通常是一个错误。我推荐0644;我会接受 0664。我很高兴你没有说很多人使用的 0777 - 不小心。
  • 0666 只是一个例子,我通常使用 0600

标签: c linux permissions copy


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    int chmod (const char *filename, mode_t mode)
    

    这应该做你想做的。

    【讨论】:

    • 如何使用类似的东西:open(argv[2], O_WRONLY | O_CREAT, 0666)
    猜你喜欢
    • 1970-01-01
    • 2014-12-16
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 2018-08-03
    • 1970-01-01
    • 2012-09-25
    相关资源
    最近更新 更多