Atur chmod / 777 salah. Masalah?

33

Saya mencoba untuk menjalankan chmod -R 777 ./tetapi akhirnya mengetik chmod -R 777 /dan mengatur 777seluruh mesin saya. Apa yang salah? Bagaimana saya bisa memperbaikinya?

Vinnycx
sumber
apa yang bisa salah dalam sistem? apakah itu akan berhenti bekerja?
Vinnycx
6
Tentu saja ada masalah. SSH akan gagal misalnya.
ceving
2
SSH keluar jika direktori home dapat dibaca dunia. Mengatur semuanya ke 777 seperti melakukan semuanya sebagai root.
ceving
3
Lihat juga serverfault.com/questions/364677/why-is-chmod-r-777-destructive yang membahas lebih detail tentang apa yang salah.
Gilles 'SANGAT berhenti menjadi jahat'

Jawaban:

46

Masalah? Ya banyak. Bisakah itu diperbaiki? Yakin. Lebih cepat dari menginstal ulang? Mungkin tidak.

Rekomendasi saya adalah menginstal ulang. Simpan cadangan dari sistem yang ada, dan pulihkan daftar paket dan isi file dalam /etcdan /var. Sebab /usr/local, Anda mungkin dapat mengembalikan izin secara manual. Untuk /homedan /srv, Anda harus memulihkan izin dari cadangan.

Jika ini adalah sistem dengan banyak pengguna lokal, perhatikan bahwa membuat beberapa file yang dapat dibaca dunia telah mengungkapkan beberapa hal yang seharusnya tetap dirahasiakan.

  • Daftar kata sandi Anda sekarang dikompromikan: pengguna lokal telah memiliki akses ke daftar kata sandi yang di-hash dan dapat mencoba untuk memaksa mereka. Beri tahu pengguna Anda tentang ini.
  • Semua data pengguna pribadi (kunci ssh, kata sandi tersimpan, email, apa pun yang dianggap rahasia oleh pengguna) telah terpapar ke semua pengguna lokal. Beri tahu pengguna Anda tentang ini.

Jika Anda benar-benar ingin mencoba memperbaiki (lebih banyak latihan pembelajaran daripada rute pemulihan praktis), pertama-tama pulihkan izin beberapa file. Perhatikan bahwa sementara sebagian besar file sekarang terlalu terbuka, beberapa tidak ada bit setuid yang diperlukan . Berikut adalah langkah-langkah yang harus Anda ambil sebelum hal lain. Perhatikan bahwa ini bukan daftar lengkap, hanya upaya membuat sistem hampir tidak berfungsi.

