自分が所有するファイルの「許可が拒否されましたか?」


13

私のユーザー、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非常に奇妙として際立っています。表示する権限がないファイルがリストされますが、権限は表示されませんか?

質問は、何がこれを引き起こすのでしょうか?そして、私はそれを修復するために何ができますか?

回答:


17
> 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 -ailiノードが同じであるかどうかを確認します。


10

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


>実際にディレクトリxの場合、誰かがそのディレクトリWowに変更できることを意味します。私はそれを忘れ続けています。ありがとう。
yPhil

6

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


約1時間前に、ファイルサーバーの1つでこれを行いました。+1
トーマスデントン

2

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


1
@David Mackintoshに同意します。SELinuxが有効で、ファイル/ディレクトリが他の誰かによって作成され、所有権がbobに変更された場合、これは起こりそうです。ファイルのコンテキストは元の作成者に残り、コンテキストもBobユーザーに変更されるまでアクセスできません。
バイキー2009年

2

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

拡張属性は、「lsattr」によるビューと「chattr」による変更が可能です


1
> 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

ディレクトリの所有権を他の人に変更してから、ボブに戻ってみましたか?ただし、Zoredacheのアドバイスのほうが優れています-ただfsckしてください!


2
このタイプの問題は、常にディレクトリのアクセス許可になります。
-doublejosh

1

より簡潔な回答IMO。

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

修正:

$ sudo chmod +x ./log

再帰的に:

$ sudo chmod -R +x ./log

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

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