Bagaimana cara mereset izin folder ke default di Ubuntu?

19

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?

Braiam
sumber
Saya tidak berpikir linux mengingat pengaturan izin sebelumnya. Coba buat file baru dan lihat pengaturan izin apa yang didapatnya.
thecoshman
Oh, tunggu, saya melihat apa yang Anda lakukan di sana. Ini mungkin situasi pemasangan ulang. Cukup buat cadangan data Anda, catat aplikasi apa yang telah Anda instal. Selamat bersenang-senang, mengapa tidak mencoba 10.4! (nama terbaik yang pernah ada ... apa arti radio itu?)
thecoshman
Saya berani Anda menemukan satu orang yang belum melakukan hal yang tepat: D itu situasi yang sangat rumit. Anda dapat memperbaikinya, coba jawaban jlovi tetapi akan membutuhkan waktu dan usaha dan itu akan membuat frustrasi. cukup instal ulang dan selesaikan. Dan jangan pernah menggunakan sudo chmod kecuali Anda tahu apa yang Anda lakukan.
Jack Mayerz

Jawaban:

17

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:

  1. Yang penting untuk ini adalah menjaga agar disk instalasi tetap disinkronkan dengan versi yang Anda gunakan, atau paling tidak berfungsi dengan versi ubuntu saat ini.
  2. 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.

jlovi
sumber
hanya jawaban yang sangat bagus . Saya menunjuk ke arahnya di Ask Ubuntu
Private
Hanya solusi sempurna untuk saya!
2

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)
Ivan Buttinoni
sumber
apakah debsum benar-benar memeriksa izin? Saya mencoba chmod a-x /bin/pingdan debsums -ctidak akan melaporkan file itu.
reox
0

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.

membalikkan
sumber
0

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?

kdo
sumber
0

Wow, kamu membunuhnya. Sudah mati! Coba masuk dan gunakan mesin sebagai root (karena Anda mengaktifkannya), lalu ubah keanggotaan grup root ke pengguna. Ini mungkin atau mungkin tidak berhasil karena saya belum pernah mencobanya sebelumnya tetapi patut dicoba.

slhck
sumber
0

Anda tidak dapat membatalkan chmodoperasi; setidaknya tidak dalam arti memutar kembali ke pengaturan sebelumnya, yang merupakan situasi yang dibutuhkan. Bisa dibilang, Anda dapat membatalkan chmodoperasi, dengan memasukkan chmodsetiap file dan direktori kembali ke mode aslinya –– tetapi semuanya tidak sama; menentukan mode asli itu sulit (seperti yang dibahas dalam jawaban lain).

Svisstack
sumber