ฉันอนุญาตให้ทุกคนทำอะไรได้ แต่ทำไมระบบล่มโดยให้สิทธิ์เท่านั้น ฉันแค่แก้ไขสิทธิ์ที่ไม่ได้เปลี่ยนแปลงไฟล์
/var/log/syslog
คุณจะเข้าใจเหตุผลด้วยซ้ำ
ฉันอนุญาตให้ทุกคนทำอะไรได้ แต่ทำไมระบบล่มโดยให้สิทธิ์เท่านั้น ฉันแค่แก้ไขสิทธิ์ที่ไม่ได้เปลี่ยนแปลงไฟล์
/var/log/syslog
คุณจะเข้าใจเหตุผลด้วยซ้ำ
คำตอบ:
มีเหตุผลสองสามข้อ
ก่อนอื่นนอกเหนือจากสิทธิ์การอ่าน / เขียน / เรียกใช้ตามปกติมีบิตอื่น ๆ ที่สิทธิ์ไฟล์มีอยู่ ที่สะดุดตาที่สุดและsetuid
setgid
เมื่อเรียกใช้โปรแกรมที่มีบิตสิทธิ์อย่างใดอย่างหนึ่งเหล่านี้จะได้รับ "UID ที่มีประสิทธิภาพ" และ / หรือ "GID ที่มีประสิทธิภาพ" ของเจ้าของโปรแกรมแทนที่จะเป็นผู้ใช้ที่รัน สิ่งนี้อนุญาตให้โปรแกรมรันโดยมีสิทธิ์มากกว่าผู้ใช้ที่รันโปรแกรมเหล่านั้น มันถูกใช้โดยระบบสาธารณูปโภคที่สำคัญหลายคนรวมทั้งและsu
คำสั่งsudo
ของคุณchmod
จะลบบิตเหล่านี้โดยปล่อยให้สาธารณูปโภคไม่สามารถใช้งานได้
ประการที่สองบางโปรแกรม (โดยเฉพาะssh
) ทำการตรวจสอบสติของไฟล์และปฏิเสธที่จะใช้ไฟล์ที่มีสิทธิ์ที่พวกเขาเห็นว่าไม่ปลอดภัย สิ่งนี้จะช่วยลดความเสี่ยงของผู้ดูแลระบบที่ไม่ได้ตั้งใจทิ้งช่องโหว่ด้านความปลอดภัย แต่ก็ทำให้การจัดการกับการอนุญาตให้ใช้ไฟล์ถูกลบหมดยิ่งเจ็บปวดมากขึ้น
คำตอบสั้น ๆ
ระบบ Linux ต้องการสิทธิ์เฉพาะสำหรับบางโปรแกรมเช่นsudo
อื่น ๆ
เมื่อคุณเรียกคุณเช็ดสิทธิ์ทั้งหมดและแทนที่ด้วยchmod 777 -R /
777
สิ่งนี้ทำให้ระบบใช้ไม่ได้เว้นแต่คุณจะกู้คืนสิทธิ์ทั้งหมดด้วยตนเอง
ในทางปฏิบัติมันเร็วกว่าและง่ายกว่าในการติดตั้งอีกครั้ง
ปัญหาคือว่าโปรแกรมระบบจำนวนมากได้รับการออกแบบวิธีการที่พวกเขาไม่ได้เริ่มถ้าพวกเขา "ไม่ชอบ" สิทธิ์ สิ่งนี้ทำเพื่อเหตุผลด้านความปลอดภัย
ฉันคิดว่าการอธิบายวิธีจัดการกับการออกแบบระบบเป็นสิ่งที่สำคัญกว่าการอธิบายว่าทำไมแต่ละโปรแกรมไม่สามารถทำงานกับใบอนุญาตที่ไม่ถูกต้อง
หากคุณต้องการให้ผู้ใช้ทุกคนมีสิทธิ์แบบไม่ จำกัด ใน Ubuntu คุณสามารถเพิ่มผู้ใช้ทั้งหมดในsudo
กลุ่มแทนที่จะเปลี่ยนสิทธิ์ของไฟล์และไดเรกทอรี ที่จะมีผลเหมือนกัน แต่จะไม่ทำลายระบบ
อีกวิธีหนึ่ง (ที่แย่มาก) คือการเปิดใช้งานบัญชีรูทและอนุญาตให้ทุกคนเข้าสู่ระบบในฐานะรูท
chmod
มีความแตกต่างเล็กน้อย
chmod 0777
พฤติกรรมที่แตกต่างจากchmod u+rwx,g+rwx,o+rwx
ที่setuidและsetgidเป็นศูนย์โดยแรกและเก็บรักษาไว้โดยหลัง
นั่นคือสาเหตุที่ระบบไม่สามารถใช้งานได้ คุณลบsetuid ที่จำเป็นออกจากโปรแกรมไม่กี่โปรแกรม
นี่คือรายการไฟล์ setuid หรือ setgid บนแล็ปท็อป Linux Fedora 23 ของฉัน:
[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]#
ฉันลบรายการเสียงหลายสิบรายการในแคชและบันทึก
chmod
กำลังทำอยู่และให้หลักฐานตัวอย่างสิ่งที่ขาดไปจากที่อื่น
chmod u+rwx,g+rwx,o+rwx -R /
จะไม่ทำลายระบบหรือไม่
เพิ่มเติมจากคำตอบอื่น ๆ : คุณได้ลบ "sticky bit" จาก/tmp
(ซึ่งมักจะมีสิทธิ์ 1777) และสิ่งนี้อาจทำให้เกิดปัญหาอื่น ๆ ที่ไม่คาดคิดเนื่องจากโปรแกรมจะสามารถเขียนหรือลบไฟล์ชั่วคราวของกันและกันได้
Sticky bit เป็นสิทธิ์พิเศษที่อนุญาตให้ทุกคนสร้างไฟล์ได้/tmp
เฉพาะบุคคลที่สร้างไฟล์นั้นเพื่อย้ายหรือลบไฟล์