Saya tidak sengaja menjalankan perintah berikut pada direktori dll:
sudo chmod -R 700 /etc
Saya tahu bahwa saya telah melakukan sesuatu yang sangat salah. Terminal saya sekarang mencetak:
I have no name!@ubuntu: /$
Bagaimana saya bisa mengembalikan direktori dll saya ke keadaan sebelumnya?
Saya mencoba mengubah izin tetapi gagal sekarang. Juga, akan sangat membantu jika seseorang dapat menjelaskan apa yang sebenarnya salah ketika saya menjalankan perintah itu dll. Itu hanya izin file. Lalu mengapa seluruh sistem tampaknya benar-benar meledak? Mengapa tidak ada kata sandi masuk yang berfungsi sekarang? Saya tahu bahwa ada file di direktori dll yang ada hubungannya dengan pengguna. Tapi bagaimana mengubah izin membahayakan segalanya? Beberapa detail teknis tentang ini akan sangat membantu.
ls -laR
) dari sistem lain yang berjalan. Versi apa milikmu? Anda dapat mengubah direktori menjadi 755 dan dan file menjadi 644, tetapi beberapa harus memiliki mode yang berbeda (seperti / etc / shadow misalnya).sudo
Anda harus membacanya kembali di kepala Anda sebagai "Saya memberikan diri saya kekuatan tertinggi atas sistem saya tanpa jaring pengaman, apakah saya yakin saya tahu apa yang saya lakukan? Apakah saya yakin bahwa saya mengetik apa yang saya maksud?" sebelum menekan kembali.find /etc -type d ! -perm 755 -exec ls -ld {} \;
danfind etc -type f ! -perm -644 -exec ls -l {} \;
menemukan direktori dan file dengan mode non-standar. Di Debian hanya ada 2 direktori dan 39 fileJawaban:
Satu hal yang salah: penggunaan
sudo
dengan perintah itu. The-R
beralih mengatakanchmod
untuk secara rekursif mengatur hak akses ke direktori tersebut, yang, dalam setiap kasus, tindakan non-direkomendasikan (harus kita menyebutnya: bid'ah) jika Anda tidak tahu apa yang Anda lakukan (setelah ini terjadi pada saya, saya tidak mengeluarkan perintah tetapi GUI yang salah membuatnya, dan sistem saya masuk kawat).GNU / Linux sangat sensitif terhadap izin file, karena ini dibangun dengan mempertimbangkan stabilitas dan keamanan . Hal yang sama berlaku untuk sebagian besar program yang berjalan di GNU / Linux (yaitu
apache2
menjatuhkan hak akses root dan menggunakanwww-data
, atau pengguna yang serupa, dan700
izin Anda tidak akan mengizinkannya untuk membaca / menulis file sendiri).Seperti yang sudah Anda sebutkan, kata sandi login disimpan dalam file
/etc/passwd
dan hanya root (saya berasumsi Anda tidak mengubahnya) dapat membacanya, tetapi prompt login (atau login GUI) menggunakan akun non-privilege, sehingga tidak dapat membaca berkas.Sama seperti yang dikatakan di atas, Linux sangat sensitif terhadap izin file. Beberapa program bahkan memeriksa izin file konfigurasi mereka dan jika tidak diharapkan mereka tidak akan berjalan sama sekali.
Jika Anda menggunakan distro berbasis RPM, ini dapat dilakukan menggunakan
rpm --setperms
perintah, itu akan menyakitkan kembali satu per satu paket, pada sistem seperti Debianapt-get --reinstall install
adalah teman Anda. Solusi lain mungkin tersedia, tetapi akan membutuhkan sistem kerja untuk itu.sumber
Mari kita lihat, apa yang telah Anda lakukan adalah mengatur izin di seluruh direktori / etc sebagai read / write / execute hanya diizinkan untuk pemilik file / dir, ditolak untuk semua orang. Jika Anda bingung dengan izin file, Anda dapat membaca lebih lanjut di Wikipedia: izin UNIX tradisional .
Alasan Anda telah meledakkan sistem Anda adalah karena banyak proses tidak dapat membaca pengaturannya lagi, karena tidak dapat mengakses / etc. Tidak akan mudah untuk memulihkan seluruh direktori / etc ke keadaan sebelumnya. Cara melakukannya tergantung pada distro Anda, tetapi pada dasarnya itu berarti menginstal ulang setiap paket yang menyimpan file apa pun di / etc.
Sebagai bantuan pita cepat untuk dapat menggunakan sistem, untuk memperbaikinya dengan benar (menginstal ulang semua paket dengan konten di dalam / etc, seperti yang dinyatakan di atas), Anda dapat melakukan:
Dengan dua baris itu Anda akan menetapkan izin liberal di semua direktori / etc, dengan baca / tulis diizinkan untuk pemilik dan grup, dan baca diizinkan untuk semua orang. Alasan kedua chmod adalah untuk mengatur bit eksekusi hanya pada dir. Beberapa proses akan mengeluh atau gagal, termasuk semua yang dapat dieksekusi di / etc, tetapi Anda harus dapat melakukan instal ulang yang saya uraikan di atas.
Perlu diketahui daripada sampai Anda memulihkan izin asli sistem Anda, paling tidak, dalam keadaan tidak aman.
sumber
/etc/sudoers
adalah yang lain./etc
tidak harus dapat dibaca! Pulihkan dari cadangan, itu sebabnya Anda memilikinya (atau, itulah sebabnya orang mendesak Anda untuk membuat cadangan).700 telah menghapus akses ke banyak file untuk grup dan pengguna dunia (mis. File sekarang memiliki
rwx------
izin). Misalnya, semua pengguna harus dapat membaca/etc/passwd
. Dengan pengaturan Anda, hanya root yang sekarang dapat membaca/etc/passwd
. Banyak hal yang akan rusak jika Anda memutus izin pada file dengan/etc/
cara yang tidak terduga.Anda bisa mencoba dan membangun kembali izin (dengan asumsi Anda masih bisa beralih ke root) berdasarkan server yang berfungsi, tetapi itu cenderung kesalahan.
Saya sarankan memulihkan
/etc/
dari cadangan jika Anda memilikinya (pastikan pengembalian mengembalikan izin, atau, jika solusi cadangan Anda mendukungnya, pulihkan hanya izin).sumber