NTFSドライブにバックアップを作成しましたが、このバックアップは本当に必要であることがわかりました。ただし、NTFSドライブはアクセス許可をめちゃくちゃにしました。すべてのファイルを手動で修正せずに通常の状態に戻したいのですが。
1つの問題は、私のすべてのテキストファイルが突然実行権限を取得したことです。これは間違っています。だから私は試しました:
Sudo chmod -R a-x folder\ with\ restored\ backup/
しかし、ディレクトリからx
権限も削除して読み取り不能にするため、これは誤りです。
この場合の正しいコマンドは何ですか?
すべてのフォルダの全員に実行権限を設定することに問題がない場合:
chmod -R -x+X *
-x
は、すべての実行権限を削除します+X
は、すべてに実行権限を追加しますが、ディレクトリにはonlyを追加します。
find
を使用して、要求どおりにフォルダーを実際に操作しないソリューションについては、以下を参照してください。
さて、私はMac OS X、BSD、およびLinuxの「chmod」のマニュアルページを再度読み、いくつかの実験を行いました。ここでは、シンボリックモードについて学びました。複雑になる可能性がありますが、理解する価値があります。
したがって、たとえば、a+x
は、誰でもファイルを実行できるようにします。 a+X
は、ファイルが誰でも実行可能であった場合に、誰でも実行可能にする。
a+x
は、ディレクトリを誰でも検索できるようにします。 a+X
は、ディレクトリを誰でも検索できるようにします。
BSDとLinuxの主な違いは、BSDでは、ファイルの権限に基づいて決定が行われるということですbefore chmodが実行されました。 Linuxでは、+ X句が実行される直前に決定が行われます。
したがって、BSDの場合、a-x,a+X
の組み合わせは実行/検索権限を削除し、ディレクトリを全員が検索できるようにし、ファイルを全員が実行できるようにしますifそれはもともと誰でも実行可能でした。
Linuxでは、a-x,a+X
は実行/検索権限を削除してから、誰もが実行可能なファイルを残しながら、誰でもディレクトリを検索できるようにします。
具体的な例を次に示します。BSDマシンの場合:ディレクトリ、実行可能ファイル、および非実行可能ファイル:
drwxr-x--- 2 falk staff 68 Jul 19 18:01 fee/
-rwxr-x--- 1 falk staff 0 Jul 19 18:01 fie*
-rw-r----- 1 falk staff 0 Jul 19 18:01 foe
ディレクトリと「fie」の両方がユーザーによって実行可能/検索可能であるが、他のユーザーは実行できないことを確認します。
次に、chmod a-x,a+X *
を実行します。最初の句は、すべてのファイルのすべてのユーザーから実行/検索ビットを取り除きますが、2番目の句は、「fee」と「fie」の両方にそれを追加します。 「fee」はディレクトリであるため、「fie」は最初に実行可能なビットが少なくとも1つあるためです。
drwxr-x--x 2 falk staff 68 Jul 19 18:01 fee/
-rwxr-x--x 1 falk staff 0 Jul 19 18:01 fie*
-rw-r----- 1 falk staff 0 Jul 19 18:01 foe
chmod -x+X
を実行しても同じ結果が得られました。
結論:Jak GibbのソリューションはLinuxでも機能しますが、BSDの場合、2つのパスを作成する必要があります。
私はこれをSVr4や他のUnixバリアントでテストしていません。
それを行う1つの方法:
find backup -type f -exec chmod 0644 {} +
find backup ! -type l ! -type d -exec chmod a-x {} +
タイプディレクトリ(要求どおり)またはシンボリックリンク(通常、シンボリックリンクは常にrwxrwxrwxであり、chmod
が影響するそれらのシンボリックリンクのターゲット)。
ご了承ください:
find backup -type f -exec chmod a-x {} +
regularファイルの権限のみを変更します。 directoriesおよびsymlinksだけでなく、devices、名前付きパイプ、socketsも除外されますシステムに応じてその他の可能性があります(OPのNTFSファイルシステムのバックアップの場合は、存在しない可能性があります)。
Zshでは、 glob qualifier.
を使用して通常のファイル(シンボリックリンクを含まない)のみを照合し、D
を使用してドットファイルを照合します。
Sudo chmod a-x folder\ with\ restored\ backup/**/*(D.)
コマンドラインが長すぎる場合は、 zargs
を使用できます。
zargs -- folder\ with\ restored\ backup/**/*(D.) -- Sudo chmod a-x