Linux'ta gizli dosyaları chmod ve chown nasıl?


33

Nasıl yinelemeli yürütmek do chmodveya chowngizli dosyalar için?

sudo chmod -R 775 * Gizli dosyalar üzerinde çalışmaz.

Aynı şey için de geçerli sudo chown -R user:group.

Yanıtlar:


35

Ayrıca, geçerli dizini de temizlemeniz yeterliyse, -Rbunu yapın ve ağır kaldırma işlemini yapın. -Rgizli dosyaları görmezden gelmez.

sudo chmod -R 775 .

14
Bu ( * .*) bunu yapmanın en güvenli yolu değildir. Özellikle, ana dizine tekrar girer, bu chmodda geçerli dizinin kardeşleri anlamına gelir . Doğru yol, * ..?* .[^.]*veya daha da iyi olurdu (joker karakterlerin hiçbir dosyayla eşleşmeyebileceğini düşünüyoruz) $(ls -A).
jpalecek

1
@jpalecek: çıktısı lsalınamaz; ayrıştırmaya çalışıyorum sorun istiyor. Doğru yaklaşım, kabuk toplamanın kullanılmasıdır.
Scott Severance,

Linux'ta chmod için argların sırasını değiştirebilme yeteneğine sahip olsanız da, linux ve OS X arasında x-plat komut dosyaları kullanırken, bu, kullanmanız gereken sıra, örneğin, sudo chmod 775 -Ryukarı yuvarlanmak, bu yüzden bu cevaba sadık kalmak. .
kayleeFrye_onDeck

35

* varsayılan olarak gizli dosyaları içermez, ancak bash iseniz, bunu ile yapabilirsiniz:

shopt -s dotglob

Bash builtinel kitabında bu konuda daha fazla bilgi edinin :

Ayarlanırsa, Bash `` ile başlayan dosya adlarını içerir. dosya adı genişletme sonuçlarında.

Bu da *gizli dosyaları içerecektir.

chmod -R 775 *

Şununla devre dışı bırak:

shopt -u dotglob

2
Bunu nasıl yapacaksın zsh?
özel bir şey-burada

2
Sen kullanmak (D)globbing eleme, örneğinchmod -R 775 *(D)
slhck

2

Başka bir seçenek de onu kullanmaktır find, çünkü üzerinde çok ince taneli kontrole sahip olabilirsiniz.

find <path to start from> -exec chown <options> {} \+

find -path '<path to include>' -exec chown <options> {} \+

Tek dezavantajı, findfarklı sürümlerde farklı sözdizimi olmasıdır.


2

Geçerli dosyalardaki tüm dosyalar, gizli dosyalar dahil, tekrar tekrar kullanılır:

chmod 755 -R ./* ./.[!.]*

Geçerli dosyalardaki tüm dosyalar , gizli dosyalar dahil , tekrarlı bir şekilde değil :

chmod 755 ./* ./.[!.]*

Bu, örneğin 2 noktadan başlayan bir istisna dosya adını değiştirmez. "./..thisonescapesunharmed.txt"

Ayrıca, "x" bitini çıkarmamaya dikkat edin, aksi halde tüm dizinlerinize erişilemez (biri x bit'in bir dizine cdlenmesi gerekir).

Bu uyarıyı hatırlayın: çıplak kullanmak asla *ama ./*bunun yerine.

Dizinlerde izinleri ayarlama sorunlarını önlemek için, findyerine kullanın.

find . -type f -exec chmod `VALUE` {} \;
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.