0

ファイルのアクセス許可を設定できるようにする必要があるプログラムを作成していますが、何らかの理由で chmod が期待どおりに動作していません。いくつかのテストのために、2 つの異なるファイル (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 ファイル システムのアクセス許可は、10 進数ではなく 8 進数です。そのため、 を掛けると、100予期10しない結果が得られます。

于 2013-03-04T01:44:18.820 に答える
2

パーミッションは 8 進数で報告されるので600、実際0600には C (または 10 進数で 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 に答える