Sahip olduğum bir dosyaya 'izin verilmedi'?


13

Kullanıcım bob, teorik olarak sahip olduğu dosyalara erişemiyor. Fedora Core 8 kullanıyorum.

> 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Çok garip olarak öne çıkmaktadır. Görme iznim olmayan dosyaları listeleyecek, ancak bana izinleri göstermeyecek mi?

Yani sorular, buna ne sebep olur? Ve onu onarmak için ne yapabilirim?

Yanıtlar:


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

Bob'un ./log için izinleri olduğu gibi görünmüyor, bu yüzden yapamıyor cd.

Fakat

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

gösterir. Ancak aynı dosyayı (farklı izinler, farklı mod zamanı) işaret ediyor gibi görünmüyor.

Deneyin sudo ls -ail ./logve ls -ailinode aynı olup olmadığını görmek için.


10

İşler dosya sistemi bozulmasından veya selinux'dan daha basit. Gördüğünüz gibi, günlük dizinindeki x (yürütülebilir) iznini kaçırıyorsunuz. Aslında x dizinleri için, birisinin o dizine geçebileceği anlamına gelir. Bu izni düzeltmek için sadece bir "chmod + x log" yapın ve ona erişebilmeniz gerekir.


> Aslında x dizinleri için, birisinin o Wow dizinine geçebileceği anlamına gelir. Bunu unutmaya devam ediyorum; Teşekkürler.
yPhil

6

Dosya sistemi bozulduğunda veya başarısız bir sürücünüz varsa böyle şeyler gördüm. Düzeltme genellikle fsck'i dosya sistemine karşı çalıştırmak ve bulduğu hataları düzeltmesine izin vermektir.


Bunu yaklaşık bir saat önce dosya sunucularımdan birinde yaptım. +1
Thomas Denton

2

Ayrıca, SE / Linux ayarlarını kontrol edin. Bazen dosyadaki izinlerin, dosyaya erişip erişemeyeceğinizle ilgisi yoktur.


1
@David Mackintosh ile katılıyorum. SELinux etkinse ve dosyalar / dizinler başka biri tarafından oluşturulduysa ve ardından sahipliği bob olarak değiştirdiyse, bunun olması muhtemeldir. çünkü dosyaların bağlamı orijinal yazarda kalır ve bağlam Bob kullanıcısı olarak değiştirilinceye kadar erişilemez.
Viky

2

Dosyalar değiştirilemez veya yalnızca ek öznitelikler ayarlanmış olabilir. Bu daha önce oldu ve kök bile dosyayı silebilir.

Genişletilmiş öznitelikler "lsattr" üzerinden görüntülenebilir ve "chattr" ile değiştirilebilir


1
> sudo ls -al ./log
drw-rw-r-- 3 bob bob 4096 2 Haziran 04:11.

Neden olduğundan emin değilim "." ./log/ girişinin yürütme izinleri yok. İzinlerin ./log izinleriyle aynı olması gerekir.

Chmod 755 ./log ve chmod 755 ./log/ deneyebilir misiniz? ve her iki komutun da erişimi düzeltip düzeltmediğine bakın.

Bunun dışında, dosya sistemi üzerinde bir fsck çalıştırmanızı öneririm, çünkü senkronize değil gibi görünüyor.


1

Dizinin sahipliğini başka birine değiştirmeyi denediniz mi, sonra Bob'a geri döndünüz mü? Zoredache'nin tavsiyesi daha iyi olsa da, sadece fsck!


2
Bu tür sorunlar her zaman dizin izinleri olur.
doublejosh

1

Daha özlü bir cevap IMO.

Dizininiz cd için gerekli olan yürütülebilir izinlere sahip değil .

Düzeltme:

$ sudo chmod +x ./log

Tekrarlı:

$ sudo chmod -R +x ./log

+ x yürütülebilir özniteliği ekliyor. Özniteliği her zaman -x yaparak kaldırabilirsiniz

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.