0

我正在编写一个需要能够设置文件权限的程序,但无论出于何种原因,chmod 的行为都不像我期望的那样。对于几个测试,我尝试创建两个不同的文件(fileOne.txt 和 fileTwo.txt)。fileOne.txt 的权限应该设置为 600,而 fileTwo.txt 的权限应该设置为 777。

运行我的程序会产生以下结果:

fileOne.txt having permissions set to ---x-wx--T
fileTwo.txt having permissions set to -r----x--t

?? 什么?

下面是我的代码。我的 printf 的结果和预期的一样,(600, 777),那为什么 chmod 不这样呢?

printf("chmod = %d\n", (int)getHeader.p_owner * 100 + (int)getHeader.p_group * 10 + (int)getHeader.p_world);
chmod(getHeader.file_name, (int)getHeader.p_owner * 100 + (int)getHeader.p_group * 10 + (int)getHeader.p_world);
4

2 回答 2

3

UNIX 文件系统权限是八进制的,而不是十进制的。所以乘以10010会给你意想不到的结果。

于 2013-03-04T01:44:18.820 回答
2

权限以八进制报告,600实际上0600是 C(或十进制的 384)。

因此代码应该是:

printf("chmod = %d\n", (int)getHeader.p_owner * 100 + (int)getHeader.p_group * 10 + (int)getHeader.p_world);
chmod(getHeader.file_name, (int)getHeader.p_owner * 0100 + (int)getHeader.p_group * 010 + (int)getHeader.p_world);
于 2013-03-04T01:44:25.980 回答