web-dev-qa-db-ja.com

ディレクトリの権限を変更するときに疑問符が表示されるのはなぜですか?

初期権限が一時的にあるフォルダの権限を一時的に変更しようとしています

user@ubuntu:/var/log$ ls -l squid*
squid3:
total 4
-rw-r----- 1 proxy proxy    0 Jan 16 14:43 access.log
-rw-r----- 1 proxy proxy 1359 Jan 16 14:43 cache.log
ls: cannot open directory squid-deb-proxy: Permission denied

次のことへ

user@ubuntu:/var/log$ Sudo chmod -R 644 squid*
user@ubuntu:/var/log$ ls -l squid*
squid3:
ls: cannot access squid3/cache.log: Permission denied
ls: cannot access squid3/access.log: Permission denied
total 0
-????????? ? ? ? ?            ? access.log
-????????? ? ? ? ?            ? cache.log

squid-deb-proxy:
ls: cannot access squid-deb-proxy/store.log: Permission denied
ls: cannot access squid-deb-proxy/cache.log: Permission denied
ls: cannot access squid-deb-proxy/access.log: Permission denied
total 0
-????????? ? ? ? ?            ? access.log
-????????? ? ? ? ?            ? cache.log
-????????? ? ? ? ?            ? store.log

アクセス許可を変更すると、どこにでも疑問符が表示されます。なぜこうなった?基本的に、アクセスログを読んで、squid-deb-proxyサーバーがクライアントからリクエストを取得しているかどうかを確認します。

31
Registered User

ディレクトリの権限を表示するには、次のように-dフラグをlsに渡す必要があります。

ls -ld squid3

ファイルを読み取るには、その読み取り許可を設定する必要があります。ただし、ディレクトリとそのファイルのリストを読み取るには、読み取り権限と実行権限の両方を設定する必要があります。そうでない場合は、発生しているような奇妙なエラーが発生します。

ファイルの読み取り権限とディレクトリの読み取りおよび実行権限を再帰的に設定するには、次のコマンドを使用します。

chmod -R a+rX directoryname

そのコマンドの説明は次のとおりです。

  • chmodはコマンドの名前で、ファイルの許可を変更するために使用します。
  • -Rは再帰フラグです。つまり、このコマンドをディレクトリ、そのすべての子、およびその子の子などに適用します。
  • aはすべてを表します。これらの権限をファイルの所有者、ファイルのグループ所有者、および他のすべてのユーザーに適用します。
  • +は、次の権限がまだ設定されていない場合に追加することを意味します。
  • rは読み取り許可を意味します。
  • Xは実行権限を意味しますが、ディレクトリに対してのみです。小文字のxは、ファイルとディレクトリの両方に対する実行権限を意味します。

詳細は chmodコマンドのマンページにあります Manpage icon

37
Flimm

私もこの問題を抱えていました。ファイルに対してchmodまたはchownを実行できませんでした。私はそれを削除しようとしました。削除しようとすると(rmコマンド)問題が発生したことがわかりました。キッカーは、ファイルは2つの異なるシステム間で共有されますです。 一度他のシステムでファイルを閉じると、ファイルは消えました。ここに私の設定の詳細があります。システム1:UbuntuゲストVM。ここで、rmコマンドを実行しました。システム2:Windows 7ホスト。これは、lessコマンドを使用してファイルを開いた場所です(cygwinでは、必ずしも関連するわけではありません)。

3
Alan

目標は/var/log/squid/access.logを読むことであると述べたように、最善の解決策はSudo less /var/log/squid/access.logと入力することです。

2
guntbert