Câu trả lời:
Tóm lại: không.
Bạn sẽ cần khôi phục từ bản sao lưu. (Một số công cụ sao lưu có thể có các tùy chọn chỉ khôi phục quyền, những người khác có thể liệt kê các tệp được sao lưu bằng quyền của họ và bạn có thể sử dụng quyền đó để sửa hệ thống của mình.)
Nếu bạn không có bản sao lưu, bạn sẽ cần sửa tất cả bằng tay.
sudo chown -R user:user /
đó, có khả năng hệ thống bị hỏng nặng đến mức bạn không thể khôi phục từ bản sao lưu.
chown
mô tả, có khả năng bạn sẽ không thể làm gì trước khi cài đặt toàn bộ hệ thống từ đầu; hệ thống thậm chí không có root
tài khoản và sudo
sẽ không hoạt động. Có lẽ đáng để thử khởi động vào trình bao một người dùng, nhưng đừng hy vọng nó hoạt động.
sudo
hay su
không tiếp tục hoạt động khi tất cả các tệp có liên quan của nó được sở hữu user
là một vấn đề khác (có thể không phải vì trong số những thứ khác, bit SUID trên exe sẽ biến mất).
Chỉ khi bạn biết quyền sở hữu của người dùng và nhóm của mọi tệp và thư mục trong thư mục của bạn /
.
Thậm chí sau đó, bạn đã ghi đè quyền sở hữu các tệp hệ thống quan trọng cần được sở hữu bởi root, bao gồm cả sudo
lệnh. Bạn có thể cần phải gắn ổ đĩa cứng vào một hệ thống khác - và lưu ý rằng hệ thống khác có thể sẽ không có ánh xạ UID và GID giống như hệ thống mà bạn vừa bị chặn.
Tạo một bản sao của toàn bộ ổ cứng nếu bạn có thể, sau đó cài đặt lại hệ điều hành của bạn. Khi bạn đã thực hiện điều đó, bạn có thể thử sao chép các tệp trở lại hệ thống mới bị xóa và khôi phục quyền sở hữu của họ. Bạn có thể có thể giả định (mặc dù không đáng tin cậy 100%) rằng mọi thứ bên dưới /home/foo
đều thuộc sở hữu của người dùng foo
và mỗi tệp bộ đệm thư dưới /var/mail
đây thuộc sở hữu của người dùng thích hợp (nếu bạn có e-mail trên hệ thống). Bạn có thể thoát khỏi mà không cần khôi phục hầu hết các tệp không thuộc /home
, tùy thuộc vào những gì bạn đã thực hiện với hệ thống.
Và sau đó bắt đầu nuôi dưỡng thói quen kiểm tra lại bất kỳ lệnh nào bạn chạy sudo
trước khi bạn nhấn Enter.
Nếu bản phân phối của bạn dựa trên RPM, bạn có thể khôi phục các tệp CHỈ được cài đặt bởi các gói vòng / phút.
Để khôi phục tất cả các quyền gói:
rpm --setperms -a
Để khôi phục tất cả chủ sở hữu gói (người dùng / nhóm):
rpm --setugids -a
Nếu -a không chạy, bạn có thể thực hiện vòng lặp bash:
Đối với quyền:
for x in $(rpm -qa); do rpm --setperms $x; done
Dành cho chủ sở hữu:
for x in $(rpm -qa); do rpm --setugids $x; done
Trích xuất từ: http://www.sysadmit.com/2016/10/linux-restaurar-permisos-de-un-paquete.html
Bạn có thể lưu trữ các phiên bản hiện tại và sau đó phân tích ra để hoàn nguyên bằng cách sử dụng tùy chọn -v.
chown -R nobody:nobody -v /tmp/some_file > /tmp/chown.log
cat /tmp/chown.log
Nội dung sẽ là:
changed ownership of `/tmp/some_file' from me:users to nobody:nobody
Sử dụng ngôn ngữ kịch bản yêu thích và các biểu thức chính quy, bạn có thể thực hiện quá trình đau đớn để hoàn nguyên chúng (nếu bạn phải).
Tôi thực sự khuyên bạn không nên thực hiện một cuộc trò chuyện đệ quy trên / vì bạn sẽ phơi bày / etc / bóng hoặc bất kỳ tệp quan trọng nào khác.
sudo chown -R user:user ..
có thể có tác dụng tương tự như lệnh được đề cập ở đây nếu bạn ở một cấp dưới gốc của hệ thống tệp. Đừng cố làm điều gì đó như thế này.