ถ้าฉันวิ่ง:
sudo chown -R user:user /
ฉันสามารถเปลี่ยนกลับเป็นแบบเดิมก่อนที่จะใช้งานได้หรือไม่
ถ้าฉันวิ่ง:
sudo chown -R user:user /
ฉันสามารถเปลี่ยนกลับเป็นแบบเดิมก่อนที่จะใช้งานได้หรือไม่
คำตอบ:
ในระยะสั้น: ไม่
คุณจะต้องกู้คืนจากข้อมูลสำรอง (เครื่องมือสำรองข้อมูลบางตัวอาจมีตัวเลือกเพื่อคืนค่าการอนุญาตเท่านั้นส่วนอื่น ๆ สามารถแสดงรายการไฟล์สำรองข้อมูลด้วยสิทธิ์ของพวกเขาและคุณสามารถใช้เพื่อแก้ไขระบบของคุณได้)
หากคุณไม่มีข้อมูลสำรองคุณจะต้องแก้ไขสิ่งเหล่านั้นด้วยตนเอง
sudo chown -R user:user /
นั้นอาจเป็นไปได้ว่าระบบถูกปิดใช้งานอย่างหนักจนคุณไม่สามารถกู้คืนจากข้อมูลสำรองได้
chown
อธิบายไว้เป็นไปได้ว่าคุณจะไม่สามารถทำอะไรได้ก่อนที่จะติดตั้งระบบทั้งหมดตั้งแต่เริ่มต้น ระบบยังไม่มีroot
บัญชีและsudo
จะไม่ทำงาน มันอาจคุ้มค่าที่จะลองบูทกับเชลล์ผู้ใช้คนเดียว แต่อย่าคาดหวังให้มันทำงานได้
sudo
หรือแม้กระทั่งsu
จะยังคงทำงานต่อไปเมื่อไฟล์ที่เกี่ยวข้องทั้งหมดเป็นเจ้าของโดยuser
เป็นเรื่องที่แตกต่างกัน (อาจไม่ใช่เพราะสิ่งอื่น ๆ บิต SUID บน exe จะหายไป)
เฉพาะในกรณีที่คุณรู้จักผู้ใช้และกลุ่มที่เป็นเจ้าของของทุกไฟล์และไดเรกทอรีภายใต้/
ไดเรกทอรีของคุณ
แม้กระทั่งตอนนี้คุณได้ขัดขวางการเป็นเจ้าของไฟล์ระบบที่สำคัญซึ่งจำเป็นต้องเป็นเจ้าของโดยรูทรวมถึงsudo
คำสั่ง คุณอาจต้องติดตั้งฮาร์ดไดรฟ์ในระบบอื่น - และระวังว่าระบบอื่นอาจไม่มีการแมป UID และ GID แบบเดียวกับที่คุณเพิ่งปิดบัง
ทำสำเนาของฮาร์ดไดรฟ์ทั้งหมดถ้าทำได้จากนั้นติดตั้งระบบปฏิบัติการใหม่ เมื่อคุณทำเสร็จแล้วคุณสามารถลองคัดลอกไฟล์กลับไปที่ระบบที่เพิ่งทำความสะอาดใหม่และกู้คืนความเป็นเจ้าของของพวกเขา คุณอาจสันนิษฐานได้ (แม้ว่าจะไม่ได้ 100% อย่างน่าเชื่อถือ) ว่าทุกสิ่งภายใต้/home/foo
นั้นเป็นของผู้ใช้foo
และไฟล์เมลสปูลภายใต้/var/mail
นั้นเป็นของผู้ใช้ที่เหมาะสม (ถ้าคุณมีอีเมลในระบบ) คุณสามารถหนีไปได้โดยไม่เรียกคืนไฟล์ส่วนใหญ่ที่ไม่ได้อยู่ภายใต้ระบบ/home
ทั้งนี้ขึ้นอยู่กับสิ่งที่คุณทำกับระบบ
จากนั้นเริ่มสร้างนิสัยการตรวจสอบคำสั่งใด ๆ ที่คุณเรียกใช้sudo
ก่อนที่จะตีEnterซ้ำ
หาก distro ของคุณเป็นแบบ RPM คุณสามารถกู้คืนไฟล์ที่ติดตั้งโดยแพ็คเกจ rpm เท่านั้น
ในการกู้คืนการอนุญาตแพ็คเกจทั้งหมด:
rpm --setperms -a
วิธีคืนค่าเจ้าของแพ็คเกจทั้งหมด (ผู้ใช้ / กลุ่ม):
rpm --setugids -a
หาก -a ไม่ทำงานคุณสามารถรัน bash loop:
สำหรับการอนุญาต:
for x in $(rpm -qa); do rpm --setperms $x; done
สำหรับเจ้าของ:
for x in $(rpm -qa); do rpm --setugids $x; done
แยกจาก: http://www.sysadmit.com/2016/10/linux-restaurar-permisos-de-un-paquete.html
คุณสามารถจัดเก็บเวอร์ชันปัจจุบันแล้วแยกวิเคราะห์เพื่อยกเลิกโดยใช้ตัวเลือก -v
chown -R nobody:nobody -v /tmp/some_file > /tmp/chown.log
cat /tmp/chown.log
เนื้อหาจะเป็น:
changed ownership of `/tmp/some_file' from me:users to nobody:nobody
การใช้ภาษาสคริปต์ที่คุณชื่นชอบและการแสดงออกปกติคุณสามารถดำเนินการกระบวนการที่เจ็บปวดในการคืนค่าพวกเขา (ถ้าคุณต้อง)
ฉันขอแนะนำไม่ให้ทำซ้ำ chown บน / เพราะคุณจะเปิดเผย / etc / shadow หรือไฟล์สำคัญอื่น ๆ
ถ้า distro ใช้ rpm-based:
rpm -a --setperms
sudo chown -R user:user ..
อาจมีผลเช่นเดียวกับคำสั่งที่กล่าวถึงที่นี่หากคุณอยู่ต่ำกว่ารูทของระบบไฟล์ อย่าพยายามทำสิ่งนี้