GNU/Linux Sistem Klasörlerinin Bozuk İzin/Sahiplik Durumunu Düzeltmek

Bir uygulama çalışmadığında izin durumundan şüpheleniriz. chmod kullanarak izin durumunu değiştirip, uygulamayı her durumda çalışır hale getirmek o an için güzel bir duygu verebilir. Peki işi abartıp tüm sistemin izin durumunu değiştirirsek ne olur?

Beklenildiği gibi herşeyi rahatlıkla yapabileceğiniz bir ortam oluşmaz. Aksine hayaller godmode, hayatlar recoverymode tadında olur.

Bunu(hatalı durumu) başarmak için  sudo chmod -R 755 / komutu girilmeli veya chown -R komutuyla sistem klasör ve dosyalarının sahiplik durumu tamamen değiştirilmelidir. Sonuçta işletim sistemi düzgün çalışmamaya başlar. Bazı durumlarda açılmaz bile çünkü  gui dosyalarının sahipleri de değişmiştir. Sudo ile işlem yapmanız gerektiğinde

sudo: must be setuid root

hatası ile karşılaşır ve işlem yapamazsınız.

Bu durumdan kurtulmanın birden fazla yolu vardır. Bunlardan bir tanesini burada açıklamaya çalışacağım.

Sistemi baştan kurmak da bir yöntemdir fakat mümkün olduğunca az tercih edilmesi gereken bir yöntem olmalıdır. Çünkü tüm ayarlarınızı ve özelleştirmelerinizi baştan yapmak istemezsiniz. Kurulu programları tekrar kurmak sıkıcıdır.

Sorun izin ve sahiplik durumunun bozulmasıdır. Bu nedenle sahiplik durumu bozulmamış bir sistem buluyoruz. Tercihen aynı dağıtım ve versiyonda olsun. Sistemde aşağıdaki komutu çalıştırıyoruz:

sudo find / -not -path /home -printf "%u:%g:%m:%p\0" > /tmp/file.log

Bu komut user, grup ve izin gibi bilgilerin /tmp/file.log dosyasına yazılmasını sağlıyor.

Aşağıdaki script ise bozuk sistemde çalıştırılmalıdır. Bu scripte parametre olarak daha önceki sistemde kaydedilen file.log dosyası geçilmelidir.


#filename:recover.sh
#! /bin/bash
while IFS=: read -r -d '' user group perm file; do
if [[ ! -L "$file" ]]; then
if [ "$user" == "robustsystemuser" ]; then
user='ruinedsystemuser'
fi
if [ "$group" == "robustsystemuser" ]; then
group='ruinedsystemuser'
fi
chown "$user:$group" "$file"
chmod "$perm" "$file"
fi
done < $1

Yukarıdaki script bozuk sistemde aşağıdaki gibi çağrılır:

./recover.sh file.log

Sistem açılamayacak durumda ise bu işlemi, işletim sistemini bir usb üzerinden boot ettirerek yapabilirsiniz. GNU/Linux dağıtımlarının Live usb versiyonları işinizi görecektir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.