在chmod上使用fchmod更好吗?

时间:2009-12-12 05:58:32

标签: c linux

使用fchmod(int fildes, mode_t mode)比使用chmod(const char * path,mode_t mode)更好吗?

3 个答案:

答案 0 :(得分:8)

它几乎完全相同。 chmod将花费更长的时间,因为它必须将路径转换为inode或filenode,而fchmod已经查找了inode / filenode。

当然,fchmod可能会出现更少的错误情况,因为已知该文件存在,有开放权限等。

答案 1 :(得分:6)

这取决于竞争条件是否值得关注。使用chmod,您可能会有人从您的下方重命名文件并修改错误的文件。在某些情况下(特别是如果你是根),这可能是一个巨大的安全漏洞。

答案 2 :(得分:0)

如果您正在处理文件的内容,那么您已经拥有了文件描述符(因为您使用了open()来获取它,或者因为您使用了fopen()并且可以使用fileno()在获取它的FILE *指针上,您可以使用fchmod()。如果您不想打开文件进行任何处理而只是更改模式,请使用chmod()