tar สงวนสิทธิ์ไว้หรือไม่หาก ID ผู้ใช้เปลี่ยนไป


20

ฉันต้องการสำรองข้อมูลด้วยตัวเลือก "p" บนคำสั่ง tar ปัญหาคือสถานที่ที่ฉันจะกู้คืนข้อมูลนี้จะมีผู้ใช้เดียวกันทั้งหมด แต่ผู้ใช้เหล่านั้นอาจมี ID ที่แตกต่างกัน สิ่งนี้สร้างความแตกต่างให้กับ tar หรือจะเรียกคืนสิทธิ์อย่างถูกต้องด้วยชื่อผู้ใช้หรือไม่?

คำตอบ:


9

tarบันทึกการอนุญาตตาม UID และ GID ไม่ใช่จากสายอักขระที่เกี่ยวข้อง ดังนั้นหาก UID บนเซิร์ฟเวอร์เดียวคือ 3300 และนั่นเชื่อมโยงกับ 'bob' บนเซิร์ฟเวอร์ใหม่ไฟล์นั้นจะเป็นเจ้าของโดยผู้ใช้ที่มี UID 3300

ทุกอย่างเสมือนจริง (ฉันต้องการพูดทุกอย่าง แต่คุณไม่มีทางแน่ใจได้ 100%) บน UNIX ใช้ค่า UID: GID เพราะนั่นคือสิ่งที่ถูกจัดเก็บจริงในระดับระบบไฟล์ ชื่อเป็นเพียงการค้นหาอย่างง่ายในไฟล์ passwd การตรวจสอบเบื้องต้นจะทำโดยใช้ค่าตัวเลข


อ่าไม่ดี ... ฉันเดาว่าในสถานการณ์ส่วนใหญ่มันเหมาะสม น่าเสียดายไม่ใช่สำหรับฉัน ... ขอบคุณ EightBitTony
Marius

3
คุณน่าจะหมายถึง GID (ตัวระบุกลุ่ม) ไม่ใช่ GUID (ตัวระบุที่ไม่ซ้ำทั่วโลก)
CVn

6
GNU tar จะบันทึกข้อมูลชื่อผู้ใช้ / กลุ่มด้วยเช่นกันเพราะฉันสามารถดูได้หากฉันแสดงรายการไฟล์เก็บถาวรในเครื่องที่ไม่มีผู้ใช้เหล่านั้น จะต้องมีวิธีที่จะใช้มันในระหว่างการสกัด
Rob H

3
คำตอบนี้ไม่ถูกต้อง tar ไม่ชื่อเจ้าของบันทึก
Steffen Heil

55

สรุปคำตอบก่อนหน้าและเพิ่มข้อมูลสำคัญ:

  • เมื่อมีการสร้างที่เก็บtarมักจะรักษาแฟ้มผู้ใช้และรหัสกลุ่มเว้นแต่บอกอย่างอื่นที่มี,--owner=NAME --group=NAMEแต่ยังคงมีผู้ใช้และกลุ่มที่เกี่ยวข้องกับแต่ละไฟล์เสมอ

  • tar GNU และรุ่นอื่น ๆ อาจจะของtar, นอกจากนี้ยังมีการจัดเก็บผู้ใช้และกลุ่มชื่อเว้นแต่--numeric-ownerจะใช้ bsdtar ยังจัดเก็บชื่อผู้ใช้และกลุ่มตามค่าเริ่มต้น แต่การสนับสนุน--numeric-ownerตัวเลือกเมื่อสร้างไม่ปรากฏขึ้นจนกว่า bsdtar 3.0 (โปรดทราบว่า bsdtar สนับสนุนตัวเลือกเมื่อแยกออกมานานกว่า)

  • เมื่อแยกเป็นผู้ใช้ปกติไฟล์ทั้งหมดจะเสมอเป็นเจ้าของโดยผู้ใช้ และจะไม่แตกต่างกันเนื่องจากการแตกไฟล์กำลังสร้างไฟล์ใหม่บนระบบไฟล์และผู้ใช้ทั่วไปไม่สามารถสร้างไฟล์และให้ความเป็นเจ้าของแก่ผู้อื่นได้

  • เมื่อแตกไฟล์เป็นรูtarโดยค่าเริ่มต้นจะเรียกคืนความเป็นเจ้าของไฟล์ที่แตกแล้วยกเว้นว่า --no-same-ownerจะใช้ซึ่งจะให้สิทธิ์การเป็นเจ้าของรูทเอง

  • ใน GNU น้ำมันดิน bsdtar และรุ่นอื่น ๆ อาจจะของtarเจ้าของเรียกคืนจะทำโดยผู้ใช้ (และกลุ่ม) ชื่อถ้าข้อมูลที่อยู่ในการจัดเก็บและมีผู้ใช้ที่ตรงกันในระบบปลายทาง มิฉะนั้นจะเรียกคืนตาม ID หาก--numeric-ownerมีการระบุตัวเลือกชื่อผู้ใช้และกลุ่มจะถูกละเว้น

  • สิทธิ์และการประทับเวลานอกจากนี้ยังมีการบันทึกไว้ในการจัดเก็บและเรียกคืนโดยเริ่มต้นเว้นแต่ตัวเลือก--no-same-permissionsและ / หรือ--touchมีการใช้ เมื่อแยกโดยผู้ใช้ผู้ใช้umaskจะถูกลบออกจากการอนุญาตเว้นแต่--same-permissionsจะใช้

  • --preserve-permissionsและ--same-permissionsเป็นชื่อแทนและมีฟังก์ชันการทำงานเช่นเดียวกับ-p

