SORU
14 Kasım 2012, ÇARŞAMBA


Chmod yinelemeli olarak

Başkası tarafından arşivlenmiş olan bir arşiv var, ve çıkarılan dosyaları okuma erişim içinde ben indirdikten sonra otomatik olarak dosya sisteminin bir kolu değiştirmek istiyorum. (Arşiv oluşturulur nasıl değiştiremem).

Bu konuyu araştırdım: bazıları, ama hiçbir sevinç chmod: How to recursively add execute permissions only to files which already have execute permission.

Dizinler aslında birden çok ama çok yanlış bayrakları ile gelin gibi görünebilir:

drwx------
d---r-x---
drwxrwxr-x
dr--r-xr--

O sadece şimdiye kadar keşfettiğim en az, ama daha fazla olabilir.

find x - izni olmadan bir dizine bakmaya çalışır hataları ve chmod geçmek bilmiyor. Şimdiye kadar yapmaya çalıştım el ile ana dizin izinlerini değiştirmek, sonra alt dizinlere gidip aynı şeyi onlar için. Ama bu el emeği bir çok şey var. Orada bir şekilde bunu otomatik olarak yapmak için değil mi?

I. e. şimdi ne yapıyorum:

yapın:

$ chmod -R  x
$ chmod -R  r

hata alana kadar, o zaman

$ find -type f -exec chmod -x {}  

Ama daha iyi bir yolu olmalı.

CEVAP
14 Kasım 2012, ÇARŞAMBA


Dizinler yalnızca yürütülebilir bayrağını ayarlamak için X mod harfi (sermaye X) ile chmod kullanabilirsiniz.

Yürütülebilir bayrağı altında örnek temizledi ve sonra da tüm dizinleri özyinelemeli olarak: için ayarlanır

~$ mkdir foo
~$ mkdir foo/bar
~$ mkdir foo/baz
~$ touch foo/x
~$ touch foo/y

~$ chmod -R go-X foo 
~$ ls -l foo
total 8
drwxrw-r-- 2 wq wq 4096 Nov 14 15:31 bar
drwxrw-r-- 2 wq wq 4096 Nov 14 15:31 baz
-rw-rw-r-- 1 wq wq    0 Nov 14 15:31 x
-rw-rw-r-- 1 wq wq    0 Nov 14 15:31 y

~$ chmod -R go X foo 
~$ ls -l foo
total 8
drwxrwxr-x 2 wq wq 4096 Nov 14 15:31 bar
drwxrwxr-x 2 wq wq 4096 Nov 14 15:31 baz
-rw-rw-r-- 1 wq wq    0 Nov 14 15:31 x
-rw-rw-r-- 1 wq wq    0 Nov 14 15:31 y

Açıklaması biraz:

  • chmod -x foo - berrakyürütülebilirfoo bayrak
  • chmod x foo - setyürütülebilirfoo bayrak
  • chmod go x foo - yukarıdaki ile aynı, ama bayrak için ayarlayınGrupveDiğerkullanıcılar, dokunmaKullanıcı(owner) izin
  • Ama sadece dizinler için geçerli yukarıdaki gibi chmod go X foo -, dosyaları dokunma
  • chmod -R go X foo - yukarıdaki ile aynı, ama bunu yapmakÖzyinelemeli olarakfoo tüm alt dizinleri için

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • David MeShow

    David MeShow

    10 EKİM 2006
  • Elly

    Elly

    3 EKİM 2005
  • Stevie

    Stevie

    2 Mayıs 2010