ฉันเพิ่งพิมพ์คำสั่ง
sudo chmod 777 -R /
หลังจากนั้นบางสิ่งที่ชอบ
sudo -i
ทำงานไม่ปกติ ดังนั้นฉันสงสัยว่ามีวิธีใดบ้างที่ฉันสามารถรีเซ็ตสิทธิ์ของโฟลเดอร์เป็นสถานะดั้งเดิมได้
ฉันเพิ่งพิมพ์คำสั่ง
sudo chmod 777 -R /
หลังจากนั้นบางสิ่งที่ชอบ
sudo -i
ทำงานไม่ปกติ ดังนั้นฉันสงสัยว่ามีวิธีใดบ้างที่ฉันสามารถรีเซ็ตสิทธิ์ของโฟลเดอร์เป็นสถานะดั้งเดิมได้
คำตอบ:
เป็นไปได้ที่จะกลับมาจากสถานการณ์ที่ยุ่งเหยิงนี้
ฉันพบปัญหาแบบเดิมอีกครั้ง (ข้อผิดพลาดบางอย่างในสคริปต์ที่ฉันเขียน) และแก้ไขได้ แต่คุณต้องขอความช่วยเหลือจากผู้เชี่ยวชาญ ระวังตัวมาก!
ก่อนอื่นสถานการณ์ของฉันง่ายขึ้นที่จะแก้ปัญหาเพราะฉันมีระบบบูทคู่ (Ubuntu และ Fedora เก่าที่ติดตั้ง) แต่ใช้ระบบปฏิบัติการจาก CD / DVD หรือคีย์ USB ควรทำสิ่งเดียวกัน
MPOINT=/mount/ubuntu
ก่อนอื่นฉันเมานต์ระบบไฟล์ของฉันเช่นนี้ (อย่าลืมสร้างจุดเมานท์):
mount /dev/ubuntu/root $MPOINT
mount /dev/ubuntu/home $MPOINT/home
จากนั้นฉันก็รันคำสั่งต่อไปนี้ (ปัญหาของฉันมีเพียงไม่กี่ - สำคัญ - ไดเรกทอรี) เพื่อคัดลอกสิทธิ์จากระบบที่ทำงานไปยังยุ่งหนึ่ง (อันที่จริงในกรณีของฉันฉันติดตั้งระบบ Ubuntu ในกล่องเสมือนภายใต้ fedora และได้รับอนุญาตที่นั่น):
find /etc /usr /bin /sbin -exec stat --format "chmod %a \"${MPOINT}%n\"" {} \; > /tmp/restoreperms.sh
จากนั้นฉันก็รันสคริปต์ restoreperms.sh
ฉันสามารถบูตบน Ubuntu ได้อีกครั้ง
เนื้อหาของ restoreperms.sh จะมีลักษณะดังนี้:
(...)
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
(...)
ฉันไม่ได้ทดสอบ แต่มันจะต้องใช้ได้กับเจ้าของและกลุ่มเจ้าของด้วย สิ่งที่ต้องการ:
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
(...)
แน่นอนคุณต้องระวังที่นี่ว่า UID และ GID เหมือนกันทั้งสองระบบ แต่สำหรับผู้ใช้และกลุ่มที่เกี่ยวข้องกับระบบนี่ไม่ควรเป็นปัญหา
แก้ไข:
นอกจากนี้เจ้าของการตั้งค่าจะทำให้ค่าสถานะ SGID และ SUID เป็นโมฆะซึ่งทำให้เกิดปัญหาแปลก ๆ (ตัวอย่างเช่นคุณจะไม่สามารถดำเนินการ sudo ได้เว้นแต่ว่าได้รับอนุญาตคือ 4755) คุณต้องและควรตั้งค่าสิทธิ์หลังจากเจ้าของการตั้งค่าเท่านั้น บันทึกข้อมูลการอนุญาตไฟล์ที่สมบูรณ์พร้อมกับข้อมูลเจ้าของ
rk:
ตอนนี้ฉันมีคำสั่งนี้ใน cronjob ทำงานทุกวัน (อาจเป็นสัปดาห์) เพื่อเก็บข้อมูลนั้น มันจะทำให้การแก้ปัญหาง่ายขึ้นในครั้งต่อไป แต่แน่นอนอย่างที่ฉันมีในตอนนี้มันจะไม่เกิดขึ้นอีกครั้ง ;-) บางอย่างเช่นนี้:
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
คำสั่งด้านขวา (รวมกัน) มีลักษณะดังนี้:
`/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`
โปรดทราบว่าอาจจำเป็นต้องมีการดูแลเพิ่มเติมสำหรับบัญชีวงเล็บในชื่อไฟล์ (ภายใต้โลแคล) และ chown นั้นอาจยกเลิกการตั้งค่าบิต setuid และ setgid ที่ตั้งโดย chmod ในกรณีหลัง, ซึ่งจะทำให้แตก, พูด, / bin / su และ / usr / bin / sudo, คุณอาจต้องสลับลำดับของคำสั่งย่อย exec ด้านบน
หลังจากกู้คืนsudoหรือเลือกโหมดการกู้คืนที่บูต
เป็นไปได้ในการกู้คืนทั้งระบบโดยใช้debsumsที่ verifiy ความสมบูรณ์ของไฟล์และสิทธิ์
จากหน้าคน:
apt-get install --reinstall $(dpkg -S $(debsums -c) | cut -d : -f 1 | sort -u)
ติดตั้งแพ็กเกจใหม่ด้วยไฟล์ที่เปลี่ยนแปลง
หรือ จำกัด เส้นทางที่เฉพาะเจาะจงเช่น/usr
::
apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/usr ) | cut -d : -f 1 | sort -u)
หรือ จำกัด เส้นทางที่หลากหลายเช่น: /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
และdebsums -c
จะไม่รายงานไฟล์นั้น
ดูสิ่งที่คุณเรียกใช้เป็น sudo เสมอ
เธรดนี้อธิบายว่าคุณสามารถตั้งค่าการอนุญาตกลับคืนได้ด้วยตัวเองและสคริปต์ที่ช่วยในเรื่องนี้ แต่ก็ยังเป็นงานที่ยิ่งใหญ่ ค่อนข้างปฏิบัติตามเคล็ดลับในดอกยางเพื่อบันทึกแพ็กเกจที่ติดตั้งไว้ (เครื่องหมาย) และติดตั้งระบบปฏิบัติการใหม่และใช้เครื่องหมายแพ็คเกจที่บันทึกไว้เพื่อนำแอปพลิเคชันของคุณกลับมา
เท่าที่ฉันรู้มีเพียงแพ็กเกจ System V และ RPM ที่เสนอคำสั่งเพื่อซ่อมแซมการอนุญาตของไฟล์ บน System V (Solaris) คือ pkgchk โดยที่ RPM เป็น rpm --setperms
น่าเสียดายที่ดูเหมือนว่าจะไม่มีคำสั่งดังกล่าวสำหรับแพ็คเกจ Debian / Ubuntu - แต่ฉันอาจจะผิดที่นี่
แต่ถึงแม้จะได้รับความช่วยเหลือจากคำสั่งเหล่านี้มันก็ไม่ใช่งานที่ไม่สำคัญที่จะนำระบบของคุณกลับสู่สถานะที่มีสติและการซ่อมแซมคุณสามารถทำให้เกิดอันตรายใหม่กับระบบของคุณได้ง่าย - ถ้าคุณไม่ระวัง
นอกเหนือจากโจเซฟกล่าวว่าคุณไม่ใช่คนแรกและคุณจะไม่ใช่คนสุดท้ายที่จะป้อนคำสั่งดังกล่าว แต่ความคิดเพียงอย่างเดียวในการเปลี่ยนการอนุญาตไฟล์เป็น 777 ในระบบ Unix เป็นสิ่งบ่งชี้ที่ชัดเจนว่าคุณไม่ได้มีประสบการณ์กับระบบประเภทนี้มากนัก วิธีที่ดีที่สุดที่คุณสามารถทำได้ในสถานการณ์นี้คือการสำรองสิ่งที่คุณต้องการอีกครั้ง (โฮมไดเร็กตอรี่, ไฟล์กำหนดค่า, ไฟล์เมล?) และลองติดตั้งใหม่
และคุณควรระวังให้มากเมื่อคุณกู้คืนไฟล์ข้อมูลสำรองที่เสียหาย
โชคดี!
PS: ฉันแค่สงสัยว่าคุณต้องการแก้ปัญหาแบบใด?
ว้าวคุณฆ่ามัน มันตายแล้ว! ลองเข้าสู่ระบบและใช้เครื่องในฐานะรูท (เนื่องจากคุณเปิดใช้งาน) จากนั้นเปลี่ยนความเป็นสมาชิกกลุ่มของรูทเป็นผู้ใช้ สิ่งนี้อาจหรืออาจใช้ไม่ได้เพราะฉันไม่เคยลองมาก่อน แต่มันคุ้มค่ากับการถ่าย
คุณไม่สามารถเลิกทำการchmod
ดำเนินการได้ อย่างน้อยก็ไม่ใช่ในแง่ของการย้อนกลับไปสู่การตั้งค่าก่อนหน้าซึ่งเป็นสิ่งที่สถานการณ์นี้เรียกร้อง คุณสามารถยกเลิกการchmod
ดำเนินการได้โดยการนำchmod
แต่ละไฟล์และไดเรกทอรีกลับสู่โหมดดั้งเดิม - แต่มันไม่เหมือนกันทั้งหมด การกำหนดโหมดดั้งเดิมนั้นยุ่งยาก (ตามที่กล่าวไว้ในคำตอบอื่น ๆ )