Đặt sai chmod / 777. Vấn đề?


33

Tôi đã cố chạy chmod -R 777 ./nhưng cuối cùng lại gõ chmod -R 777 /và cài đặt 777trê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ó?



Điều gì có thể đi sai trong hệ thống? nó sẽ ngừng hoạt động?
Vinnycx

6
Tất nhiên là có vấn đề. SSH sẽ thất bại chẳng hạn.
ceving

2
SSH thoát nếu thư mục chính có thể đọc được. Đặt mọi thứ thành 777 cũng giống như làm mọi thứ như root.
ceving

3
Xem thêm serverfault.com/questions/364677/why-is-chmod-r-777-destrulation sẽ đi sâu vào chi tiết hơn về những gì sẽ xảy ra.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


46

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/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/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.

  • Danh sách mật khẩu của bạn hiện đã bị xâm phạm: người dùng cục bộ đã có quyền truy cập vào danh sách mật khẩu được băm và có thể cố gắng ép buộc họ. Thông báo cho người dùng của bạn về điều này.
  • Tất cả dữ liệu người dùng riêng tư (khóa ssh, mật khẩu được lưu trữ, e-mail, bất cứ điều gì người dùng khác có thể coi là bí mật) đã được hiển thị cho tất cả người dùng cục bộ. Thông báo cho người dùng của bạn về điều này.

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:

  • Nếu bạn đang sử dụng Debian, Ubuntu hoặc phân phối khác dựa trên APT, bạn có thể thực thi apt-get --reinstall install
  • Nếu bạn đang sử dụng Arch Linux, bạn có thể thực thi 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/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/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.


6
Đồng ý, trừ khi bạn là một chuyên gia, bạn gần như không có cơ hội sửa chữa tình huống này mà không thực hiện cài đặt lại đầy đủ hoặc khôi phục từ bản sao lưu. Nó là quá nguy hiểm để rời khỏi hệ thống chạy như vậy.
Arrowmaster

3
Nếu có người dùng trên hệ thống, tôi thương hại họ.
Jürgen A. Erhard

19

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.


Nhưng, ngoài bảo mật, điều gì có thể sai về các ứng dụng? Họ sẽ ngừng làm việc? Hay an ninh là mối quan tâm lớn nhất ở đây?
Vinnycx

Bảo mật là mối quan tâm lớn nhất, nhưng rất nhiều chương trình, đặc biệt là hậu trường, những thứ như đăng nhập daemon, cron, v.v. sẽ thất bại vì nhiều lý do thay vì đặt mình vào tình huống nguy hiểm mà họ nhìn thấy.
Caleb

Cron sẽ ngừng hoạt động chỉ vì 777?
Vinnycx

1
Có một số hệ thống cron khác nhau, nhưng không có cron tự tôn trọng nào nên thực thi các công việc trong cron gốc khi tệp crontab có thể ghi được trên thế giới! Ngoài ra, daemon thư xử lý thông báo cron nên khiếu nại vì lý do khác.
Caleb

10

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

5

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, sshdlà đ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ù.


Nhưng, ngoài bảo mật, điều gì có thể sai về các ứng dụng? Họ sẽ ngừng làm việc? Hay an ninh là mối quan tâm lớn nhất ở đây?
Vinnycx

Chỉ cần một vài ứng dụng từ chối khởi động nếu quyền quá lỏng lẻo. An ninh là mối quan tâm lớn nhất. Nhưng đó cũng là sự ổn định của hệ thống. Nếu bạn làm 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ệ.
LawrenceC

Những ứng dụng có thể ngừng hoạt động?
Vinnycx

Ngoài SSH? Những gì khác có thể thất bại? Tôi cần phải bây giờ nếu tôi có thể rời khỏi hệ thống như thế này một thời gian.
Vinnycx

5
@Vinnycx: Không bạn không thể. Nó bị hỏng. Bạn nên ưu tiên sửa nó. Nếu không, mong đợi các dịch vụ của bạn thất bại từng người một và tin tặc ăn dữ liệu của bạn. Rời khỏi / * @ 777 không phải là một lựa chọn.
Caleb
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.