จะเปลี่ยนคำสั่ง chown ได้อย่างไร?


17

ถ้าฉันวิ่ง:

sudo chown -R user:user /

ฉันสามารถเปลี่ยนกลับเป็นแบบเดิมก่อนที่จะใช้งานได้หรือไม่


1
เช่นเดียวกับการเตือนผู้อื่น: คำสั่งต่อไปนี้sudo chown -R user:user ..อาจมีผลเช่นเดียวกับคำสั่งที่กล่าวถึงที่นี่หากคุณอยู่ต่ำกว่ารูทของระบบไฟล์ อย่าพยายามทำสิ่งนี้
passerby51

คำตอบ:


22

ในระยะสั้น: ไม่

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

หากคุณไม่มีข้อมูลสำรองคุณจะต้องแก้ไขสิ่งเหล่านั้นด้วยตนเอง


หลังจากsudo chown -R user:user /นั้นอาจเป็นไปได้ว่าระบบถูกปิดใช้งานอย่างหนักจนคุณไม่สามารถกู้คืนจากข้อมูลสำรองได้
Keith Thompson

1
หากคุณไม่สามารถกู้คืนส่วนที่สำคัญของข้อมูลผู้ใช้ของคุณในสถานการณ์นี้จากการสำรองข้อมูลของคุณ "การสำรองข้อมูล" ของคุณไม่ใช่ข้อมูลจริง หากคุณไม่สามารถกู้คืนทั้งระบบได้คุณจะยังคงสามารถติดตั้งฐานอีกครั้งแล้วเรียกคืนจากการสำรองข้อมูล อาจเป็นไปได้ว่าจำเป็นต้องมีซีดีสดหรือการบู๊ตเครือข่ายในกรณีนี้ แต่หากกลยุทธ์การสำรองข้อมูลของคุณไม่สามารถกู้คืนได้ก็ไม่ดีพอ
Mat

ความคิดเห็นก่อนหน้าของฉันอาจไม่ชัดเจน ระบบการทำงานสามารถคืนค่าได้โดยใช้ระบบเอง เมื่อคุณทำตามที่chownอธิบายไว้เป็นไปได้ว่าคุณจะไม่สามารถทำอะไรได้ก่อนที่จะติดตั้งระบบทั้งหมดตั้งแต่เริ่มต้น ระบบยังไม่มีrootบัญชีและsudoจะไม่ทำงาน มันอาจคุ้มค่าที่จะลองบูทกับเชลล์ผู้ใช้คนเดียว แต่อย่าคาดหวังให้มันทำงานได้
Keith Thompson

1
บัญชีรูทไม่ได้หายไป (ยังเป็น UID 0); มันไม่ได้เป็นเจ้าของไฟล์ใด ๆ อีกต่อไป แต่รูทจะข้ามการตรวจสอบสิทธิ์ตามปกติอย่างไรก็ตาม ไม่ว่าจะsudoหรือแม้กระทั่งsuจะยังคงทำงานต่อไปเมื่อไฟล์ที่เกี่ยวข้องทั้งหมดเป็นเจ้าของโดยuserเป็นเรื่องที่แตกต่างกัน (อาจไม่ใช่เพราะสิ่งอื่น ๆ บิต SUID บน exe จะหายไป)
jw013

6

เฉพาะในกรณีที่คุณรู้จักผู้ใช้และกลุ่มที่เป็นเจ้าของของทุกไฟล์และไดเรกทอรีภายใต้/ไดเรกทอรีของคุณ

แม้กระทั่งตอนนี้คุณได้ขัดขวางการเป็นเจ้าของไฟล์ระบบที่สำคัญซึ่งจำเป็นต้องเป็นเจ้าของโดยรูทรวมถึงsudoคำสั่ง คุณอาจต้องติดตั้งฮาร์ดไดรฟ์ในระบบอื่น - และระวังว่าระบบอื่นอาจไม่มีการแมป UID และ GID แบบเดียวกับที่คุณเพิ่งปิดบัง

ทำสำเนาของฮาร์ดไดรฟ์ทั้งหมดถ้าทำได้จากนั้นติดตั้งระบบปฏิบัติการใหม่ เมื่อคุณทำเสร็จแล้วคุณสามารถลองคัดลอกไฟล์กลับไปที่ระบบที่เพิ่งทำความสะอาดใหม่และกู้คืนความเป็นเจ้าของของพวกเขา คุณอาจสันนิษฐานได้ (แม้ว่าจะไม่ได้ 100% อย่างน่าเชื่อถือ) ว่าทุกสิ่งภายใต้/home/fooนั้นเป็นของผู้ใช้fooและไฟล์เมลสปูลภายใต้/var/mailนั้นเป็นของผู้ใช้ที่เหมาะสม (ถ้าคุณมีอีเมลในระบบ) คุณสามารถหนีไปได้โดยไม่เรียกคืนไฟล์ส่วนใหญ่ที่ไม่ได้อยู่ภายใต้ระบบ/homeทั้งนี้ขึ้นอยู่กับสิ่งที่คุณทำกับระบบ

จากนั้นเริ่มสร้างนิสัยการตรวจสอบคำสั่งใด ๆ ที่คุณเรียกใช้sudo ก่อนที่จะตีEnterซ้ำ


6

หาก 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


1

คุณสามารถจัดเก็บเวอร์ชันปัจจุบันแล้วแยกวิเคราะห์เพื่อยกเลิกโดยใช้ตัวเลือก -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 หรือไฟล์สำคัญอื่น ๆ


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