2017-04-24 9 views
0

Linuxのデフォルトグループ所有者にファイルを作成すると、ファイルを作成するプロセスのgidになります。 SGIDを親ディレクトリに追加すると、ファイルは親ディレクトリの所有者グループを継承します。また、sys5やBSDのように動作するようにfsマウントオプションを変更することもできます。Linuxでファイルを作成するときにBSDまたはsys5スタイルを選択してください

ディレクトリのアクセス権とfsマウントオプションに関係なくこのオプションを選択したいのですが?あなたがグループの所有者を選ぶことを可能にするcの関数オプションかsyscallパラメータがありますか?

$ find . -ls 
    262 4 drwxrwxr-x 4 devops devops  4096 Apr 24 18:01 .  
    999 4 drwxrwxr-x 2 devops root   4096 Apr 24 18:03 ./dir1 
    6093 4 drwxrwsr-x 2 devops root   4096 Apr 24 18:03 ./dir2 
$ touch dir1/file dir2/file 
$ find . -ls 
    262 4 drwxrwxr-x 4 devops devops  4096 Apr 24 18:01 . 
    999 4 drwxrwxr-x 2 devops root   4096 Apr 24 18:04 ./dir1 
    5576 0 -rw-rw-r-- 1 devops devops   0 Apr 24 18:04 ./dir1/file 
    6093 4 drwxrwsr-x 2 devops root   4096 Apr 24 18:04 ./dir2 
    6094 0 -rw-rw-r-- 1 devops root   0 Apr 24 18:04 ./dir2/file 
$ 

そして、私はそのような何かを持っていることを望む:

$ mytouch -s BSD dir1/file1 
$ mytouch -s sys5 dir1/file2 
$ find dir1 -ls 
    999 4 drwxrwxr-x 2 devops root   4096 Apr 24 18:10 dir1 
    6213 0 -rw-rw-r-- 1 devops root   0 Apr 24 18:10 dir1/file1 
    6214 0 -rw-rw-r-- 1 devops devops   0 Apr 24 18:10 dir1/file2 
$ 
+0

コードください。文脈は重要です。あなたが本当にパーミッションを気にしているなら、 'chown()'と 'chmod()'はコマンドラインの友達と同じことをします。スティッキービットに応じて、実際にハッキーであり、私はそれを強く抑えるだろう。 – tadman

答えて

1

チャンスはあなたがすることはできません、です。

スティッキービットの実装は完全にカーネル内に存在し、その動作方法を制御するopen()またはcreat()のオプションはありません。

プログラムを作成した後に、手動でファイルのグループをリセットするには、chown()を呼び出すと考えられます。ただし、プロセスがルートとして実行されている場合、または親ディレクトリを所有するグループのメンバとして実行されている場合のみ、これは確実に機能します。

関連する問題