Dizinin izinlerini değiştirirken neden soru işareti karakterleri görünüyor?


33

Başlangıç ​​izinleri geçici olan klasörün izinlerini geçici olarak değiştirmeye çalışıyorum.

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

takip eden bir şeye

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

İzinleri değiştirdikten sonra her yerde soru işaretleri olduğunu fark edeceksiniz. Bu neden oluyor? Temel olarak, squid-deb-proxy sunucusunun istemciden istek alıp almadığını görmek için erişim günlüğünü okumak istiyorum.

Yanıtlar:


38

Bir dizinin izinlerini görüntülemek için -dbayrağa şu şekilde geçmeniz gerekir ls:

ls -ld squid3

Bir dosyayı okumak için okuma izninin ayarlanması gerekir. Ancak, bir dizini ve dosyalarının listesini okumak için hem okuma hem de çalıştırma izinlerinin ayarlanması gerekir . Olmazlarsa, yaşadıklarınız gibi garip hatalar elde edersiniz.

Dosyalar üzerindeki okuma iznini ve dizinlerdeki okuma ve yürütme izinlerini art arda ayarlamak için bu komutu kullanın:

chmod -R a+rX directoryname

İşte bu komutun bir açıklaması:

  • chmod komutun adıdır, dosyaların izinlerini değiştirmek için kullanın.
  • -Rözyinelemeli bayraktır. Bu komutu dizine ve tüm çocuklarına ve çocuklarına vb. Uygulamak anlamına gelir.
  • a kısaltması: Bu izinleri dosyanın sahibini, dosyanın grubunu sahibi ve diğer tüm kullanıcıları uygula.
  • + önceden ayarlanmamışlarsa aşağıdaki izinleri eklemek anlamına gelir.
  • r okuma izni anlamına gelir.
  • Xyürütme izni anlamına gelir, ancak yalnızca dizinlerde. Küçük harf x, hem dosyalarda hem de dizinlerde yürütme izni anlamına gelir.

Daha fazla bilgi komutun man sayfasında bulunurchmodManpage simgesi .


1
kullanarak yanlış bir şey var mıchmod -R 644 squid*
Kayıtlı Kullanıcı

4
@ Kayıtlı Kullanıcı: evet. 644, rw-r--r--dosyalar için uygundur, ancak dizinler için uygun değildir. Dizinlerin yürütme izninin de bu şekilde ayarlanması gerekir: rwxr-xr-xveya 755. Bahsettiğiniz komut, tüm dosya ve dizinlerde yürütme iznini yinelemeli olarak değiştirerek bu hatalara neden olur.
Flimm

3

Bende de bu problem vardı. Chmod yapamadım ya da dosyada boğulmadım. Silmeyi denemiştim. Silmeye çalışmanın (rm komutu) soruna yol açtığı ortaya çıktı. Toplayıcı, dosyanın iki farklı sistem arasında paylaşılmasıdır . Dosyayı diğer sistemde kapattığımda dosya kayboldu. İşte benim konfigürasyonumun detayları. sistem 1: Ubuntu konuk VM. Burası rm komutunu yaptım. sistem 2: Windows 7 ana bilgisayarı. Dosyayı daha az komut kullanarak açtığım yer (cygwin'de, mutlaka alakalı olması değil).


2

Amacınızın okumak olduğunu belirttiğiniz gibi /var/log/squid/access.log, en iyi çözümünüz sudo less /var/log/squid/access.logtekrar tekrar chmodding sorununu gideren tür yazmaktır.

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.