chmod -R go-w /
chmod 440 /etc/sudoers
chmod 640 /etc/shadow /etc/gshadow
chmod 600 /etc/ssh/*_key /etc/ssh*key   # whichever matches
chmod 710 /etc/ssl/private /etc/cups/ssl
chmod 1777 /tmp /var/tmp /var/lock
chmod 4755 /bin/su /usr/bin/passwd /usr/bin/sudo /usr/bin/sudoedit
chmod 2755 /var/mail /var/spool/mail

Maka Anda harus mengembalikan semua izin di mana saja. Untuk file di bawah /usr, Anda dapat menginstal ulang paket dengan salah satu dari perintah berikut, tergantung pada distribusi Anda:

  • Jika Anda menggunakan Debian, Ubuntu, atau distribusi lain berdasarkan APT, Anda bisa menjalankannya apt-get --reinstall install
  • Jika Anda menggunakan Arch Linux, Anda dapat mengeksekusi pacman -S $(pacman -Qq --dbpath /newarch/var/lib/pacman) --root /newarch --dbpath /newarch/var/lib/pacman, dengan asumsi bahwa Anda berada di Live CD dan menginstal Arch Anda sudah terpasang di /newarch.

Untuk file di bawah /etcdan /var, itu tidak akan berfungsi, karena banyak dari mereka akan dibiarkan seperti itu: Anda harus mereplikasi izin pada instalasi yang berfungsi. Untuk file di bawah /srvdan /home, Anda harus mengembalikan dari cadangan. Seperti yang Anda lihat, Anda mungkin juga menginstal ulang.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
6
Setuju, kecuali jika Anda seorang ahli, Anda hampir tidak memiliki kesempatan untuk memperbaiki situasi ini tanpa melakukan instal ulang penuh atau memulihkan dari cadangan. Terlalu berbahaya untuk membiarkan sistem berjalan seperti apa adanya.
Arrowmaster
3
Jika ada pengguna di sistem, saya kasihan mereka.
Jürgen A. Erhard
19

Anda mungkin tidak memperhatikannya pada awalnya, tetapi banyak hal yang bisa dan akan salah. Masalah utama adalah bahwa seluruh model keamanan untuk seluruh sistem rusak. Ini seperti memiliki tubuh tanpa kulit, semua organ di udara. Pasti terinfeksi karena itu tidak dimaksudkan untuk berfungsi seperti itu. Bahkan jika tampaknya berfungsi selama beberapa menit, Anda perlu membersihkan ini.

Cara terbaik sebenarnya adalah mulai dari awal. Cara ini akan sangat mengurangi risiko Anda dan memberi Anda hasil yang lebih bersih dalam waktu yang lebih singkat. Jika Anda memiliki cadangan yang tepat, ini seharusnya tidak terlalu mencoba pengalaman.

Jika Anda memang mencoba untuk membersihkannya, Cara utama adalah memberi tahu manajer paket distro Anda untuk menginstal kembali SEMUA yang ada di sistem termasuk, menimpa file konfigurasi. Kemudian gunakan sistem verifikasi apa pun yang harus dilihatnya dan pastikan tidak ada yang ditandai memiliki file dengan izin yang tidak biasa. Selanjutnya, selesaikan hal-hal seperti direktori home user dan setel ulang semuanya menjadi izin waras secara massal, kemudian kerjakan beberapa hal yang harus memiliki izin khusus (seperti file kunci ssh). Terakhir, lakukan pencarian sistem lengkap untuk semua yang ditandai sebagai 777 dan periksa daftarnya (seharusnya kecil jika Anda telah melakukan langkah-langkah lainnya dengan saksama) dan selesaikan satu per satu untuk memastikan bahwa mereka memang seperti itu adanya.

Caleb
sumber
Namun, selain dari keamanan, apa yang salah dalam hal aplikasi? Apakah mereka akan berhenti bekerja? Atau keamanan adalah masalah terbesar di sini?
Vinnycx
Keamanan adalah masalah terbesar, tetapi banyak program, terutama di balik layar hal-hal seperti logging daemon, cron, dll akan gagal karena berbagai alasan daripada menempatkan diri mereka dalam situasi berbahaya yang mereka lihat.
Caleb
cron akan berhenti bekerja hanya karena 777?
Vinnycx
1
Ada beberapa sistem cron yang berbeda, tetapi tidak ada cron yang menghargai diri sendiri yang dapat melakukan pekerjaan di cron root ketika file crontab dapat ditulis oleh dunia! Daemon email yang menangani pemberitahuan cron juga harus mengeluh karena alasan lain.
Caleb
10

SOLUSI: Saya MENGUJI INI DI CENTOS

Orang ini menyelamatkan pekerjaanku! (Anda perlu mengakses entah bagaimana)

http://www.adminlinux.org/2009/07/how-to-restore-default-system.html

1) Untuk mengatur ulang uids dan gids pada file dan direktori:

for u in $(rpm -qa); do rpm --setugids $u; done

2) Untuk izin pada file dan direktori

for p in $(rpm -qa); do rpm --setperms $p; done

lalu ubah izin secara manual ke file-file ini:

# ll /etc/ssh/
# chmod 600 /etc/ssh/ssh_host_rsa_key
# chmod 600 /etc/ssh/ssh_host_dsa_key
# service sshd restart
saul scv
sumber
5

Beberapa program yang sadar keamanan tidak akan mulai jika file tertentu memiliki izin yang terlalu "longgar". Seperti yang dikatakan @ceving, sshdadalah yang paling khas dari ini.

Hal utama yang bisa salah adalah sekarang setiap pengguna dapat membuka, membaca, dan menulis file apa pun di sistem Anda. Dua alasan mengapa hal ini buruk adalah: A) jika pengguna jahat memperoleh kendali atas sistem Anda baik melalui eksploitasi atau kesalahan konfigurasi, ia dapat memodifikasi apa pun di sistem Anda sekarang, dan B) Anda dapat menghapus apa pun yang Anda inginkan meskipun Anda bukan root, jadi Anda baru saja mengabaikan sebagian besar perlindungan agar tidak berjalan sebagai root.

Jika Anda tidak mencadangkan izin sebelumnya Anda berada dalam sedikit situasi. Anda mungkin dapat membuat skrip yang "mengambil" daftar izin dari sistem yang baru diinstal dan kemudian "menerapkan" itu untuk semua yang ada di sistem Anda. Tapi saya tidak punya skrip seperti itu.

LawrenceC
sumber
Namun, selain dari keamanan, apa yang salah dalam hal aplikasi? Apakah mereka akan berhenti bekerja? Atau keamanan adalah masalah terbesar di sini?
Vinnycx
Hanya beberapa aplikasi yang menolak untuk memulai jika izin terlalu longgar. Keamanan adalah masalah terbesar. Tetapi juga stabilitas sistem. Jika Anda melakukan rm -rf /sebagai pengguna normal sekarang, Anda akan menghentikan sistem Anda.
LawrenceC
Aplikasi mana yang berhenti bekerja?
Vinnycx
Selain dari SSH? Apa lagi yang bisa gagal? Saya perlu sekarang jika saya dapat meninggalkan sistem seperti ini untuk sementara waktu.
Vinnycx
5
@Vinnycx: Tidak, Anda tidak bisa. Itu rusak. Anda harus menjadikannya prioritas untuk memperbaikinya. Kalau tidak, harapkan layanan Anda gagal satu per satu dan peretas memakan data Anda. Meninggalkan / * @ 777 bukan pilihan.
Caleb