คำสั่งเพื่อปลดล็อกไฟล์“ ถูกล็อค” ใน OS X


96

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

คำสั่งเทอร์มินัลคืออะไรเพื่อปลดล็อกไฟล์ "ถูกล็อค" ใน OSX

คำตอบ:


136

หากต้องการปลดล็อกไฟล์คุณสามารถใช้:

chflags -R nouchg /PATH/TO/DIRECTORY/WITH/LOCKED/FILES/
  • chflags = เปลี่ยนค่าสถานะในไฟล์ / โฟลเดอร์เช่น "ล็อค"
  • -R = เรียกซ้ำหรือสำหรับทุกอย่างและติดตามไดเรกทอรีภายในไดเรกทอรีที่ระบุ
  • nouchg = หมายถึงไฟล์ที่สามารถเปลี่ยนแปลงได้
  • /PATH/= แน่นอนเป็นเส้นทางไปยังไฟล์ที่คุณต้องการเปลี่ยน สิ่งที่ชอบ: ~/Sites/mysite/directory/with/locked/files/ทำงานได้ดี

1
ดูเหมือนว่าฉันจะพบทางออกเช่นเดียวกับที่คุณตอบสนอง ฉันยังได้เรียนรู้ว่า -R นั้นใช้เพื่อเรียกซ้ำ ดังนั้นในการปลดล็อกไฟล์ทั้งหมดในไดเรกทอรีปัจจุบันให้ใช้ <br/> chflags nochg * <br/> และเปลี่ยนเพียงหนึ่งไฟล์ <br/> chflags nouchg onefile.txt ดู: mehtanirav.com/2009/04/16/recursively -unlock-files-on-mac-os-x
Michael Prescott

3
มีการตั้งค่าสถานะอื่นที่เกี่ยวข้องschgซึ่งเป็นระบบที่ไม่สามารถเปลี่ยนแปลงได้ธง (ดูdeveloper.apple.com/library/mac/documentation/Darwin/Reference/ ...... ) คำสั่งเพื่อล้างมันคล้ายกัน:sudo chflags noschg PATH/TO/LOCKED/FILE
Andy Madge

1
ใช้/bin/ls -lO /path/to/fileเพื่อดู macOS flagsในไฟล์ สังเกตเห็นเส้นทางแบบเต็มไปยังlsคำสั่งmacOS ' ' สิ่งนี้จำเป็นถ้าคุณติดตั้ง GNU Coreutils
Tony Barganski

15

คุณสามารถใช้งานSetFile -a lได้แม้ว่าจะทำสิ่งเดียวกันกับchflags nouchg:

SetFile -a l file.ext

-a lปลดล็อคบิตสำหรับแอตทริบิวต์ที่ถูกล็อค คุณสามารถติดตั้ง SetFile โดยการดาวน์โหลดแพคเกจเครื่องมือบรรทัดคำสั่งจากการตั้งค่า Xcode หรือจากdeveloper.apple.com/downloads


นี่เป็นวิธีการที่ใช้ได้กับฉันบน macOS Sierra ด้วยไฟล์ที่คัดลอกมาจากเครื่อง Windows ฉันใช้: SetFile -al ~ / Documents / Arduino / Samples / *
callisto

14

สิ่งนี้มีประโยชน์หากคุณต้องการค้นหาทั้งไดเรกทอรีและปลดล็อกไฟล์ทั้งหมด

ในเทอร์มินัลcdไปยังไดเรกทอรี

คำสั่งนี้จะพบและพิมพ์รายชื่อของพวกเขา

$ find . -flags uchg

คำสั่งนี้จะปลดล็อคพวกเขา

$ find . -flags uchg -exec chflags nouchg {} \;

คุณสามารถใช้คำสั่งแรกเพื่อตรวจสอบอีกครั้งว่าไฟล์ทั้งหมดถูกปลดล็อกหลังจากรันคำสั่งที่สองvoilà!


1
ในขณะที่ใช้งานได้มันอาจช้ามากสำหรับไฟล์จำนวนมากเพราะมันจะเริ่มกระบวนการใหม่สำหรับแต่ละไฟล์
Richard Waite

0

มีจริงสองธงล็อคที่สามารถตั้งค่าในไฟล์คือ: และuchg schgไฟล์ที่มีการuchgตั้งค่าสถานะนั้นไม่สามารถเปลี่ยนแปลงได้โดยผู้ใช้ปกติ แต่ระบบไม่สามารถเปลี่ยนแปลงได้ ไฟล์ที่มีการschgตั้งค่าสถานะจะไม่เปลี่ยนรูปโดยทุกคน สามารถตั้งค่าสถานะทั้งสองพร้อมกันได้

หากต้องการดูว่ามีการตั้งค่าสถานะใดบนไฟล์ให้ใช้

ls -lO FILE

นั่นคืออักษรตัวใหญ่ o ไม่ใช่ศูนย์

หากต้องการปลดล็อกไฟล์แน่นอนคุณจะต้องดำเนินการ

chflags nouchg,noschg FILE

ราวกับว่าทั้งสองถูกตั้งค่าสถานะและคุณลบเพียงหนึ่งอย่างนั้นมันจะยังคงถูกล็อค

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