chmodを使用せずにファイル権限を変更するには?

chmodを使用せずにファイル権限を変更するには?

私たちの大学では、私たちにUnixの課題を与えました。

222新しく作成されたファイルの権限を無効にする必要がありますchmod

ファイル権限を「222」に減らす[chmodコマンドを使用しないでください]:

個人的にRubyを使用できます。

ruby -e "File.chmod(0222, File.join(Dir.pwd, 'F2'))"

ただし、このタイプのソリューションは許可されない場合があります。

また、ここに質問があります。 /usr/bin/chmodなしでchmodを実行する方法は?

しかし、答えは少し異なります。彼らは削除されたchmodバイナリを回復することについて議論しています。

なしでファイルの権限を変更する方法はchmod

答え1

あなたの仕様が明示的に新しく作成されたファイルchmod新しいファイルを使用する前に作成すると、新しいファイルに一連の権限が付与されるため、変更することはできませんchmod

さらに、Rubyスクリプトはchmodコマンド/ユーティリティを実行しませんが、同じ基本システムコールを使用するため、事実上同じです。国ならこんなことが起こるようにしておかなかっただろう。

完全な回答を提供せずに何を調べることをお勧めしますマニュアルページopen()作成したファイルの権限に関する注意事項:

モードパラメータは、新しいファイルを作成するときに適用するファイルモードビットを指定します。このパラメーターは、フラグにまたはが指定されている場合はO_CREAT必須です。O_TMPFILEあるいは、両方をO_CREAT 指定しない場合、O_TMPFILEパターンは無視されます。有効モードは、通常の方法でプロセスのumaskによって変更されます。デフォルトのACLがない場合、生成されたファイルのモードは後で新しく生成されたファイルへの読み取り専用呼び出し(mode & ~umask)にのみ適用されます。open()ファイルの可能性が高いです。読み取り/書き込みファイル記述子を返します。

パターンには次の記号定数が与えられます。

S_IRWXU 00700ユーザー(ファイル所有者)に読み取り、書き込み、および実行権限があります。

[など。 ]

また、引用したセクションに「権限の減少」と記載されています。渡す222"、いいえ到着222.これは私が検討している機能にも重要です。

コメントに言及されているので

umask新しく作成されたファイルに対する権限を制限すると思います。これは標準的な機能でなければならず、LinuxとDragonFlyで同じようにうまく機能するはずです。

もちろん、これはすべて課題の私の解釈です。ここにいる私たちのどれも、あなたの教師/教授が正しい答えだと思うものが何であるかを確実に伝える方法はありません。特に時々教授が提供した答えが正解ではないかもしれないからです。

関連情報