Tôi đã cố chạy chmod -R 777 ./
nhưng cuối cùng lại gõ chmod -R 777 /
và cài đặt 777
trên toàn bộ máy của mình. Cái mà có thể sai lầm? Làm thế nào tôi có thể sửa chữa nó?
Tôi đã cố chạy chmod -R 777 ./
nhưng cuối cùng lại gõ chmod -R 777 /
và cài đặt 777
trên toàn bộ máy của mình. Cái mà có thể sai lầm? Làm thế nào tôi có thể sửa chữa nó?
Câu trả lời:
Các vấn đề? Vâng, rất nhiều. Nó có thể được sửa chữa? Chắc chắn rồi. Nhanh hơn cài đặt lại? Chắc là không.
Đề nghị của tôi là cài đặt lại. Giữ một bản sao lưu của hệ thống hiện có và khôi phục danh sách gói và nội dung của các tệp trong /etc
và /var
. Đối với /usr/local
, bạn có thể có thể khôi phục quyền bằng tay. Đối với /home
và /srv
, bạn sẽ phải khôi phục các quyền từ bản sao lưu.
Nếu đây là một hệ thống có nhiều người dùng cục bộ, lưu ý rằng việc tạo một số tệp có thể đọc được trên thế giới đã tiết lộ một số điều cần được giữ bí mật.
Nếu bạn thực sự muốn thử sửa chữa (nhiều bài tập học hơn là một lộ trình khôi phục thực tế), trước tiên hãy khôi phục quyền của một vài tệp. Lưu ý rằng trong khi hầu hết các tệp hiện quá mở, một số ít bị thiếu các bit setuid cần thiết . Dưới đây là các bước bạn nên làm trước khi bất cứ điều gì khác. Lưu ý rằng đây không phải là một danh sách đầy đủ, chỉ là một nỗ lực làm cho hệ thống hầu như không hoạt động.
chmod -R go-w /
chmod 440 /etc/sudoers
chmod 640 /etc/shadow /etc/gshadow
chmod 600 /etc/ssh/*_key /etc/ssh*key # whichever matches
chmod 710 /etc/ssl/private /etc/cups/ssl
chmod 1777 /tmp /var/tmp /var/lock
chmod 4755 /bin/su /usr/bin/passwd /usr/bin/sudo /usr/bin/sudoedit
chmod 2755 /var/mail /var/spool/mail
Sau đó, bạn sẽ cần khôi phục tất cả các quyền ở mọi nơi. Đối với các tệp bên dưới /usr
, bạn có thể cài đặt lại các gói với một trong các lệnh sau, tùy thuộc vào bản phân phối của bạn:
apt-get --reinstall install
pacman -S $(pacman -Qq --dbpath /newarch/var/lib/pacman) --root /newarch --dbpath /newarch/var/lib/pacman
, giả sử rằng bạn đang ở trong Live CD và cài đặt Arch của bạn được gắn vào /newarch
.Đối với các tệp bên dưới /etc
và /var
, điều đó sẽ không hoạt động, vì nhiều trong số chúng sẽ bị bỏ lại như cũ: bạn sẽ phải sao chép các quyền trên bản cài đặt đang hoạt động. Đối với các tệp bên dưới /srv
và /home
, bạn sẽ phải khôi phục từ bản sao lưu. Như bạn thấy, bạn cũng có thể cài đặt lại.
Bạn có thể không nhận thấy nó lúc đầu, nhưng rất nhiều thứ có thể và sẽ đi sai. Vấn đề chính là toàn bộ mô hình bảo mật cho toàn bộ hệ thống bị hỏng. Nó giống như có một cơ thể không có da, các cơ quan tất cả trong không khí. Nó chắc chắn bị nhiễm bệnh vì nó không có nghĩa là hoạt động như vậy. Ngay cả khi nó có vẻ hoạt động trong vài phút, bạn cần phải làm sạch nó.
Cách tốt nhất sẽ thực sự là bắt đầu từ đầu. Cách này sẽ giảm đáng kể rủi ro của bạn và cho bạn kết quả sạch hơn trong thời gian ngắn hơn. Nếu bạn có bản sao lưu phù hợp, điều này không nên quá cố gắng trải nghiệm.
Nếu bạn cố gắng dọn sạch nó, Cách chính sẽ là báo cho người quản lý gói phân phối của bạn cài đặt lại MỌI THỨ trên hệ thống bao gồm, ghi đè các tệp cấu hình. Sau đó, sử dụng bất kỳ hệ thống xác minh nào mà nó phải xem qua chúng và đảm bảo không ai trong số chúng được gắn cờ là có các tệp có quyền khác thường. Tiếp theo, làm việc thông qua những thứ như thư mục nhà của người dùng và đặt lại mọi thứ thành các quyền đơn giản, sau đó làm việc thông qua một số thứ cần có quyền đặc biệt (như tệp ssh key). Cuối cùng, hãy tìm một hệ thống đầy đủ cho tất cả mọi thứ được đánh dấu là 777 và xem qua danh sách (sẽ rất nhỏ nếu bạn thực hiện các bước khác một cách kỹ lưỡng) và thực hiện từng bước một để đảm bảo rằng chúng phải như vậy.
GIẢI PHÁP: TÔI KIỂM TRA NÀY Ở TRUNG TÂM
Người này đã cứu công việc của tôi! (Bạn cần truy cập bằng cách nào đó)
http://www.adminlinux.org/2009/07/how-to-restore-default-system.html
1) Để đặt lại uids và gids trên các tập tin và thư mục:
for u in $(rpm -qa); do rpm --setugids $u; done
2) Để cấp phép trên các tập tin và thư mục
for p in $(rpm -qa); do rpm --setperms $p; done
sau đó thay đổi các hoán vị thủ công cho các tệp này:
# ll /etc/ssh/
# chmod 600 /etc/ssh/ssh_host_rsa_key
# chmod 600 /etc/ssh/ssh_host_dsa_key
# service sshd restart
Một số chương trình có ý thức bảo mật sẽ không bắt đầu nếu một số tệp nhất định có quá "lỏng" quyền. Như @ceving đã nói, sshd
là điển hình nhất của điều này.
Điều chính có thể sai là bây giờ bất kỳ người dùng nào cũng có thể mở, đọc và viết bất kỳ tệp nào trên hệ thống của bạn. Hai lý do tại sao điều này là xấu là: A) nếu người dùng độc hại giành quyền kiểm soát hệ thống của bạn thông qua khai thác hoặc cấu hình sai, anh ấy / cô ấy có thể sửa đổi bất cứ điều gì trên hệ thống của bạn và B) bạn có thể xóa bất cứ điều gì bạn muốn ngay cả khi bạn không phải là root, vì vậy bạn đã phủ nhận hầu hết các biện pháp bảo vệ không chạy bằng root.
Nếu bạn không sao lưu quyền trước thì bạn sẽ gặp một chút tình huống. Bạn có thể tạo một tập lệnh "tìm nạp" danh sách các quyền từ một hệ thống mới được cài đặt và sau đó "áp dụng" các tập lệnh đó cho mọi thứ trên hệ thống của bạn. Tôi không có một kịch bản như vậy tiện dụng, mặc dù.
rm -rf /
như một người dùng bình thường của bạn bây giờ, bạn sẽ làm cho hệ thống của bạn bị đình trệ.