GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana saya bisa mengembalikan chmod pada direktori dll?

Satu hal yang salah:penggunaan sudo dengan perintah itu. -R sakelar memberi tahu chmod untuk secara rekursif mengatur izin ke direktori itu, yang, dalam setiap kasus, merupakan tindakan yang tidak disarankan (haruskah kita menyebutnya:bid'ah) jika Anda tidak tahu apa yang Anda lakukan (setelah ini terjadi pada saya, saya tidak keluarkan perintah tetapi GUI yang salah membuatnya, dan sistem saya terhubung).

Itu hanya izin file. Lalu mengapa seluruh sistem tampaknya benar-benar meledak?

GNU/Linux sangat sensitif terhadap izin file, karena dibangun dengan stabilitas dan keamanan dalam pikiran. Hal yang sama berlaku untuk sebagian besar program yang dijalankan di GNU/Linux (mis. apache2 melepaskan hak akses root dan menggunakan www-data , atau pengguna serupa, dan 700 Anda izin tidak akan mengizinkannya untuk membaca/menulis filenya sendiri).

Mengapa tidak ada kata sandi masuk yang berfungsi sekarang?

Seperti yang telah Anda sebutkan, kata sandi login disimpan dalam file di /etc/passwd dan hanya root (saya asumsikan Anda tidak mengubahnya) yang dapat membacanya, tetapi prompt login (atau login GUI) menggunakan akun non-hak istimewa, sehingga file tidak dapat dibaca.

Namun, bagaimana perubahan izin membahayakan segalanya?

Sama seperti yang dikatakan di atas, Linux sangat sensitif terhadap izin file. Beberapa program bahkan memeriksa izin file konfigurasinya dan jika tidak diharapkan, program tersebut tidak akan berjalan sama sekali.

Bagaimana cara mengembalikan direktori etc ke keadaan sebelumnya?

Jika Anda menggunakan distro berbasis RPM, ini dapat dilakukan dengan menggunakan rpm --setperms perintah, itu akan menyakitkan mengembalikan satu per satu paket, pada sistem seperti Debian apt-get --reinstall install adalah temanmu. Solusi lain mungkin tersedia, tetapi membutuhkan sistem kerja untuk itu.


Mari kita lihat, apa yang telah Anda lakukan adalah mengatur izin di seluruh /etc dir sebagai read/write/execute yang diizinkan hanya untuk pemilik file/dir, ditolak untuk orang lain. Jika Anda bingung dengan izin file, Anda dapat membaca lebih lanjut di Wikipedia:Izin UNIX tradisional.

Alasan Anda meledakkan sistem Anda adalah karena banyak proses tidak dapat lagi membaca pengaturannya, tidak dapat mengakses /etc. Tidak 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 dalam /etc.

Sebagai bantuan band cepat untuk dapat menggunakan sistem, untuk memperbaikinya dengan benar (menginstal ulang semua paket dengan konten di dalam /etc, seperti yang disebutkan di atas), Anda dapat melakukan:

    # sudo find /etc -type d -exec chmod 775 '{}' \;
    # sudo find /etc -type f -exec chmod 664 '{}' \;

Dengan dua baris itu Anda akan mengatur izin liberal di semua /etc dir, dengan baca/tulis diizinkan untuk pemilik dan grup, dan baca diizinkan untuk semua orang. Alasan kedua chmod adalah untuk mengatur bit eksekusi hanya pada direktori. Beberapa proses akan mengeluh atau gagal meskipun demikian, termasuk yang dapat dieksekusi di dalam /etc, tetapi Anda harus dapat melakukan penginstalan ulang yang saya uraikan di atas.

Perlu diketahui bahwa hingga Anda memulihkan izin asli, sistem Anda setidaknya akan berada dalam keadaan tidak aman.


Linux
  1. Bagaimana Mengubah Pengaturan Zona Waktu di Linux?

  2. Bagaimana cara memonitor file /etc/shadow dan /etc/passwd untuk perubahan dengan Auditd?

  3. CentOS / RHEL :Cara Memulihkan dari file /etc/passwd yang dihapus

  1. “sudo:/etc/sudoers is world writable” – Cara memperbaiki hak akses file sudoers

  2. Cara Memverifikasi Sintaks file /etc/ssh/sshd_config

  3. Cara memasukkan semua file dari direktori dalam skrip shell (/etc/init.d/iptables dalam kasus ini)

  1. /etc/passwd menampilkan pengguna dalam grup, tetapi /etc/group tidak

  2. Perbedaan antara /etc/hosts dan /etc/resolv.conf

  3. Cara mengatur /etc/issues untuk menampilkan alamat IP untuk eth0