Friday, March 21, 2025

Cách khắc phục lỗi xattr: [Errno 1] Operation not permitted trên macOS

-

1. Giới thiệu về lỗi xattr: [Errno 1] Operation not permitted

Lỗi xattr: [Errno 1] Operation not permitted trên macOS xảy ra khi bạn cố gắng xóa hoặc thay đổi extended attributes (thuộc tính mở rộng) của file hoặc thư mục, nhưng hệ điều hành ngăn cản do các cơ chế bảo vệ như System Integrity Protection (SIP) hoặc thiếu quyền truy cập.

Ví dụ, khi bạn chạy lệnh sau:

sudo xattr -cr /Applications/Navicat\ Premium.app/
sudo xattr -r -d com.apple.quarantine /Applications/Navicat\ Premium.app

Bạn có thể nhận được lỗi:

xattr: [Errno 1] Operation not permitted: '/Applications/Navicat Premium.app//Contents/Info.plist'
xattr: [Errno 1] Operation not permitted: '/Applications/Navicat Premium.app//Contents'

Lỗi này khiến bạn không thể xóa các thuộc tính mở rộng và điều chỉnh file.

2. Nguyên nhân gây ra lỗi

Lỗi Operation not permitted có thể do một trong các nguyên nhân sau:

  • System Integrity Protection (SIP) đang bật: SIP là một cơ chế bảo vệ hạn chế quyền truy cập và sửa đổi các file hệ thống.
  • Thiếu quyền truy cập: Một số file có thể được thiết lập chỉ cho phép hệ thống truy cập, ngay cả khi sử dụng sudo.
  • File đang được sử dụng: Nếu file hoặc thư mục bạn muốn thay đổi đang được sử dụng bởi một ứng dụng khác, bạn sẽ gặp lỗi này.

3. Cách khắc phục lỗi xattr: Operation not permitted

Dưới đây là những cách khắc phục lỗi tùy vào nguyên nhân.

Cách 1: Vô hiệu hóa SIP (System Integrity Protection)

Nếu lỗi do SIP gây ra, bạn phải tạm thời tắt SIP để chạy lệnh xattr:

  • Khởi động vào macOS Recovery Mode:
    • Trên Mac Intel: Nhấn Command (⌘) + R khi khởi động.
    • Trên Mac Apple Silicon (M1, M2, M3…): Nhấn giữ node nguồn cho đến khi thấy “Loading startup options” sau đó lựa chọn tùy chọn Option.
  • Mở Terminal tại Utilities > Terminal.
  • Tắt SIP bằng lệnh: csrutil disable
  • Khởi động lại macOS: reboot
  • Chạy lại lệnh xattr: sudo xattr -cr /Applications/Navicat\ Premium.app/
  • Bật lại SIP để bảo vệ hệ thống:
    • Quay lại Recovery Mode, mở Terminal và chạy: csrutil enable

Cách 2: Di chuyển ứng dụng ra ngoài /Applications

  • Di chuyển file ra Desktop: mv /Applications/Navicat\ Premium.app ~/Desktop/
  • Chạy lệnh xattr: sudo xattr -cr ~/Desktop/Navicat\ Premium.app
  • Di chuyển ngược lại /Applications: mv ~/Desktop/Navicat\ Premium.app /Applications/

Cách 3: Thêm quyền Full Disk Access cho Terminal

  • Mở System Settings (System Preferences trên macOS cũ).
  • Vào Privacy & Security > Full Disk Access.
  • Thêm Terminal vào danh sách có quyền truy cập.
  • Chạy lại lệnh xattr trong Terminal.

Cách 4: Xóa cờ định tính trước khi chạy xattr

Thử chạy lệnh:

sudo chflags -R nouchg /Applications/Navicat\ Premium.app/
sudo xattr -cr /Applications/Navicat\ Premium.app/

4. Kết luận

Lỗi xattr: [Errno 1] Operation not permitted có thể do SIP, thiếu quyền, hoặc cờ định tính gây ra. Bạn hãy thử từng phương pháp để khắc phục. Nếu bạn có cách giải quyết khác, hãy chia sẻ trong bình luận!

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories