2015-04-15 22 views
5

Bir junior ekip üyesi numaralı telefondan chmod -R 777 nolu bir hata yaptı ve SSH bir Ubuntu sunucusunda uzaktan oturum açamaz. Şimdi bu giriş sorununu diğer normal sistemi karşılaştırarak doğru dosya izinlerini /etc/ssh/*, /etc/sudoers, /etc/ssl/*'da elle ayarlayarak düzelttim. Ancak gelecekteki sorunlara neden olabilecek pek çok dosya var.Senkronizasyon dosya izinleri * yalnızca *

İşi yapmak için rsync kullanmayı düşünüyorum, ancak dosya içeriğini, yalnızca izinleri, artık çalışmayı eşitlemesini istemiyorum.

Bu mümkün mü? Rsync'in -a seçeneğine sahip olduğunu görüyorum ama çok fazla şey yapıyor.

+0

Ne istiyorsun ama rsync ile değil, korkarım. – 4ae1e1

+0

Cevapladığınız için teşekkürler, peki bu ne? Diğer araçlar için açığım. – kyrre

+0

Eh, bir sistemdeki dosya özniteliklerini okumak ve öznitelikleri diğerine ayarlamak için bir komut dosyası yazabilirsiniz. Hiçbir şey büyülü değil. – 4ae1e1

cevap

8

aynı sistemde kullanılabilir/vs "normal" içerik varsa (diğer bazı dizinde monte gibi, en /mnt/correct/etc diyelim), sen chmod ve chown komutlara --reference parametresini kullanın ve find ile birleştirmek olabilir o "normal" dizinden başlatılır:

$ cd /mnt/correct/etc 
$ find . ! -type l -exec chown -v --reference='{}' /etc/'{}' \; 
$ find . ! -type l -exec chmod -v --reference='{}' /etc/'{}' \; 

(sana chmod ve chown komutunun GNU coreutils sürümleri ile bir UNIX sisteminde farzederek söylüyorum.)

"! -type l" koşulyılındasembolik bağları içermez, çünkü aksi halde chmod, bağlantı noktalarını (chown için geçerli olan) değiştirmek için bağlantı izinlerini kullanır.

+0

Çok iyi çalışıyor ama ben sadece 'chmod' yapmadan 'chown' chown '' chown '' setuid/setgid bitlerini temizleyeceğinden bahsetmek istedim. –