Hal ini dimungkinkan untuk kembali dari situasi yang berantakan , tanpa menginstal ulang sistem. Nah, lebih tepatnya menjalankan sistem baru baik dari kunci USB atau dalam Kotak Virutal (atau lebih) jika Anda memiliki sistem dual boot.
Saya menjalankan lagi jenis yang sama pada masalah (beberapa bug dalam skrip yang saya tulis) dan menyelesaikannya, tetapi Anda perlu meminta bantuan beberapa ahli. Berhati-hatilah!
Pertama, situasi saya lebih mudah untuk diselesaikan karena saya memiliki sistem dual boot (ubuntu dan instalasi fedora lama saya), tetapi menjalankan sistem untuk kunci USB (atau mungkin CD / DVD) harus melakukan hal yang sama.
MPOINT = / mount / ubuntu
Pertama saya memasang sistem file saya seperti ini (jangan lupa untuk membuat poin mount): mount / dev / ubuntu / root $ MPOINT mount / dev / ubuntu / home $ MPOINT / home
Kemudian saya menjalankan perintah berikut (masalah saya hanya ada di beberapa direktori kritis) untuk menyalin izin dari sistem yang sedang berjalan ke sistem yang berantakan (sebenarnya, dalam kasus saya, saya menginstal sistem ubuntu di Virtual Box di bawah fedora di bawah fedora dan mendapat izin di sana):
temukan / etc / usr / bin -exec stat --format "chmod% a $ {MPOINT}% n" {} \; > /tmp/restoreperms.sh
Dan kemudian saya menjalankan skrip restoreperms.sh.
Saya bisa boot lagi di ubuntu.
Isi dari restoreperms.sh akan menjadi seperti:
(...)
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
(...)
Saya tidak mengujinya tetapi harus bekerja untuk pemilik dan grup pemilik juga. Sesuatu seperti:
temukan / 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
(...)
Tentu saja, Anda harus berhati-hati di sini, bahwa UID dan GID adalah sama di kedua sistem, tetapi untuk pengguna dan grup yang terkait dengan sistem, ini seharusnya tidak menjadi masalah.
Rk:
Yang penting untuk ini adalah menjaga agar disk instalasi tetap disinkronkan dengan versi yang Anda gunakan, atau setidaknya berfungsi dengan versi ubuntu saat ini. Sekarang, saya memiliki perintah ini di cronjob, berjalan setiap hari (bisa berminggu-minggu) untuk menyimpan informasi itu. Ini akan membuat solusinya lebih mudah di lain waktu tetapi, tentu saja, karena saya memiliki ini sekarang, itu tidak akan pernah terjadi lagi. ;-) Sesuatu seperti ini:
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
EDIT: untuk mendukung tautan, perintah gabungan adalah:
/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {}