Saya baru-baru ini mengetik perintah
sudo chmod 777 -R /
setelah itu beberapa hal suka
sudo -i
tidak bekerja secara normal. Jadi saya bertanya-tanya apakah ada cara saya bisa mengatur ulang izin folder ke keadaan semula?
Saya baru-baru ini mengetik perintah
sudo chmod 777 -R /
setelah itu beberapa hal suka
sudo -i
tidak bekerja secara normal. Jadi saya bertanya-tanya apakah ada cara saya bisa mengatur ulang izin folder ke keadaan semula?
Jawaban:
Hal ini dimungkinkan untuk kembali dari situasi berantakan ini.
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 instal Fedora lama saya), tetapi menjalankan OS dari CD / DVD, atau kunci USB 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 dan mendapat izin di sana):
find /etc /usr /bin /sbin -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:
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
(...)
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.
Edit:
Selain itu, pemilik pengaturan akan membatalkan bendera SGID dan SUID , yang menyebabkan masalah aneh (Misalnya, Anda tidak akan dapat melakukan sudo kecuali izinnya 4755). Anda harus, dan hanya harus menetapkan izin SETELAH pemilik pengaturan. JANGAN SIMPAN informasi izin file lengkap bersama dengan informasi pemilik.
Rk:
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
Perintah yang tepat (gabungan) lebih seperti:
`/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`
Perhatikan bahwa perawatan tambahan mungkin diperlukan untuk memperhitungkan tanda kurung dalam nama file (di bawah lokal, misalnya) dan bahwa chown dapat secara diam-diam mengeset bit setuid dan setgid yang ditetapkan oleh chmod. Dalam kasus terakhir, yang akan merusak, katakanlah, / bin / su dan / usr / bin / sudo, Anda mungkin perlu menukar urutan klausa exec di atas.
Setelah memulihkan sudo atau memilih mode pemulihan saat boot
Dimungkinkan untuk memulihkan keseluruhan sistem menggunakan debsums yang memverifikasi integritas dan izin file.
dari halaman manual:
apt-get install --reinstall $(dpkg -S $(debsums -c) | cut -d : -f 1 | sort -u)
Instal ulang paket dengan file yang diubah
atau terbatas pada jalur tertentu mis /usr
::
apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/usr ) | cut -d : -f 1 | sort -u)
atau terbatas pada beberapa set path misalnya: /sbin /etc /var
apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/etc -e ^/sbin -e ^/var ) | cut -d : -f 1 | sort -u)
chmod a-x /bin/ping
dan debsums -c
tidak akan melaporkan file itu.
Selalu perhatikan apa yang Anda jalankan sebagai sudo.
Utas ini menjelaskan bahwa Anda dapat secara manual mengatur kembali beberapa izin, dan skrip di sana membantu dengan ini, tapi tetap saja ini pekerjaan besar. Alih-alih mengikuti tip dalam tapak untuk menyimpan paket (tanda) yang diinstal dan menginstal ulang OS, dan menerapkan tanda paket yang disimpan untuk mendapatkan kembali aplikasi Anda.
Sejauh yang saya tahu, hanya paket-paket Sistem V dan RPM yang menawarkan perintah untuk memperbaiki izin file. Pada Sistem V (Solaris) itu adalah pkgchk, dengan RPM adalah rpm - setperma.
Sayangnya, sepertinya tidak ada perintah seperti itu untuk paket Debian / Ubuntu - tapi saya mungkin salah di sini.
Tetapi bahkan dengan bantuan perintah-perintah ini, itu bukanlah tugas sepele untuk mengembalikan sistem Anda ke keadaan waras, dan dengan memperbaikinya, Anda dapat dengan mudah menyebabkan kerusakan baru pada sistem Anda - jika Anda tidak hati-hati.
Selain Joseph berkata, kamu bukan yang pertama, dan kamu tidak akan menjadi yang terakhir untuk memasukkan perintah seperti itu. Tapi idenya sendiri, untuk mengubah izin file ke 777 pada sistem Unix, adalah indikasi kuat bahwa Anda tidak terlalu berpengalaman dengan sistem semacam ini. Yang terbaik yang dapat Anda lakukan dalam situasi ini adalah mencadangkan apa yang Anda perlukan lagi (direktori home, file konfigurasi, file mail?), Dan coba instalasi baru.
Dan Anda harus sangat, sangat berhati-hati, ketika mengembalikan file cadangan yang rusak.
Semoga berhasil!
PS: Saya hanya ingin tahu masalah apa yang ingin diselesaikan?
Anda tidak dapat membatalkan chmod
operasi; setidaknya tidak dalam arti memutar kembali ke pengaturan sebelumnya, yang merupakan situasi yang dibutuhkan. Bisa dibilang, Anda dapat membatalkan chmod
operasi, dengan memasukkan chmod
setiap file dan direktori kembali ke mode aslinya –– tetapi semuanya tidak sama; menentukan mode asli itu sulit (seperti yang dibahas dalam jawaban lain).