Ubuntu'da klasör izinleri varsayılan değerlerine nasıl sıfırlanır?


19

Geçenlerde komutu yazdım

sudo chmod 777 -R /

ondan sonra bazı şeyler

sudo -i

normal çalışmıyor Bu yüzden, klasör izinlerini orijinal durumlarına sıfırlayabilmemin bir yolu olup olmadığını merak ediyorum.


Linux'un önceki izin ayarlarını hatırladığını sanmıyorum. Yeni bir dosya yapmayı deneyin ve hangi izin ayarlarının alındığına bakın.
thecoshman

Bekle, orada ne yaptığını gördüm. Bu muhtemelen yeniden yükleme durumudur. Verilerinizi yedekleyin, hangi uygulamaları yüklediğinizi not alın. İyi eğlenceler, neden 10.4 denemiyorsunuz? (şimdiye kadarki en iyi isim btw ... bu radyo ne anlama geliyor?)
thecoshman

Bu kesin şeyi yapmayan birini bulmaya cüret ediyorum: D çok zor bir durum. düzeltebilirsin, jlovi'nin cevabını dene ama zaman ve çaba harcayacak ve sinir bozucu olacak. Sadece yeniden yükleyin ve üstesinden gelin. Ve ne yaptığınızı bilmiyorsanız asla sudo chmod kullanmayın.
Jack Mayerz

Yanıtlar:


17

Öyle mümkün geri bu pis durumdan gelmek.

Yine aynı konuda konuştum (yazdığım bir komut dosyasında bir hata) ve çözdüm, ancak bazı uzmanlardan yardım istemeniz gerekiyor. Çok dikkatli ol!

Öncelikle, durumumu çözmek daha kolaydı çünkü çift önyükleme sistemim vardı (Ubuntu ve eski Fedora kurulumum), ancak işletim sistemini bir CD / DVD'den veya USB anahtarından çalıştırmak aynı şeyi yapmalıydı.

MPOINT=/mount/ubuntu

İlk önce dosya sistemimi böyle bağladım (bağlama noktaları oluşturmayı unutmayın):

mount /dev/ubuntu/root $MPOINT
mount /dev/ubuntu/home $MPOINT/home

Sonra aşağıdaki komutu koştum (sorunum yalnızca birkaç kritik öneme sahip dizindeydi), çalışan sistemden dağınık olana izinleri kopyalamak için (aslında, benim durumumda, fedora altında Virtual Box'a bir Ubuntu sistemi kurdum) ve orada izinleri var):

find /etc /usr /bin /sbin -exec stat --format "chmod %a \"${MPOINT}%n\"" {} \; > /tmp/restoreperms.sh

Sonra restoreperms.sh betiğini çalıştırdım.

Ubuntu'yu tekrar açmayı başardım.

Restoreperms.sh içeriği şu şekilde olacaktır:

(...)
chmod 755 /mount/ubuntu//etc/ppp
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up
chmod 2750 /mount/ubuntu//etc/ppp/peers
chmod 640 /mount/ubuntu//etc/ppp/peers/provider
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up.d
chmod 777 /mount/ubuntu//etc/ppp/resolv.conf
(...)

Test etmedim ancak sahipler ve sahip grupları için de çalışması gerekiyor. Gibi bir şey:

find /etc /usr /bin -exec stat --format 'chown %U:%G ${MPOINT}%n' {} \; > /tmp/restoreperms.sh^

(...)
chown root:root /mount/ubuntu//etc/obex-data-server/imaging_capabilities.xml
chown root:root /mount/ubuntu//etc/obex-data-server/capability.xml
chown root:dip /mount/ubuntu//etc/ppp
chown root:root /mount/ubuntu//etc/ppp/ipv6-up
chown root:dip /mount/ubuntu//etc/ppp/peers
chown root:dip /mount/ubuntu//etc/ppp/peers/provider
chown root:root /mount/ubuntu//etc/ppp/ipv6-up.d
chown root:root /mount/ubuntu//etc/ppp/resolv.conf
(...)

Elbette, burada dikkat etmeniz gerekir, UID ve GID'nin her iki sistemde de aynı olmasına rağmen, ancak sistemle ilgili kullanıcılar ve gruplar için bu bir sorun olmamalıdır.

Düzenle:

Ayrıca, ayar sahibi SGID ve SUID bayraklarını geçersiz kılar ve bu da garip sorunlara neden olur (Örneğin, izin 4755 olmadığı sürece sudo gerçekleştiremezsiniz). Ayar sahiplerinden SONRA , yalnızca izinleri ayarlamanız gerekir . Sahip bilgilerinin yanı sıra tüm dosya izin bilgilerini KAYDETMEYİN.

Rk:

  1. Bunun için önemli bir şey, kurulum diskini kullandığınız sürümle senkronize tutmak veya en azından geçerli ubuntu sürümüyle çalışmaktır.
  2. Şimdi, bu komutları bir cronjob'da tutuyorum, bu bilgileri saklamak için her gün (haftalar olabilir) çalışıyor. Bir dahaki sefere çözümü daha kolay hale getirecek, ama elbette, şimdi olduğu gibi, bir daha asla olmayacak. ;-) Bunun gibi bir şey:

    0 12 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chmod %a %n" {} \; |/bin/bzip2 -c > /tmp/restore_chmod.$(/bin/date +%w).sh.bz2

    0 13 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chown %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_chown.$(/bin/date +%w).sh.bz2

Right (kombine) komutu daha çok şuna benzer:

`/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {} \; -exec /usr/bin/stat --format="/bin/chown -h %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_fileperms.$(/bin/date +%w).sh.bz2`

Dosya adlarındaki parantezleri hesaba katmak için ek özen gösterilmesi gerekebileceğini unutmayın (örneğin, yerel ayarların altında) ve chown, chmod tarafından belirlenen setuid ve setgid bitlerini sessizce ayarlayabiliyor. / Bin / su ve / usr / bin / sudo kodlarını kıracak son durumda yukarıdaki exec cümlelerinin sırasını değiştirmeniz gerekebilir.


sadece mükemmel bir cevap. Ben işaret içeri doğru Ask Ubuntu
Özel

Sadece benim için mükemmel bir çözüm!

2

Kurtarma sudo sonra veya önyükleme sırasında kurtarma modunu seçtikten sonra

Dosya bütünlüğünü ve izinlerini doğrulayan debsums kullanarak tüm sistemi kurtarmak mümkündür .

man sayfasından:

apt-get install --reinstall $(dpkg -S $(debsums -c) | cut -d : -f 1 | sort -u)

Paketleri değiştirilmiş dosyalarla yeniden yükler

veya belirli bir yolla sınırlı örneğin /usr:

apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/usr ) | cut -d : -f 1 | sort -u)

