Dosyaları etkilemeden özyinelemeli chmod dizinleri nasıl uygulanır?


19

chmod -RBir dizine başvurduktan sonra , izinler (dosyalar ve dizinler) içindeki her şey için değiştirilir. xDosyaları değiştirmeden dizinlere execute / search ( ) izinlerini nasıl ekleyebilirim ?

Yanıtlar:


13

Bul komutunu kullanabilirsiniz .

find ./ -type d -execdir chmod 750 {} +

750 uygulamak istediğiniz moddur ve "./" özyinelemeli olarak arayacağınız dizindir.

EDIT : @Gilles sayesinde ve bul (1) , ek güvenlik ve performans için bunu revize ettik.


@Gilles Teşekkürler, Unix araçları hakkında yeni bir şey öğrenmem çok sık değil :-) Bu harika. Ayrıca, şimdi bul belgelerini okurken, bunun yerine gerçekten -execdir kullanılmalıdır.
ewindisch

8

Bu özel durumda kullanabileceğiniz Xyerine xhangi sadece zaten bazı kullanıcı (yani için çalıştırma iznine sahip dizinlere veya dosyalara bitlerini ekler chmod -R +X my_dir).

(Örneğin dosyaları etkilemeden tüm dizinleri okunabilir hale istiyorsa) Genel olarak, yapabilirsin ya kullanılması findile -type dveya zsh (veya bash 4 kullanıyorsanız shopt -s globstar) **/(geçmeden hem topak -Rbayrağı için chmod).


@Gilles: Güzel bir nokta, bunu cevaba ekledim.
sepp2k

1
"sadece bazı kullanıcı için yürütülebilir bit zaten ayarlanmış dizinlere veya dosyalara bit ekler x yerine X kullanın" - Teşekkürler! Bu şeyi çok özledim!
Ivan
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.