หวังว่านี่จะช่วยชี้แจงปัญหา! :)


3
คำตอบที่ยอดเยี่ยม; ตอบคำถามนี้รวมถึงคำถามอื่น ๆ ที่อาจเกิดขึ้นในหัวข้อ
user1107893

ควรสังเกตว่าเฉพาะ GNU รุ่นล่าสุดเท่านั้นที่อนุญาตtarให้ระบุชื่อโดยพลการใน--ownerหรือ--groupที่ผ่านมาtarทำการค้นหาโดยไม่คิดค่าใช้จ่ายในเครื่องปัจจุบัน/etc/passwdและปฏิเสธที่จะทำงานหากไม่มีการแข่งขัน
Matteo Italia

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

@CMCDragonkai: --ownerและ--numeric-ownerไม่ได้เป็นเอกสิทธิ์เฉพาะบุคคลและให้บริการเพื่อวัตถุประสงค์ที่แตกต่างกันมาก: --owner=USERNAMEจะแทนที่ไฟล์และเจ้าของ dirs เมื่อทำการเก็บถาวรไฟล์ในขณะที่--numeric-ownerจะไม่เก็บชื่อผู้ใช้เพียงแค่ตัวเลข ID ของเขา
MestreLion

4

ใช้ตัวเลือก --same-owner กับ GNU tar ดูhttp://www.gnu.org/software/tar/manual/html_section/Attributes.html


นี่เป็นเอกสารเริ่มต้นสำหรับ superusers และดูเหมือนว่าจะตอบคำถามของ OP แตกต่างจากคำตอบที่ยอมรับ (ลิงค์บอกว่าเมื่อ GNU tar เรียกคืนโดยใช้ --same-owner มันจะค้นหาชื่อใน / etc / passwd ก่อน) ปัญหาที่โดดเด่นเพียงอย่างเดียวคือรุ่น tar ของ OP ใช้ --same-owner
ไมค์ Sherrill 'Cat Recall'

OP ใช้ลินุกซ์ distro บางตัวดีกว่ามีโอกาสใช้ GNU tar หรือ methinks และไปตามเอกสารเป็นไปได้ในขณะที่คำตอบที่ได้รับการยอมรับบ่งชี้ว่ามันไม่ใช่ ...
Colin 't Hart

@Catcall - ขอโทษฉันยอมรับคำตอบโดยไม่ต้องมีโอกาสทดสอบ บางครั้งฉันก็แค่เชื่อคนตาบอด แต่ถึงกระนั้นคนที่ตอบว่าถูกต้องเพราะฉันไม่ได้กู้คืน "--same-owner" จากนั้นคุณเพิ่มคำตอบลงไป น่าเสียดายที่ฉันไม่สามารถยอมรับทั้งคู่ได้ ฉันใช้เดเบียนบีบซึ่งสนับสนุน "- เจ้าของ - เจ้าของ" แน่นอน ขอบคุณสำหรับทิป.
Marius

@Marius: ฉันค่อนข้างมั่นใจว่าคุณสามารถเปลี่ยนคำตอบที่ยอมรับได้ทุกเมื่อที่คุณต้องการ (ฉันเพิ่งจะชี้ให้เห็นว่าฉันไม่ได้ให้คำตอบใด ๆ สำหรับคำถามนี้แสดงความคิดเห็นเท่านั้นฉันไม่ได้มีตัวแทนใด ๆ ที่ถือหุ้น)
ไมค์ Sherrill 'Cat Recall'

4

หากคุณพยายามถ่ายโอนไฟล์ระหว่างสองระบบ rsync จะตั้งค่าการอนุญาตตามชื่อผู้ใช้แทน uid โดยค่าเริ่มต้นดูที่ชื่อผู้ใช้ที่ปลายทั้งสอง เฉพาะในกรณีที่ผู้ใช้ไม่มีอยู่ในระบบใดระบบหนึ่งจะคัดลอกมันด้วย uid เว้นแต่คุณจะบอกเป็นอย่างอื่น


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