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
.
- Trên Mac Intel: Nhấn
- 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
- Quay lại Recovery Mode, mở Terminal và chạy:
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!