web-dev-qa-db-ja.com

私が所有するファイルへの「アクセスが拒否されました」?

私のユーザーbobは、彼(理論的には所有)のファイルにアクセスできません。私はFedora Core 8を実行しています。

> ls -al .
total 32
drwxrwxr-x 7 bob bob 4096 May 18 14:33 .
drwxrwxr-x 4 bob bob 4096 May 12 15:44 ..
drwxr-xr-x 2 bob bob 4096 June 1 14:22 log

> cd ./log
-bash: cd: log/: Permission denied

> ls -al ./log
ls: cannot access log/..: Permission denied
ls: cannot access log/the.log: Permission denied
ls: cannot access log/.: Permission denied
total 0
d????????? ? ? ? ?            ? .
d????????? ? ? ? ?            ? ..
-????????? ? ? ? ?            ? the.log

> Sudo ls -al ./log
drw-rw-r-- 3 bob bob      4096 Jun  2 04:11 .
drwxrwxr-x 7 bob bob      4096 May 18 14:33 ..
-rw-rw-r-- 1 bob bob         0 Jun  1 04:12 the.log

ls -alは非常に奇妙に際立っています。表示する権限がないファイルが一覧表示されますが、権限は表示されませんか?

だから問題は、何が原因でしょうか?それを修復するにはどうすればよいですか?

13
Gordon Wilson
> Sudo ls -al ./log
...
drw-rw-r-- 3 bob bob      4096 Jun  2 04:11 .

ボブは./logの実行権限を持っているようではないので、cdを実行できません。

だが

> ls -al .
...
drwxr-xr-x 2 bob bob 4096 June 1 14:22 log

彼がそうしていることを示しています。しかし、同じファイルを指しているようには見えません(異なるアクセス許可、異なるmodtime)。

Sudo ls -ail ./logls -ailを試して、iノードが同じかどうかを確認します。

18
CoverosGene

ファイルシステムの破損やselinuxよりも簡単です。ご覧のとおり、ログディレクトリに対するx(実行可能)権限がありません。実際にはディレクトリxは、誰かがそのディレクトリに変更できることを意味します。そのパーマを修正するために「chmod + xログ」を実行するだけで、それにアクセスできるはずです。

10
user7643

私は、ファイルシステムが破損している場合、またはドライブに障害が発生している場合に、そのようなことを見てきました。修正は通常、ファイルシステムに対して fsck を実行し、見つかったエラーを修正することです。

6
Zoredache

ファイルには、不変の属性が設定されているか、拡張属性セットのみが追加されています。以前にこれが発生したことがあり、rootでさえファイルを削除できませんでした。

拡張属性は、「lsattr」を介してビューにすることも、「chattr」を介して変更することもできます

2
Haakon

また、SE/Linux設定を確認してください。場合によっては、ファイルへのアクセス許可が、アクセスできるかどうかに関係しません。

2
> Sudo ls -al ./log
drw-rw-r-- 3 bob bob 4096 Jun 2 04:11。

理由はわかりませんが、「。」 ./log/のエントリに実行権限がありません。権限は./logの権限と同じである必要があります。

Chmod 755 ./logとchmod 755 ./log/を試してください。そして、どちらかのコマンドがアクセスを修正するかどうかを確認しますか?

それ以外は、ファイルシステム上でfsckを実行することをお勧めします。同期していないように見えるからです。

1

ディレクトリの所有権を他の誰かに変更してから、Bobに戻してみましたか?ただし、Zoredacheのアドバイスの方が優れています。

1
RainyRat

より簡潔な回答IMO。

cdで必要な実行権限がディレクトリにありません。

修正:

$ Sudo chmod +x ./log

再帰的に:

$ Sudo chmod -R +x ./log

+ xは実行可能属性を追加しています。 -xを実行すると、いつでも属性を削除できます

1
Justin Fortier