Tôi chỉ cấp quyền cho tất cả mọi người để làm bất cứ điều gì nhưng tại sao hệ thống gặp sự cố khi chỉ cấp quyền? Tôi chỉ sửa đổi quyền không thay đổi các tập tin.
/var/log/syslog
, bạn thậm chí sẽ tìm ra lý do.
Tôi chỉ cấp quyền cho tất cả mọi người để làm bất cứ điều gì nhưng tại sao hệ thống gặp sự cố khi chỉ cấp quyền? Tôi chỉ sửa đổi quyền không thay đổi các tập tin.
/var/log/syslog
, bạn thậm chí sẽ tìm ra lý do.
Câu trả lời:
Có một vài lý do.
Đầu tiên, ngoài các quyền đọc / ghi / thực thi thông thường, còn có một số bit khác mà quyền của tệp chứa. Đáng chú ý nhất setuid
và setgid
. Khi một chương trình có một trong các bit quyền này được thiết lập, nó sẽ nhận được "UID hiệu quả" và / hoặc "GID hiệu quả" của chủ sở hữu chương trình thay vì người dùng đã chạy nó. Điều này cho phép các chương trình chạy với nhiều quyền hơn người dùng đã chạy chúng. Nó được sử dụng bởi nhiều tiện ích hệ thống quan trọng bao gồm su
và sudo
. chmod
Lệnh của bạn xóa các bit này để lại các tiện ích không sử dụng được.
Thứ hai, một số chương trình (đáng chú ý ssh
) thực hiện kiểm tra sự tỉnh táo về quyền của tệp và từ chối sử dụng các tệp có quyền mà họ thấy là không an toàn. Điều này làm giảm nguy cơ quản trị viên bất cẩn vô tình để lại lỗ hổng bảo mật nhưng nó khiến việc xử lý các quyền truy cập tệp bị xóa càng trở nên đau đớn hơn.
Một câu trả lời ngắn gọn.
Hệ thống Linux yêu cầu quyền cụ thể cho các chương trình nhất định như sudo
, v.v.
Khi bạn chạy, chmod 777 -R /
bạn xóa sạch tất cả các quyền và thay thế chúng bằng 777
. Điều này làm cho hệ thống không thể sử dụng được trừ khi bạn tự khôi phục tất cả các quyền.
Trong thực tế, nó nhanh hơn và dễ dàng hơn để cài đặt lại.
Vấn đề là nhiều chương trình hệ thống được thiết kế theo cách mà chúng không bắt đầu nếu chúng "không thích" các quyền. Điều này được thực hiện vì lý do bảo mật.
Tôi nghĩ điều quan trọng là phải giải thích cách xử lý thiết kế hệ thống theo paractice hơn là giải thích lý do tại sao mỗi chương trình không hoạt động với các permissons sai.
Nếu bạn thực sự muốn tất cả người dùng có quyền không giới hạn trong Ubuntu, bạn có thể thêm tất cả người dùng vào sudo
nhóm thay vì thay đổi quyền truy cập tệp và thư mục. Điều đó sẽ có tác dụng tương tự, nhưng sẽ không làm hỏng hệ thống.
Một cách khác (một cách rất tệ) là kích hoạt tài khoản root và cho phép mọi người đăng nhập với quyền root.
chmod
có sắc thái tinh tế.
chmod 0777
hành xử khác với chmod u+rwx,g+rwx,o+rwx
trong đó setuid và setgid bằng 0 bởi cái đầu tiên và được bảo tồn bởi cái sau.
Đó là lý do tại sao hệ thống trở nên không sử dụng được. Bạn đã loại bỏ setuid cần thiết khỏi một vài chương trình.
Dưới đây là danh sách các tập tin setuid hoặc setgid trên máy tính xách tay Linux Fedora 23 của tôi:
[root@fedora23lnvr61]# find / -perm /g+s,u+s
/var/log/journal
/var/log/journal/75e870eb13c74fbf97556a32ecf80ea2
/opt/google/chrome/chrome-sandbox
/usr/bin/rogue
/usr/bin/gnuchess
/usr/bin/locate
/usr/bin/umount
/usr/bin/lbrickbuster2
/usr/bin/gpasswd
/usr/bin/crontab
/usr/bin/fusermount
/usr/bin/su
/usr/bin/at
/usr/bin/newuidmap
/usr/bin/sudo
/usr/bin/pkexec
/usr/bin/mount
/usr/bin/chsh
/usr/bin/newgrp
/usr/bin/passwd
/usr/bin/chage
/usr/bin/chfn
/usr/bin/write
/usr/bin/newgidmap
/usr/sbin/mount.nfs
/usr/sbin/lockdev
/usr/sbin/netreport
/usr/sbin/userhelper
/usr/sbin/usernetctl
/usr/sbin/unix_chkpwd
/usr/sbin/pam_timestamp_check
/usr/libexec/kde4/kdesud
/usr/libexec/kde4/kpac_dhcp_helper
/usr/libexec/dbus-1/dbus-daemon-launch-helper
/usr/libexec/qemu-bridge-helper
/usr/libexec/openssh/ssh-keysign
/usr/libexec/spice-gtk-x86_64/spice-client-glib-usb-acl-helper
/usr/libexec/utempter/utempter
/usr/libexec/abrt-action-install-debuginfo-to-abrt-cache
/usr/libexec/Xorg.wrap
/usr/lib/polkit-1/polkit-agent-helper-1
/usr/lib64/vte-2.90/gnome-pty-helper
/usr/lib64/virtualbox/VBoxSDL
/usr/lib64/virtualbox/VirtualBox
/usr/lib64/virtualbox/VBoxNetNAT
/usr/lib64/virtualbox/VBoxHeadless
/usr/lib64/virtualbox/VBoxNetDHCP
/usr/lib64/virtualbox/VBoxNetAdpCtl
/usr/lib64/virtualbox/VBoxVolInfo
/usr/lib64/vte/gnome-pty-helper
[root@fedora23lnvr61]#
Tôi đã loại bỏ hàng chục mục tiếng ồn trong bộ nhớ cache và nhật ký.
chmod
đang làm và cung cấp bằng chứng ví dụ, một cái gì đó rất thiếu ở nơi khác.
chmod u+rwx,g+rwx,o+rwx -R /
sẽ không phá vỡ hệ thống?
Bổ sung cho các câu trả lời khác: bạn cũng đã xóa "bit dính" khỏi /tmp
(thường có quyền 1777) và điều này có thể gây ra các sự cố không mong muốn khác, vì các chương trình có thể ghi hoặc xóa các tệp tạm thời của nhau.
Bit dính là một quyền đặc biệt, trong khi cho phép bất kỳ ai tạo tệp vào /tmp
, chỉ cho phép người tạo ra nó di chuyển hoặc xóa nó.