“ @” มีความหมายอะไรในการอนุญาตให้ใช้ไฟล์ unix


49

ฉันมีไฟล์ที่ได้รับอนุญาตบน MacBook Pro ของฉัน:

-rwxr-xr-x@ 1 root wheel 101K Feb 29 17:09 apachectl

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

เช่นเดียวกับพื้นหลังบางส่วนฉันคัดลอกสิ่งนี้จากการสำรองข้อมูล Time Machine

คำตอบ:


35

หากไฟล์หรือไดเรกทอรีมีคุณสมบัติเพิ่มเติมคุณจะเห็น @ ในฟิลด์สิทธิ์ สำหรับข้อมูลความปลอดภัยเพิ่มเติม (ACL) คุณจะเห็นเครื่องหมาย +

จากman lsบน OS X:

-@      Display extended attribute keys and sizes in long (-l) output.

xattrโปรแกรมสามารถใช้ในการแสดงและจัดการกับคุณสมบัติการขยาย ลองดูว่ามีอะไรบ้างก่อนตัดสินใจไปในขณะที่ลบแอตทริบิวต์เหล่านั้นออกไป ลองดูที่ man page สำหรับ xattr ด้วยเช่นกัน

ตัวอย่างรวดเร็วจากตัวอย่างโค้ดประนีประนอม PHP ที่ฉันเก็บไว้เพื่อการอ้างอิง:

$ ls -@l php-compromise.php 
-rw-r--r--@ 1 user  group  502620 Jul  5  2011 php-compromise.php
    com.apple.FinderInfo        32 
    com.apple.TextEncoding      15 

22

ขอบคุณ @Jeff สำหรับการแก้ไข ฉันคิดถึงคุณ

  • @จะแสดงแอตทริบิวต์การขยายการตั้งค่า
  • +จะปรากฏสำหรับ ACL
  • หากคุณมีทั้งคุณลักษณะและ ACL @แล้วคุณจะเห็น

รันคำสั่งls -le filenameเพื่อดูว่ามีชุด ACL อยู่หรือไม่

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

เพื่อกำจัด ACL ที่รันecho | sudo chmod -E filenameสำหรับไฟล์หรือecho | sudo chmod -R -E directory nameสำหรับไดเร็กทอรี

ดูหน้าคน chmod


ขอบคุณสำหรับคำตอบ ฉันจะกำจัดมันได้อย่างไร
VinnyD

อัปเดตพร้อมคำตอบที่ฉันเชื่อว่าควรใช้งานได้
Zoredache

@Zoredache สิทธิ์ ACL มาพร้อมกับเครื่องหมายบวก @ คือ "แอตทริบิวต์ที่ขยาย"

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

ไม่เป็นไรฉันได้ booted mac แล้ว หากคุณมี@แอตทริบิวต์ขยายและ+ชุด acl ก็ปรากฏว่าคำสั่ง ls @จะแสดง เนื่องจากเขามีปัญหาในการเข้าถึงไฟล์ดูเหมือนว่าเป็นไปได้ว่าปัญหามีแนวโน้มว่าเขามีปัญหากับ ACL
Zoredache

8

ด้วยแอ็ตทริบิวต์กักกันแอปเปิ้ล chmod ไม่เพียงพอที่จะลบออก

คุณต้องลบแอตทริบิวต์อย่างชัดเจน:

sudo xattr -d com.apple.quarantine my_file

OP ถามด้วยว่า"สิ่งใดที่ @ แทน"
Kamafeather

3

การ@ย่อมาจากคุณลักษณะเพิ่มเติมนอกเหนือจากการอนุญาตไฟล์ unix มาตรฐาน

ตรวจสอบคุณสมบัติเพิ่มเติม:

ls -l@

รีเซ็ตแอตทริบิวต์เพิ่มเติมทั้งหมดสำหรับไฟล์เดียว:

sudo xattr -c <filepath>

รีเซ็ตแอตทริบิวต์เพิ่มเติมทั้งหมดซ้ำ:

sudo xattr -rc <directory>
sudo chmod -R -N <directory>

ตรวจสอบกับ macOS High Sierra (10.13) และ macOS Mojave (10.14.6)


0

ผมพบว่า-Eหรือแม้กระทั่งมองไม่เห็นจริงเมื่อใช้-N sudoวิธีเดียวที่ฉันสามารถแก้ไขได้คือการล็อกอินในฐานะรูท


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