2017-05-10 3 views
2
複数のファイル引数を持つ chmodの呼び出しを考える

chmodは指定された順序でFILE ...引数のアクセス権を変更しますか?

$ chmod 0xxx FILE-1 FILE-2 FILE-3 ... 

それらをprcessingの予測可能な順序はありますか?これは、FILE-kFILE-jが関連している場合に重要です。一方が他方のサブディレクトリであるとき。左から右に読むことを反映、これはつまり、私が予想していたものです

$ chmod 0000 d1 d1/d2 
chmod: cannot access `d1/d2': Permission denied 

OK:第二引数名の最初の引数のサブディレクトリ、すなわち、FILE-1d1FILE-2サブディレクトリd1/d2いくつかのディレクトリであること、言います処理の順番がFILE...の場合、d1のアクセス許可が最初にクリアされるため、chmodd1/d2にアクセスします。したがって、次の呼び出しも期待通りに機能します。

$ chmod 0000 d1/d2 d1 

これにより、どちらのディレクトリのアクセス許可もクリアされます。しかし、この順序の依存性は保証されています、そしてもっと一般的には、POSIXはこの問題について何か言いますか? Unixシステム全体の予測可能性に関して、オプション-Rは何らかの理由で推論に影響しますか?

答えて

0

指定されていないが、POSIX(IEEE STD 1003.1から2008、2016年版)はchmodコマンドマニュアルで述べている注意してください、あなたが経験したように、すべての実装が自然にを振る舞うが、保証はありません - アプリケーションの使用状況

を 再帰(-Rオプション)の変更を行うときにはchmodユーティリティの

一部の実装では、ディレクトリ内のファイルの前に ディレクトリのモードを変更します。他の人はディレクトリ内のファイルを の後に変更します。アプリケーションがファイル階層の読み取りまたは 検索許可を削除しようとすると、最初にディレクトリが変更された場合は、削除が失敗します。 一方、ディレクトリが変更された場合、 のアクセス権を制限された階層に再度有効にしようとすると、失敗する が最後になります。ユーザは 自身にアクセスできない階層を作ってはいけません。

したがって、引数の順序は適用できます。順序を保証するために別々のコマンドを使用する必要があります。

1

どこにも指定されていないようです。

しかし、Manual Page for CHMODのアプリケーション使用状況のセクションには、コマンドの再帰的な動作を指定しません。

いくつかの実験の後、私は私のx86_64版のUbuntu 14.04.5 LTSを実行しているGNU/Linux上であなたと同じ結果を得ました。

許可を変更することができない場合は、の右からの権限が正しく機能しているように見えます。

  • 権限を取り消そうとしている場合は、親ディレクトリを最後に持つ方がよいでしょう。 (すなわち、ファイル階層のルートからリーフまで)

  • 権限を付与する場合は、最初に親ディレクトリを作成することをお勧めします。 (すなわち、ファイル階層内のルートからリーフ)

関連する問題