Không thể di chuyển tệp bằng root trên OS X


53

Tôi đã cố gắng di chuyển một vài tệp đến thư mục con trên OS X. Một người từ chối di chuyển. Nó nói Operation not permitted. Tôi đã thử lại với quyền root:

$ sudo mv file subfolder/
mv: rename file to subfolder/file: Operation not permitted
$ sudo mv file filex
mv: rename file to filex: Operation not permitted
$ lsattr file
lsattr: Inappropriate ioctl for device While reading flags on file

Tôi đã thử lsattrtrên các tập tin khác; tất cả các tệp tôi đã thử cho tôi cùng một thông điệp:Inappropriate ioctl for device While reading...

Đến từ Linux, tôi không biết về cờ nên đây là đầu ra của ls -leO@ file:

$ ls -leO@ file otherfile
-rwxrwxrwx  1 eeytan  staff  uchg 79549 Nov 11  2010 file
-rw-r--r--  1 eeytan  staff  -     5071 Sep  7 02:37 otherfile

Tôi đã thử tiện ích đĩa OS X; Nó nói không có lỗi trên đĩa của tôi. Những gì đang xảy ra ở đây?


1
lsattrkhông phải là một lệnh OS X tiêu chuẩn; ls -leO@thay vào đó hãy thử Ngoài ra, tập tin trên là bao nhiêu? Hãy thử mountxem những thuộc tính nào mà âm lượng được gắn với.
Gordon Davisson

1
@GordonDavisson, có vẻ như bạn đang đi đúng hướng. ls -leo @ nói rằng tập tin đó là tập tin duy nhất có thuộc tính "uchg", nghe rất giống "không thể thay đổi" đối với tôi.
eje211

Chào mừng bạn đến hỏi khác nhau! Tôi sẽ xóa các chỉnh sửa và đặt câu hỏi này và để lại câu trả lời cho phần trả lời ...
bmike

Câu trả lời:


30

Âm thanh như tập tin bị khóa với tôi, đó là lý do tại sao thuộc tính uchg xuất hiện. Bạn sẽ có thể sử dụng lệnh sau để xóa thuộc tính bị khóa:

chflags nouchg file

hoặc nhấp chuột phải vào tệp trong Finder, nhấp vào "Nhận thông tin" rồi bỏ chọn hộp kiểm "Đã khóa"


1
Hà! Có vẻ như bạn đã trả lời câu hỏi của riêng bạn giống như tôi đã đăng câu trả lời này!
binarybob

84

Đối với những người vấp ngã khi này trong một kỷ nguyên OS X 10.11+ (El Capitan hoặc mới hơn): Apple đã bổ sung thêm một lớp hoàn toàn mới về an ninh trong OS X . Họ đã lấy đi một số đặc quyền từ root. Các tập tin bạn đang cố gắng sửa đổi có một restrictedcờ. Chỉ restrictedcác quy trình được ký bởi Apple mới có thể sửa đổi các tệp này. Tuy nhiên, bạn có thể vô hiệu hóa hệ thống bảo mật này bằng cách khởi động trong chế độ khôi phục và vô hiệu hóa nó trong Terminal bằng cách thực hiện : csrutil disable.

Ngoài ra, bạn cũng có thể chỉ cần khởi động Terminal trong Chế độ khôi phục và xóa tệp ở đó. Hoặc thậm chí thử khởi động trong môi trường Linux có hỗ trợ HFS + (ít nhất là nếu bạn chưa có trên APFS) để thay đổi tệp.


1
Các csr trong csrutil có nghĩa là gì?
Michael Terry

12
Tôi tin rằng chính Franklin Franklin đã nói rằng "Những người hy sinh sự dễ sử dụng cho người bảo mật cũng không". Hoặc một cái gì đó.
dgig

5

Thử:

chflags -f -R nouchg directory

trên một thư mục cấp cao hơn để ngăn chặn vấn đề này.


FWIW: Tôi gặp vấn đề này zsh: locking failed for /Users/me/.zhistory: operation not permitted: reading anywayvà chạy lệnh này trong thư mục nhà của tôi đã sửa nó
raine

0

Tôi cũng gặp vấn đề này và tôi phát hiện ra rằng thư mục mà tập tin đang bị khóa. Vì vậy, hãy chắc chắn rằng điều đó không đúng. Thực hiện 'lấy thông tin' trên thư mục trong công cụ tìm và đảm bảo hộp kiểm bị khóa không được chọn.


0

Tôi nhận ra đây là một chủ đề rất cũ nhưng tôi không thấy chủ đề này giải quyết triệu chứng của mình nên tôi nghĩ tôi sẽ đăng một ý kiến ​​khác.

Tôi đã có điều này xảy ra với một ổ đĩa ngoài đã hoạt động hoàn hảo trên iMac Snow Leopard, được nâng cấp lên El Capitan trên đường đi. Đầu năm nay, tôi đã lấy ổ đĩa đó và đặt nó vào một hộp Windows 10 mới đang chạy Paragon HFS cho Windows. Tôi đã sao chép hàng trăm GB tệp TỪ Windows ĐẾN HFS + trên ổ đĩa đó và cắm lại vào iMac. Mọi thứ đều hoạt động tốt, ngoại trừ một tập lệnh shell tôi có các tập tin dàn dựng để sao lưu đã gặp phải vấn đề uchg này.

Tóm lại: các tệp và thư mục được tạo trong El Capitan hoặc Windows 10 bằng Paragon HFS, khi được chuyển trở lại hộp Snow Leopard, hộp radio "bị khóa" sẽ KHÔNG được kiểm tra khi bạn chọn Get Infotrong Finder. Tuy nhiên, đề xuất của người khác hoạt động tốt với tôi:

  • xác minh đó là vấn đề bằng cách chạy ls -leO@(đó là vốn oh) trên tệp nghi ngờ
  • là root, chạy chflags -R nouchgtrên thư mục mẹ (không có -f trong Snow Leopard)

Nó sẽ hoạt động, chỉ không mong đợi các tín hiệu hình ảnh chính xác giống nhau nếu ổ đĩa của bạn đã đi giữa các hệ điều hành hoặc nếu bạn sử dụng Paragon HFS.


chflags -f -R nouchg thư mục hoạt động được cảm ơn
odjeezeus

0

Tôi đã có một tập tin tôi không thể xóa trong thiết bị đầu cuối:

$ sudo ls -leO@ foo@example.com/Documents/.%cb_defense/cb.doc
-rw-rw-rw-  1 root  wheel  - 41984  1 Mar 11:20 foo@example.com/Documents/.%cb_defense/cb.doc

$ sudo rm -rf foo@example.com/Documents/.%cb_defense/cb.doc
rm: foo@example.com/Documents/.%cb_defense/cb.doc: Operation not permitted

Điều làm việc cho tôi là mở Finder và xóa toàn bộ thư mục chứa. Theo cách tôi hiểu, Finder xóa các thư mục là một đơn vị hoàn toàn không quan tâm đến nội dung của chúng, vì vậy nó không phải chịu các hạn chế như thông thường rm -rf.

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.