veya çok sayıda yol ile sınırlandırılmış, örneğin: /sbin /etc /var

apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/etc -e ^/sbin -e ^/var  ) | cut -d : -f 1 | sort -u)

debsums gerçekten izinleri kontrol ediyor mu? Denedim chmod a-x /bin/pingve debsums -cbu dosyayı bildirmedim.
reoks

0

Her zaman sudo olarak kaçtıklarını izle.

Bu iş parçacığı bazı izinleri manuel olarak geri ayarlayabileceğinizi açıklar ve orada bir komut dosyası bunun için yardımcı olur, ancak yine de büyük bir iş. Takılı paketlerinizi (işaretlerini) kaydetmek ve işletim sistemini yeniden yüklemek için sırttaki ipuçlarını yerine getirin ve uygulamalarınızı geri almak için kaydedilen paket işaretlerini uygulayın.


0

Bildiğim kadarıyla, sadece Sistem V paketleri ve RPM'leri dosya izinlerini onarmak için bir komut sunuyor. Sistem V'de (Solaris) pkgchk, RPM'lerde rpm --setperms'dir.

Ne yazık ki, Debian / Ubuntu paketleri için böyle bir komut yok gibi görünüyor - ama burada yanlış olabilirim.

Ancak bu komutların yardımıyla bile, sisteminizi aklı başında bir duruma getirmeniz önemsiz bir iş değildir ve onu düzelterek, sisteminize kolayca yeni zararlar verebilirsiniz - dikkatli olmazsanız.

Joseph’in dediği gibi, ilk değilsiniz ve böyle bir komuta giren son kişi olmayacaksınız. Ancak tek başına fikir, Unix sisteminde dosya izinlerini 777 olarak değiştirmek, bu tür bir sistemde çok deneyimli olmadığınıza dair güçlü bir göstergedir. Bu durumda yapabileceğiniz en iyi şey, tekrar neye ihtiyacınız olacağını (ev dizinleri, yapılandırma dosyaları, posta dosyaları?) Neye ihtiyacınız olduğunu yedeklemektir ve yeni bir yüklemeyi denemektir.

- Hasar görmüş yedek dosyalarınızı geri yüklerken çok, çok dikkatli olmalısınız.

İyi şanslar!

Not: Sadece ne tür bir sorunu çözmek istediğinizi merak ediyorum?


0

Vay, onu öldürdün. Öldü! Giriş yapıp makineyi root olarak kullanmayı deneyin (etkinleştirdiğinizden beri), ardından root grubunun üyeliğini kullanıcılara değiştirin. Bu olabilir veya çalışmayabilir çünkü daha önce hiç denemedim ama denemeye değer.


0

Bir chmodişlemi geri alamazsınız ; en azından bir önceki ayara geri dönme anlamında değil, bu durum tam olarak budur. Muhtemelen, her bir dosyayı ve dizini orijinal moduna geri alarak bir işlemi geri alabilirsiniz –– ama hepsi aynı değildir; orijinal modların belirlenmesi karmaşıktır (diğer cevaplarda tartışıldığı gibi).chmodchmod

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.