ウェブサイトからのサンプルは、 "スティッキービット"はディレクトリ用です。"スティッキービット"はディレクトリのみですか?私はそれがファイル上にあるかもしれない、奇妙なことがわかった
$ ll /tmp
drwxrwxrwt 16 root root 4096 1月 2 15:45 ./
私たちは、/ tmpは「T」での実行許可を見ることができ、誰もが実行することができますが、特定のディレクトリにのみ「ルート」や、その所有者のいずれかによって操作することができます。
これまでの私の理解では、このファイル許可フラグはディレクトリのみであり、ファイルではありません。私は、ファイルを作成するには、「開く」機能を使用していたとき、私のプログラムだったのでしかし、私は、私は3番目のパラメータとして任意のファイルのパーミッションを指定していない、この問題に遭遇した:実行後
#include<fcntl.h>
#include<unistd.h>
int main()
{
int f1=open("./mytest_c1.txt",O_CREAT|O_RDWR);
write(f1,"abc xyz\n",8);
close(f1);
return 0;
}
、私が得ました
--wxr-x--T 1 x x 8 1月 2 11:38 mytest_c1.txt*
奇妙なのは、大文字の「T」です。
- どのようにこの「T」フラグを生成しましたか?私は何も指定しなかった。
- 小文字の「t」との違いは何ですか?
-rw---x--T 1 x x 0 1月 2 15:59 mytest_c2.txt*
今回は、これまでに奇妙な:
#include<fcntl.h> #include<unistd.h> int main() { int f1=open("./mytest_c2.txt",O_CREAT|O_RDWR); close(f1); return 0; }
実行した結果は、別のファイルを作成:
は、だから私は私の実験を続けて、私はなるよう、ステートメントを "書く" 削除しました-er。 mytest_c2.txtのファイルアクセス権はmytest_c1.txtとは異なります。
この違いはどこから生じますか?私は私のプログラムで何も指定しなかった!
* Linuxは親ディレクトリからアクセス権を継承します。この場合、そのスティッキービットのファイルがあるフォルダが設定されます。*:わかりません。 OPのコードを実行しましたが、スティッキービットを設定しませんでした。 – giusti
@giusti:それは私のために...ちょうどチェックしました。 – coderredoc
興味深い...作成したファイルを削除して、OPのコードを再度実行しました。異なる結果が得られました。何度か私はスティッキービットを取得しますが、時々私はしません。私はOPのコードに何か問題があるのだろうかと思います。 – giusti