Không có ý nghĩa gì trong phạm vi quyền của tập tin unix?


49

Tôi có một tệp với các quyền sau trên MacBook Pro của mình:

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

@đứng cho? Tôi không thể thực thi tập tin và đây là điều duy nhất nổi bật với tôi. Làm sao để tôi thoát khỏi nó?

Cũng giống như một số nền tảng, tôi đã sao chép nó từ bản sao lưu Time Machine.

Câu trả lời:


35

Nếu tệp hoặc thư mục có thuộc tính mở rộng, bạn sẽ thấy @ trong trường quyền. Để biết thông tin bảo mật mở rộng (ACL), bạn sẽ thấy dấu +.

Từ man lstrên OS X:

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

Các xattrchương trình có thể được sử dụng để hiển thị và thao tác các thuộc tính mở rộng. Tuy nhiên, hãy xem những gì ở đó trước khi quyết định đi trong khi xóa các thuộc tính đó. Chắc chắn hãy xem nhanh trang man cho xattr.

Một ví dụ nhanh từ một số ví dụ về mã thỏa hiệp PHP tôi giữ xung quanh để tham khảo:

$ 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

Cảm ơn @Jeff đã sửa chữa. Tôi đã nhớ rất nhiều.

  • Các @sẽ được hiển thị với một thuộc tính mở rộng được thiết lập
  • +được hiển thị cho một ACL.
  • NẾU bạn có cả thuộc tính và ACL thì bạn sẽ thấy @.

Chạy lệnh ls -le filenameđể xem nó có bộ ACL nào không.

Vì vấn đề của bạn dường như là do truy cập tệp, tôi cá rằng bạn có bộ ACL ngoài thuộc tính mở rộng.

Để thoát khỏi một ACL chạy echo | sudo chmod -E filenamecho một tập tin hoặc echo | sudo chmod -R -E directory namecho một thư mục.

Xem trang người đàn ông chmod .


Cảm ơn vì sự trả lời. Làm sao để tôi thoát khỏi nó?
VinnyD

Cập nhật với một câu trả lời mà tôi tin rằng nên làm việc.
Zoredache

@Zoredache Quyền ACL đi kèm với dấu cộng. @ Là "thuộc tính mở rộng."

Vâng, tôi đang thấy rằng khi tôi kiểm tra lại. Tôi phải nhớ ngược. Và điều gì xảy ra khi một tập tin có cả hai?
Zoredache

Nevermind, tôi đã nhận được một mac khởi động. Nếu bạn có một @thuộc tính mở rộng và +tập acl, có vẻ như ls sẽ hiển thị a @. Vì anh ta đang gặp vấn đề khi truy cập một tập tin, có vẻ như vấn đề với tôi là anh ta có vấn đề với ACL.
Zoredache

8

Với thuộc tính kiểm dịch táo, chmod không đủ để loại bỏ nó.

Bạn cần xóa thuộc tính một cách rõ ràng:

sudo xattr -d com.apple.quarantine my_file

OP cũng hỏi "@ đứng để làm gì?"
Kamafeather

3

@viết tắt của các thuộc tính mở rộng, ngoài các quyền của tệp unix tiêu chuẩn.

Kiểm tra các thuộc tính mở rộng:

ls -l@

Đặt lại tất cả các thuộc tính mở rộng cho một tệp:

sudo xattr -c <filepath>

Đặt lại tất cả các thuộc tính mở rộng theo cách đệ quy:

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

Đã kiểm tra trên macOS High Sierra (10.13) và macOS Mojave (10.14.6).


0

Tôi thấy rằng -Ehoặc -Nthực sự vô hình ngay cả khi sử dụng sudo. Cách duy nhất tôi có thể khắc phục là bằng cách đăng nhập bằng root


Đó không phải là một câu trả lời. Có lẽ nên là một bình luận cho câu trả lời mà bạn đang đề cập đến.
Kamafeather
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.