วิธีรีเซ็ตการตั้งค่าการอนุญาตโฟลเดอร์เป็นค่าเริ่มต้นใน Ubuntu


19

ฉันเพิ่งพิมพ์คำสั่ง

sudo chmod 777 -R /

หลังจากนั้นบางสิ่งที่ชอบ

sudo -i

ทำงานไม่ปกติ ดังนั้นฉันสงสัยว่ามีวิธีใดบ้างที่ฉันสามารถรีเซ็ตสิทธิ์ของโฟลเดอร์เป็นสถานะดั้งเดิมได้


ฉันไม่คิดว่า linux จะจดจำการตั้งค่าการอนุญาตก่อนหน้านี้ ลองสร้างไฟล์ใหม่และดูว่าการตั้งค่าการอนุญาตที่ได้รับคืออะไร
thecoshman

โอ้เดี๋ยวก่อนฉันเห็นสิ่งที่คุณทำที่นั่น นี่อาจเป็นสถานการณ์ที่ติดตั้งใหม่ เพียงแค่สำรองข้อมูลของคุณจดบันทึกแอปพลิเคชันที่คุณติดตั้งไว้ ขอให้สนุกทำไมไม่ลอง 10.4! (ชื่อที่ดีที่สุดเคย btw ... สิ่งที่วิทยุหมายถึงอะไร?)
thecoshman

ฉันกล้าให้คุณหาคนที่ไม่ได้ทำสิ่งที่แน่นอน: D มันเป็นสถานการณ์ที่ยุ่งยากมาก คุณสามารถแก้ไขได้ลองคำตอบของ jlovi แต่มันต้องใช้เวลาและความพยายามและมันจะทำให้หงุดหงิด เพิ่งติดตั้งใหม่และรับไปด้วย และไม่เคยใช้ sudo chmod นอกเสียจากคุณจะรู้ว่าคุณกำลังทำอะไรอยู่
Jack Mayerz

คำตอบ:


17

เป็นไปได้ที่จะกลับมาจากสถานการณ์ที่ยุ่งเหยิงนี้

ฉันพบปัญหาแบบเดิมอีกครั้ง (ข้อผิดพลาดบางอย่างในสคริปต์ที่ฉันเขียน) และแก้ไขได้ แต่คุณต้องขอความช่วยเหลือจากผู้เชี่ยวชาญ ระวังตัวมาก!

ก่อนอื่นสถานการณ์ของฉันง่ายขึ้นที่จะแก้ปัญหาเพราะฉันมีระบบบูทคู่ (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:

  1. สิ่งสำคัญสำหรับเรื่องนี้คือการทำให้ดิสก์การติดตั้งซิงโครไนซ์กับรุ่นที่คุณใช้อยู่หรืออย่างน้อยก็ทำงานได้กับเวอร์ชั่นอูบุนตูปัจจุบัน
  2. ตอนนี้ฉันมีคำสั่งนี้ใน 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 ด้านบน


เพียงคำตอบที่ยอดเยี่ยม ฉันชี้ไปที่มันในถาม Ubuntu
ส่วนตัว

เป็นโซลูชั่นที่สมบูรณ์แบบสำหรับฉัน!

2

หลังจากกู้คืน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)

debsums ตรวจสอบการอนุญาตจริงหรือไม่ ฉันพยายามchmod a-x /bin/pingและdebsums -cจะไม่รายงานไฟล์นั้น
reox

0

ดูสิ่งที่คุณเรียกใช้เป็น sudo เสมอ

เธรดนี้อธิบายว่าคุณสามารถตั้งค่าการอนุญาตกลับคืนได้ด้วยตัวเองและสคริปต์ที่ช่วยในเรื่องนี้ แต่ก็ยังเป็นงานที่ยิ่งใหญ่ ค่อนข้างปฏิบัติตามเคล็ดลับในดอกยางเพื่อบันทึกแพ็กเกจที่ติดตั้งไว้ (เครื่องหมาย) และติดตั้งระบบปฏิบัติการใหม่และใช้เครื่องหมายแพ็คเกจที่บันทึกไว้เพื่อนำแอปพลิเคชันของคุณกลับมา


0

เท่าที่ฉันรู้มีเพียงแพ็กเกจ System V และ RPM ที่เสนอคำสั่งเพื่อซ่อมแซมการอนุญาตของไฟล์ บน System V (Solaris) คือ pkgchk โดยที่ RPM เป็น rpm --setperms

น่าเสียดายที่ดูเหมือนว่าจะไม่มีคำสั่งดังกล่าวสำหรับแพ็คเกจ Debian / Ubuntu - แต่ฉันอาจจะผิดที่นี่

แต่ถึงแม้จะได้รับความช่วยเหลือจากคำสั่งเหล่านี้มันก็ไม่ใช่งานที่ไม่สำคัญที่จะนำระบบของคุณกลับสู่สถานะที่มีสติและการซ่อมแซมคุณสามารถทำให้เกิดอันตรายใหม่กับระบบของคุณได้ง่าย - ถ้าคุณไม่ระวัง

นอกเหนือจากโจเซฟกล่าวว่าคุณไม่ใช่คนแรกและคุณจะไม่ใช่คนสุดท้ายที่จะป้อนคำสั่งดังกล่าว แต่ความคิดเพียงอย่างเดียวในการเปลี่ยนการอนุญาตไฟล์เป็น 777 ในระบบ Unix เป็นสิ่งบ่งชี้ที่ชัดเจนว่าคุณไม่ได้มีประสบการณ์กับระบบประเภทนี้มากนัก วิธีที่ดีที่สุดที่คุณสามารถทำได้ในสถานการณ์นี้คือการสำรองสิ่งที่คุณต้องการอีกครั้ง (โฮมไดเร็กตอรี่, ไฟล์กำหนดค่า, ไฟล์เมล?) และลองติดตั้งใหม่

และคุณควรระวังให้มากเมื่อคุณกู้คืนไฟล์ข้อมูลสำรองที่เสียหาย

โชคดี!

PS: ฉันแค่สงสัยว่าคุณต้องการแก้ปัญหาแบบใด?


0

ว้าวคุณฆ่ามัน มันตายแล้ว! ลองเข้าสู่ระบบและใช้เครื่องในฐานะรูท (เนื่องจากคุณเปิดใช้งาน) จากนั้นเปลี่ยนความเป็นสมาชิกกลุ่มของรูทเป็นผู้ใช้ สิ่งนี้อาจหรืออาจใช้ไม่ได้เพราะฉันไม่เคยลองมาก่อน แต่มันคุ้มค่ากับการถ่าย


0

คุณไม่สามารถเลิกทำการchmodดำเนินการได้ อย่างน้อยก็ไม่ใช่ในแง่ของการย้อนกลับไปสู่การตั้งค่าก่อนหน้าซึ่งเป็นสิ่งที่สถานการณ์นี้เรียกร้อง คุณสามารถยกเลิกการchmodดำเนินการได้โดยการนำchmodแต่ละไฟล์และไดเรกทอรีกลับสู่โหมดดั้งเดิม - แต่มันไม่เหมือนกันทั้งหมด การกำหนดโหมดดั้งเดิมนั้นยุ่งยาก (ตามที่กล่าวไว้ในคำตอบอื่น ๆ )

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.