作成されたフォルダ権限の問題:一時フラグ

作成されたフォルダ権限の問題:一時フラグ

ディレクトリ権限に奇妙な問題があります。

C++ アプリケーションでフォルダを作成します。 mkdir( "foldername", 777 );

しかし、そのフォルダにファイルを作成しようとすると、問題が発生して戻ってきfopen()ます。そのため、確認してみると、作成されたフォルダに対して次の権限があります。NULLerrnoPermission denieddr----x--t

(ルートフォルダにありますdrwxrwxr-x

探してみると、この珍しいt意味は「一時的」ですが、それがどういう意味なのか全くわかりません。

chmod 777 foldernameこれはシェルで機能し、プロパティをに設定しますdrwxrwxrwxが、毎回手動で実行することはできません。

質問:どんな手がかりがありますか?私のアプリケーションがフォルダのプロパティを正しく設定しないのはなぜですか?この「一時的な」属性の意味は何ですか?

(システムはUbuntu 12.04です)

ベストアンサー1

t「一時」ではありません。これは、固定ビットがセットされたことを意味します。からman ls

t [表示] 固定ビットがセットされ(モード1000)、検索可能または実行可能です。 (chmod(1)またはSticky(8)を参照してください。)

設定したので固定ビットがここに設定されています少数777(1411年8月)、8進数777(10進数511)。0777代わりに、8進数を使用して作成する必要があります777

modeまた、toパラメータの最終効果にはmkdirumaskとのAND演算も含まれることに注意してください。からman 2 mkdir

パラメーター・パターンは使用する権限を指定します。プロセスのumaskを介して一般的な方法で修正されます。作成されたディレクトリの権限は(mode&〜umask&0777)です。

これが影響を受ける場合は、パターンパラメータを使用しないことをお勧めしますchmodmkdir

最終警告:モード777はほぼ完了しました。いいえあなたが本当にしたいこと。すべてのユーザーにグローバルにディレクトリを開くのではなく、ディレクトリに適切なモードと所有者/グループを設定することをお勧めします。より複雑なルールが必要な場合は、ACLの使用を検討してください。

おすすめ記事