chmod 644でディレクトリにアクセスできなくなるのはなぜですか?


8

さまざまなアクセス許可が混在する多数のメディアファイル(644である必要がある)があります。一部はグループまたはグローバルで書き込み可能だったので、念のため、すべて644に戻します。

問題は、ディレクトリ階層があり、これでキャッチされたすべてのディレクトリについて、次のようにls -l表示されることです。

d????????? ? ? ? ?            ? Dirname

それを744にchmodすると、修正されます。

私の質問は:ここで何が起こっているのですか?ディレクトリは実行可能である必要がありますか?

回答:


7

chmodパーミッションに関するマンページに記載されているように:

rwxXstの文字は、影響を受けるユーザーのファイルモードビットを選択します。読み取り(r)、書き込み(w)、実行(またはディレクトリの検索)(x)、ファイルがディレクトリであるか、一部のファイルに対してすでに実行権限がある場合のみ実行/検索ユーザー(X)

フォルダの実行可能ビットは、「検索」権限として上記で説明されています。つまり、実行ビットを使用すると、ファイルブラウザでフォルダにアクセスしたり、cdコマンドを実行ls ~/folderしたり、フォルダ内のファイルを一覧表示したりして、ターミナルからフォルダに移動したりできます。

フォルダーは所有者に対して実行可能である必要がありますが、スーパーユーザーはsudo、ファイルやディレクトリを使用する場合と同様に、アクセスまたは削除できるため、フォルダーにアクセスできます。さらに、ディレクトリとファイルの権限については、Stackoverflowのこの便利な記事で詳しく説明しています

また、フォルダーを「実行」しても、実行可能バイナリやスクリプトの実行時など、実際にコードやコマンドが実行されているとは限らないことにも注意してください。

ホームデスクトップユーザーの場合(サーバーではないかもしれませんが)内のほとんどのフォルダーに$HOMEは、ユーザー、グループ、およびその他のユーザーに対して表示される実行許可が設定されていますstat ~/myfolder(以下の抜粋)。

Access: (0755/drwxr-xr-x)  Uid: ( 1000/    mike)   Gid: ( 1000/    mike)

フォルダの標準的な権限 内の $HOMEは755または775で、ファイルは644です。ただし、残りのファイルシステムは異なります。この場合も、フォルダには所有者の実行ビットが必要です。そうしないと、所有者がフォルダを開くことができなくなります。chmodアクセス許可を変更するときは、特に状況がすぐにめちゃくちゃになる可能性があるため、再帰的に変更するときは注意が必要です。

詳細については、オンラインman chmodまたはUbuntuのマンページ、およびスーパーユーザーのこの記事を参照しください


0

ディレクトリxを開くには、ビットセット(そのビットが検索ビットと見なされるディレクトリ)が必要です。多くの人chmod -Rは、フォルダー全体で実行可能ビットを削除すると、アクセスできなくなることに気づきます。これを修正するtreeには、フォルダーセットのみを取得し、すべてのファイルを実行可能ファイルとして設定するという悪夢を回避できるように使用します(ツリーのオプションはです -d List directories only.)。

sudo tree -faid dirname | xargs -L1 -I{} sudo chmod +x "{}"

あなたが持っていない場合tree

find  dirname -type d -exec chmod +x {} 

警告!!!あなたはこれを考慮に入れるべきです:

  • ルート/ディレクトリまたはシステムディレクトリで再帰的にchmodまたはchownを使用すると、OSが破壊されます(実際には、/ディレクトリまたはシステムディレクトリで再帰的に行うと危険です)。

  • これは、そのような権限の一括を設定するための良いセキュリティ慣行ではありません


@Melebius Okありがとう、私たちは理解に至ってうれしい
Eduard Florinescu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.