Có thể quay lại từ một tình huống lộn xộn như vậy , mà không cần cài đặt lại hệ thống. Chà, chính xác hơn là chạy một hệ thống mới mới từ khóa USB hoặc trong Hộp Virutal (hoặc hơn) nếu bạn có hệ thống khởi động kép.
Tôi đã chạy lại cùng loại về vấn đề (một số lỗi trong kịch bản tôi đang viết) và đã giải quyết nó, nhưng bạn cần phải nhờ một số chuyên gia giúp đỡ. Hãy thật thận trọng!
Đầu tiên, tình huống của tôi dễ giải quyết hơn vì tôi có hệ thống khởi động kép (cài đặt Ubuntu và fedora cũ), nhưng chạy hệ thống cho khóa USB (hoặc có thể là CD / DVD) cũng sẽ làm điều tương tự.
MPOINT = / mount / ubfox
Đầu tiên tôi gắn các hệ thống tệp của mình như thế này (đừng quên tạo các điểm gắn kết): mount / dev / ubfox / root $ MPOINT mount / dev / ub Ubuntu / home $ MPOINT / home
Sau đó, tôi đã chạy lệnh sau (vấn đề của tôi chỉ nằm ở một vài thư mục quan trọng) để sao chép các quyền trên từ hệ thống đang chạy sang hệ thống lộn xộn (thực tế, trong trường hợp của tôi, tôi đã cài đặt một hệ thống Ubuntu trong Virtual Box trong fedora và có quyền ở đó):
tìm / etc / usr / bin -exec stat --format "chmod% a $ {MPOINT}% n" {} \; > /tmp/restoreperms.sh
Và sau đó tôi chạy tập lệnh restoreperms.sh.
Tôi đã có thể khởi động lại trên Ubuntu.
Nội dung của restoreperms.sh sẽ giống như:
(...)
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
(...)
Tôi đã không kiểm tra nó nhưng nó cũng phải hoạt động cho chủ sở hữu và nhóm chủ sở hữu. Cái gì đó như:
tìm / etc / usr / bin -exec stat --format 'chown% U:% G $ {MPOINT}% n' {} \; > /tmp/restoreperms.shucci
(...)
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
(...)
Tất nhiên, bạn phải lưu ý ở đây, rằng UID và GID giống nhau trên cả hai hệ thống, nhưng đối với người dùng và nhóm liên quan đến hệ thống, điều này không phải là một vấn đề.
Rk:
Một điều quan trọng cho việc này là giữ cho đĩa cài đặt được đồng bộ hóa với phiên bản bạn đang sử dụng hoặc ít nhất là hoạt động với phiên bản Ubuntu hiện tại. Bây giờ, tôi có các lệnh này trong một cronjob, chạy mỗi ngày (có thể là vài tuần) để giữ thông tin đó. Nó sẽ làm cho giải pháp dễ dàng hơn vào lần tới, nhưng, tất nhiên, như tôi có điều này bây giờ, nó sẽ không bao giờ xảy ra nữa. ;-) Một cái gì đó như thế này:
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
EDIT: để hỗ trợ các liên kết, lệnh kết hợp là:
/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {}