chown -R root.root /

3

Jadi saya bekerja dan ada direktori yang secara berkala saya ubah ke pengguna saya di terminal root sehingga saya bisa membuka file dalam editor teks, tapi saya tidak sengaja menekan / bukannya. dan ini adalah perintah yang saya keluarkan:

chown -R emil.emil /

Kemudian segera panik ^ C dan memasukkan perintah lain, karena saya pikir saya selalu dapat mengubah kembali file yang saya butuhkan untuk mengakses:

chown -R root.root /

Jadi sekarang saya tidak dapat melakukan sudari emilbahkan mencoba untuk memperbaikinya, karena saya mendapatkan izin ditolak kesalahan. Saya di Ubuntu dapat seseorang memberitahu saya jika ada cara saya bisa memperbaiki ini, tanpa benar-benar menginstal ulang semuanya.

TIP

Jika Anda mencoba untuk mendapatkan akses root, dan mendapatkan izin ini ditolak kesalahan saat menggunakan sucoba perintah ini:

gksu gnome-terminal

Ini akan meminta Anda untuk kata sandi root dan membuka terminal root baru karena beberapa alasan ini berfungsi dan memberi saya akses root, padahal sutidak.

Emil
sumber
CD bootable akan membantu Anda memulai, tetapi Anda masih memiliki kekacauan di tangan Anda saat itu ....
retracile
Untuk mencoba dan menghindari ini di masa mendatang, Anda bisa mencoba membiasakan menggunakan chown -R $ PWD atau chown -R ~ + (setidaknya jika Anda lupa + Anda hanya mengacaukan direktori home).
Sirex

Jawaban:

5

Sistem file turun dari / memiliki berbagai izin kepemilikan untuk mencapai hal-hal yang berbeda.

Perbaikan yang Anda coba menjadikan root sebagai pemilik segalanya, jadi untuk banyak operasi (termasuk mengakses file di bawah / home / emil) root adalah satu-satunya pengguna yang akan bekerja.

Jadi pilihan Anda adalah:

  1. Pulihkan dari cadangan
  2. Pasang kembali
  3. Boot ke mode pengguna tunggal dan secara manual menerapkan pemilik yang benar untuk setiap file

Saya akan menganggap 1. tidak masuk akal, dan 2. bukan pilihan yang disukai.

Di menu Grub ketika Anda mem-boot Ubuntu, Anda harus memiliki opsi pemulihan saat boot. Jika Anda tidak melihat menu grub (ini muncul sebelum yang lainnya setelah bios) maka tahan kiri Shiftdan itu akan muncul. Memilih ini akan boot ke mode pengguna tunggal, di mana Anda login sebagai root.

Dari sana Anda dapat mulai mengubah kepemilikan. Hal pertama yang akan terjadi

 chown -R emil /home/emil

Yang akan membuat Anda menjadi pemilik file Anda sendiri. Untuk sisanya, Anda mungkin ingin melakukan instalasi di komputer lain untuk membandingkan kepemilikan file, atau memulai setiap layanan yang Anda gunakan di /etc/init.d dan perhatikan alasan kegagalannya (perhatikan bahwa layanan mungkin gagal hanya karena ia adalah tidak dapat menulis lognya ke / var / log dan bahkan tidak dapat memberikan pelaporan kesalahan).

Ini akan menjadi proses yang sangat memakan waktu, tetapi tidak menginstal ulang. Perhatikan bahwa konfigurasi pribadi apa pun yang Anda buat untuk Ubuntu dan pengaturan aplikasi akan disimpan di / home / emil heirachy sehingga menyalin file-file ini di tempat lain, menginstal ulang OS dan aplikasi, dan menyalinnya kembali adalah pilihan yang jauh lebih cepat.

Paul
sumber
Paul, saya mencoba me-reboot ke mode pemulihan tetapi begitu layar membuka keyboard saya tidak berfungsi sehingga saya tidak bisa mendapatkan terminal root seperti itu. Namun saya menemukan cara aneh untuk mendapatkan terminal root, menggunakan gksu gnome-terminaluntuk beberapa alasan ini berfungsi dan memberi saya terminal root yang saya gunakan untuk chown direktori home saya, namun saya masih tidak bisa su ke root, masih mendapatkan izin ditolak.
Emil
@Emil ya, ini diharapkan. Memperbaiki kepemilikan direktori home Anda adalah langkah pertama dari sekitar 1000 langkah. Sekarang setelah Anda memiliki sesi root, Anda dapat menentukan semua kepemilikan lain yang perlu diperbaiki untuk memulihkan fungsionalitas, seperti di atas.
Paul
Ya, ini menyebalkan, saya mungkin harus menginstal ulang, terima kasih atas bantuannya.
Emil
Menginstal ulang mungkin akan memakan waktu lebih sedikit daripada menemukan dan memperbaiki semua kepemilikan yang salah.
Wyzard
4

Jika Anda memiliki sistem yang sama, Anda dapat menggunakan finduntuk mengetahui pemilik dan grup yang benar untuk setiap file, misalnya menggunakan:

find / -printf "%u:%g %p\n" > permissions.txt

yang akan menghasilkan output seperti berikut:

root:root /
root:root /usr
root:staff /usr/local
root:staff /usr/local/man
root:staff /usr/local/games
root:staff /usr/local/lib
root:staff /usr/local/lib/python2.7
root:staff /usr/local/lib/python2.7/dist-packages
root:staff /usr/local/lib/python2.7/site-packages
root:staff /usr/local/lib/python3.2
[...]

Anda kemudian dapat mengulangi ini dan chownsetiap file ke pemilik dan grup aslinya.

while read line
do
    chown $line
done < permissions.txt

Saya ragu ini akan memperbaiki semuanya dengan sempurna karena izin dan file berbeda di antara sistem, tetapi ini adalah permulaan dan setidaknya harus mendapatkan sistem dasar kembali ke default

WakiMiko
sumber
1
Hanya sebuah catatan kecil. Seharusnya 'chown' $ line '`Kalau tidak, jika $ line memiliki spasi maka ia akan memecah nama menjadi dua file.
Abhishek Gupta
Juruselamatku :) Terima kasih! Bekerja seperti pesona dengan / etc / only, itu memperbaiki semua masalah saya.
diosney
Itu bekerja untuk saya tetapi tanpa membungkus tanda kutip; Saya hanya memiliki beberapa folder lagi yang tersisa / var / lib / mysql tapi sekarang saya telah memilihnya secara rekursif dan semuanya telah diperbaiki untuk saat ini
Hammad
1

Saya lebih akrab dengan Fedora, tetapi saran saya adalah boot dari CD langsung dan salin data Anda dari mesin dan instal ulang.

Anda dapat berpotensi menggunakan informasi manajer paket (apt / dpkg) untuk mencari tahu seperti apa kepemilikan semua file pada sistem. Saya bisa mencari cara melakukannya dengan rpm, tapi saya tidak terlalu akrab dengan apt / dpkg. Setiap peningkatan keamanan seperti SELinux juga dapat memperumit masalah.

rpm -qa --list -vmemberikan informasi yang diperlukan pada sistem berbasis rpm, yang harus Anda uraikan dan beri makan ke chown. Jika Anda dapat menemukan yang setara dengan apt / dpkg, Anda dapat mencapainya.

retracile
sumber
Oh, dan Anda mungkin juga harus berurusan dengan bit yang lengket; Saya curiga chowning /bin/sumembersihkan bagiannya yang lengket.
retracile