Gần đây tôi đã gõ lệnh
sudo chmod 777 -R /
sau đó một số thứ như
sudo -i
không hoạt động bình thường. Vì vậy, tôi tự hỏi nếu có bất kỳ cách nào tôi có thể thiết lập lại quyền truy cập thư mục về trạng thái ban đầu của họ?
Gần đây tôi đã gõ lệnh
sudo chmod 777 -R /
sau đó một số thứ như
sudo -i
không hoạt động bình thường. Vì vậy, tôi tự hỏi nếu có bất kỳ cách nào tôi có thể thiết lập lại quyền truy cập thư mục về trạng thái ban đầu của họ?
Câu trả lời:
Có thể trở lại từ tình huống lộn xộn này.
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 (Ubuntu và cài đặt Fedora cũ của tôi), nhưng chạy HĐH từ CD / DVD hoặc khóa USB cũng sẽ làm điều tương tự.
MPOINT=/mount/ubuntu
Đầu tiên tôi gắn 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/ubuntu/root $MPOINT
mount /dev/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 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 ở đó):
find /etc /usr /bin /sbin -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ư:
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
(...)
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 đề.
Chỉnh sửa:
Ngoài ra, chủ sở hữu cài đặt sẽ vô hiệu hóa các cờ SGID và SUID , điều này gây ra các vấn đề kỳ lạ (Ví dụ: bạn sẽ không thể thực hiện sudo trừ khi được phép là 4755). Bạn phải và chỉ nên đặt quyền SAU khi thiết lập chủ sở hữu. NÓI TIẾT KIỆM thông tin cấp phép tập tin cùng với thông tin chủ sở hữu.
Rk:
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
Lệnh bên phải (kết hợp) có nhiều thứ như:
`/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`
Lưu ý rằng có thể cần phải có sự chăm sóc bổ sung để tính đến các dấu ngoặc đơn trong tên tệp (ví dụ: theo địa phương) và chown có thể âm thầm hủy cài đặt các bit setuid và setgid được đặt bởi chmod. Trong trường hợp thứ hai, sẽ phá vỡ, giả sử, / bin / su và / usr / bin / sudo, bạn có thể cần phải trao đổi thứ tự các mệnh đề exec ở trên.
Sau khi khôi phục sudo hoặc chọn chế độ khôi phục khi khởi động
Có thể khôi phục lại toàn bộ hệ thống sử dụng debsums rằng verifiy vẹn tập tin và cho phép.
từ trang người đàn ông:
apt-get install --reinstall $(dpkg -S $(debsums -c) | cut -d : -f 1 | sort -u)
Cài đặt lại các gói với các tập tin thay đổi
hoặc giới hạn trong một đường dẫn cụ thể, ví dụ /usr
::
apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/usr ) | cut -d : -f 1 | sort -u)
hoặc giới hạn trong một tập hợp nhiều đường dẫn, ví dụ: /sbin /etc /var
apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/etc -e ^/sbin -e ^/var ) | cut -d : -f 1 | sort -u)
chmod a-x /bin/ping
và debsums -c
sẽ không báo cáo tập tin đó.
Luôn luôn xem những gì bạn chạy như sudo.
Chuỗi này giải thích rằng bạn có thể đặt lại một số quyền theo cách thủ công và một tập lệnh ở đó giúp với điều này, nhưng vẫn là một công việc lớn. Thay vì làm theo các mẹo trong guồng để lưu các gói đã cài đặt (đánh dấu) và cài đặt lại HĐH, và áp dụng các đánh dấu gói đã lưu của bạn để lấy lại ứng dụng của bạn.
Theo tôi biết, chỉ các gói System V và RPM cung cấp một lệnh để sửa chữa các quyền của tập tin. Trên Hệ thống V (Solaris), nó là pkgchk, với RPM là tốc độ vòng / phút.
Thật không may, dường như không có lệnh nào tồn tại cho các gói Debian / Ubuntu - nhưng tôi có thể sai ở đây.
Nhưng ngay cả với sự trợ giúp của các lệnh này, việc đưa hệ thống của bạn trở lại trạng thái lành mạnh không phải là một nhiệm vụ tầm thường và bằng cách sửa chữa nó, bạn có thể dễ dàng gây ra tác hại mới cho hệ thống của mình - nếu bạn không cẩn thận.
Khác với Joseph nói, bạn không phải là người đầu tiên và bạn sẽ không phải là người cuối cùng nhập lệnh như vậy. Nhưng riêng ý tưởng, để thay đổi quyền truy cập tệp thành 777 trên hệ thống Unix, là một dấu hiệu mạnh mẽ cho thấy bạn không có nhiều kinh nghiệm với loại hệ thống này. Điều tốt nhất bạn có thể làm trong tình huống này là sao lưu những gì bạn sẽ cần một lần nữa (thư mục chính, tệp cấu hình, tệp thư?) Và thử cài đặt mới.
Và bạn nên rất, rất cẩn thận, khi bạn khôi phục các tập tin sao lưu - bị hỏng.
Chúc may mắn!
Tái bút: Tôi chỉ đang tự hỏi loại vấn đề nào bạn muốn giải quyết?
Bạn không thể hoàn tác một chmod
hoạt động; ít nhất là không phải trong ý nghĩa quay trở lại một thiết lập trước đó, đó là những gì tình huống này yêu cầu. Có thể cho rằng, bạn có thể hoàn tác một chmod
thao tác, bằng cách đưa chmod
từng tệp và thư mục trở về chế độ ban đầu của nó, nhưng chúng không giống nhau; xác định các chế độ ban đầu là khó khăn (như được thảo luận trong các câu trả lời khác).