Tại sao chown báo cáo Hoạt động của Viking không được phép trên OS X?


65

Tôi đang cố gắng thực hiện các thao tác sau trên máy Mac của mình (10.6.7):

sudo chown myusername:wheel ./entries

nhưng Unix / Mac đang trả về "Thao tác không được phép". Khi tôi ls -lashlà thủ phạm, nó trông như sau:

8 -rwxrwxrwx   1 myusername  staff   394B Apr 26 23:26 entries

Tôi đã thử sudosudo su; không có gì hoạt động Có ý kiến ​​gì không?

Tôi đang cố gắng chmodsao chép các tập tin tôi đã sao chép từ hộp Ubuntu cũ của mình. Hầu hết các tệp đã thành công chmod'ed đệ quy; chỉ cái này bị kẹt và tôi không hiểu tại sao.


1
Bạn đã thử sudo chgrp wheel ./entrieschưa
vòng

1
Làm một kiểm tra hệ thống tập tin. Mở Disk Utility, chọn âm lượng của bạn và nhấp vào Xác minh đĩa , sau đó, nếu cần, Sửa chữa đĩa .
Daniel Beck

Đảm bảo tệp không bị khóa trong Finder (không có huy hiệu khóa trên biểu tượng). Để thay đổi, hãy mở hộp thoại Nhận thông tin và bỏ chọn Đã khóa .
Daniel Beck

Nếu đó là âm lượng "bên ngoài" (nghĩa là không phải âm lượng hệ thống), bạn có thể phải xóa tùy chọn "Bỏ qua quyền sở hữu đối với âm lượng này". (Xem ở dưới cùng của cửa sổ Nhận thông tin cho chính âm lượng).
mivk

Câu trả lời:


85

Có, Mac có nhiều cải tiến đối với Unix trong lĩnh vực tệp. Bỏ qua toàn bộ tài nguyên ngã ba không được sử dụng nhiều nữa, có:

  • các quyền Unix tiêu chuẩn ugo rwx và như vậy. Các công cụ Unix thông thường được áp dụng.
  • ACL , có thể xem ls -levà thay đổi với chmod [ -a | +a | =a ].
  • cờ tập tin có thể xem được với ls -lO(Vốn oh, không phải không) và có thể thay đổi với chflags.
  • thuộc tính mở rộng , có thể xem với ls -l@(chỉ các khóa thuộc tính) và có thể xem và thay đổi với xattr. (Sử dụng xattr -hđể được giúp đỡ nếu man xattrkhông cung cấp cho bạn bất cứ điều gì.)
  • Bắt đầu với OS X 10.11 "El Capitan", Bảo vệ toàn vẹn hệ thống (SIP) bảo vệ thêm một số tệp khỏi các thay đổi từ các quy trình thông thường, ngay cả khi sử dụng sudođể chạy như root. Các tệp được bảo vệ bởi SIP sẽ được liệt kê bằng ls -lOcách có restrictedcờ và / hoặc được liệt kê bằng ls -l@cách có com.apple.rootlessthuộc tính.

Bạn có thể bị từ chối thao tác trên một tệp vì quyền Unix, ACL, cờ tệp hoặc SIP. Để mở khóa hoàn toàn một tập tin:

sudo chmod -N file        # Remove ACLs from file
sudo chmod ugo+rw file    # Give everyone read-write permission to file
sudo chflags nouchg file  # Clear the user immutable flag from file
sudo chflags norestricted file  # Remove the SIP protection from file
sudo xattr -d com.apple.rootless file # Remove SIP protection from file

Nếu Bảo vệ tính toàn vẹn hệ thống (SIP) được bật sudo chflags norestrictedsudo xattr -d com.apple.rootlesscũng sẽ trả về lỗi "Hoạt động không được phép". Để xóa cờ và / hoặc thuộc tính, bạn cần khởi động vào macOS Recovery và chạy các lệnh từ Terminal (trước tiên bạn có thể phải sử dụng Disk Utility để mở khóa và gắn ổ đĩa khởi động, sau đó hãy nhớ rằng các tệp của bạn sẽ nằm dưới /Volumes/Macintosh HDhoặc bất cứ thứ gì bạn khởi động ổ đĩa được đặt tên) hoặc vô hiệu hóa SIP hoàn toàn và sau đó khởi động lại và các lệnh sẽ hoạt động. Tuy nhiên, hãy lưu ý rằng các bản cập nhật hệ điều hành trong tương lai có thể sẽ khôi phục restrictedcờ và com.apple.rootlessthuộc tính cho bất kỳ tệp nào bạn đã xóa nó khỏi.

Vô hiệu hóa SIP không được khuyến khích vì nó loại bỏ rất nhiều sự bảo vệ chống lại phần mềm độc hại và thiệt hại do tai nạn, cộng với không cần thiết khi bạn chỉ cần loại bỏ bảo vệ trên cơ sở mỗi tệp. Nếu bạn tắt SIP, hãy bật lại khi bạn hoàn tất thay đổi.

Lưu ý rằng nếu ls -lOhiển thị schgcờ được đặt, bạn phải vào chế độ một người dùng để hủy đặt nó. Tôi sẽ không đi sâu vào vấn đề này ở đây vì có những câu hỏi lớn hơn về lý do tại sao tập tin có cờ đó và tại sao bạn lại cố gắng gây rối với nó và hậu quả sẽ ra sao.


7
Thêm vào đó, các cờ khác có thể ngăn bạn thay đổi các tệp của mình. Trong kịch bản của tôi, tôi đặtsudo chflags -R nouchg,noschg,nouappnd,nosappnd,noopaque,dump .
djjeck

1
Lưu ý: nếu nội dung nào đó có cờ "không thể thay đổi", hộp kiểm Đã khóa trong Nhận thông tin sẽ được chọn và chuyển sang màu xám. "sudo chflags nouchg" sửa nó.
Foo Bar

1
Tôi không thể làm cả hai -Nugo+rwcùng một lúc (tôi có Failed to clear ACL on file ugo+rw: No such file or directory) nhưng chạy chúng hoạt động tốt. Nếu đệ quy là mong muốn thì -Rphải là đối số đầu tiên.
owenfi

3
Lưu ý rằng Bảo vệ toàn vẹn hệ thống (không root) cũng có thể gây ra điều này trên El Capitan và sau đó. Để giải quyết vấn đề đó, hãy khởi động vào Chế độ khôi phục ( Cmd-R), mở Terminal và chạy csrutil disable, sau đó khởi động lại (để có thể sử dụng lại csrutil enable).
Erwin Wessels

Cảm ơn bạn ... Tôi không có ý tưởng về cờ tập tin. Bây giờ tôi đã hiểu tại sao nó nóioverride rwxrwxrwx huttarl/staff uchg for green.html?
LarsH

18

Tôi đã từng gặp vấn đề tương tự. Hóa ra các tệp vi phạm đã được HĐH đánh dấu là "Đã khóa". Tôi tìm thấy giải pháp này và nó đã giải quyết vấn đề trong vài giây:

http://explanatorygap.net/2005/07/10/unlocking-files-recursively-from-the-command-line/

Có vẻ như rmlệnh đã thay đổi trong Tiger sao cho nếu bạn sử dụng rm -Rfvới các đặc quyền nâng cao, nó sẽ tự động mở khóa các tệp.

Trong OS X trước Tiger: find /Volumes/Transit -flags +uchg -print0 | xargs -0 chflags nouchg

Trong OS X sau Tiger: sudo rm -Rf foldername/

Ngoài ra, ngay cả sau OS X 10.4, có thể có các cờ siêu dữ liệu tệp như uchguappnd, ngăn chặn mọi sửa đổi về quyền hoặc quyền sở hữu tệp. chflagscó thể loại bỏ các cờ. Một số thuộc tính / siêu dữ liệu tệp và cách chúng được xử lý bởi các công cụ sao chép khác nhau có ở đây .


sudo rm -Rf foldername/đang hoạt động hoàn hảo trên OSX Mountain Lion
Aryo

5
@Aryo: rmxóa thư mục. Có cách nào để chỉ mở khóa mọi thứ mà không xóa nó không? Khi tôi nhìn uchgkhông được đặt và tôi có thể bật và tắt lại như mong đợi (với chflags [no]uchg), nhưng điều đó không ảnh hưởng đến biểu tượng khóa trong Finder hoặc khả năng của tôi chown.
orome

12

Tôi đã có cùng một vấn đề với Crashplan.app.

Tất cả các giải pháp được liệt kê ở đây sẽ không giúp tôi, nhưng giải pháp này đã thực hiện thủ thuật: http://forums.macrumors.com/showthread.php?t=1546163

Bạn phải thay đổi hệ thống và cờ người dùng bất biến:

Làm điều này để xem cờ nào đang hoạt động trên tệp / thư mục của bạn:

ls -lhdO MyFile

Câu trả lời có thể như thế này:

drwxrwxr-x 3 root admin schg,uchg 102B Apr 8 2013 MyFile

schg , uchg là những lá cờ bất biến. Một cho hệ thống và một cho người dùng. Để loại bỏ chúng, hãy làm như sau:

chflags noschg CrashPlan.app # this removes system immutable flag
chflags nouchg CrashPlan.app # this removes the user immutable flags

Sau đó, đối với tôi ít nhất, tập tin được mở khóa và bạn có thể xóa nó!


Tuyệt vời, phải chflagssử dụng sudomặc dù, nhưng nó có ý nghĩa
Felipe

Có vấn đề tương tự với CrashPlan.app (tôi đã có drwxrwxr-x@ 3 _BGMXPCHelper admin schg 96B 9 Jan 2018 CrashPlan.app) và đây là giải pháp duy nhất cho phép tôi xóa nó, cảm ơn!
webeno

12

Trong OS X 10.11 (El Capitan), điều này cũng có thể được gây ra bởi tính năng Rootless mới . Xem câu trả lời này để được giải thích.

Nói tóm lại, đối với một số thư mục quan trọng nhất định, không có cách nào để sửa đổi chúng - cho dù bạn sử dụng sudo, chownhay chmod. Điều này ảnh hưởng đến /usrthư mục, (mặc dù bạn được phép sửa đổi /usr/local).

Để sửa đổi thư mục được bảo vệ bằng Rootless, bạn cần tắt Rootless . Và, tất nhiên, kích hoạt lại nó sau khi thực hiện các sửa đổi của bạn, bởi vì đó là một cải tiến bảo mật quan trọng.


1
Ồ Điều đó đã khiến tôi phát điên. Bằng cách nào đó tôi cần sao chép một cái gì đó sang / usr / lib mà không được tìm thấy trong / usr / local / lib (đừng hỏi tôi tại sao). Và đó đã là mẹo.
qwerty_so

4
Trên thực tế, bạn không phải tắt Rootless hoàn toàn, bạn chỉ có thể khởi động vào chế độ Recovery (dù sao bạn cũng phải thực hiện để tắt Rootless) và thực hiện các thay đổi bạn muốn từ Terminal ở đó.
Old Pro

6

Sau rất nhiều khó khăn, đây là những gì tôi phải làm để khắc phục sự cố:

  • Đã chuyển tập tin sang ~/Desktop
  • sudo chown myusername:staff ./entries
  • Di chuyển tệp trở lại vị trí ban đầu của nó không hoạt động (Hoạt động không được phép, một lần nữa), vì vậy ...
  • sudo rm ./entries
  • sudo mv ~/Desktop/entries ./entries

4

Tôi đã có cùng một vấn đề, về thư mục nhà của tôi. Cuối cùng, tôi chỉ sử dụng công cụ tìm như thế này:

Đi -> Máy tính -> đĩa của bạn -> Người dùng -> tên người dùng của bạn -> nhấp chuột phải -> Nhận thông tin

Tôi thấy rằng nó đã bị khóa, có lẽ tôi đã làm điều đó trong quá khứ và quên mất. Bỏ chọn hộp kiểm bị khóa, vấn đề đã được sửa.

Tôi có thể khuyên bạn nên sử dụng 'Nhận thông tin' từ công cụ tìm để giải quyết loại vấn đề này.

(HĐH X 10.8.3)


Điều này giúp tôi mở khóa .isotừ Hộp ảo rối mắt.
Nakilon

1

Đảm bảo cả tệp và thư mục mẹ của nó được mở khóa

Tôi đã gặp phải một vấn đề tương tự khi cố gắng xóa tệp chữ ký email Mac Mail. Tôi không thể xóa nó cho đến khi tôi đã mở khóa tập tin cũng như thư mục mẹ của nó.

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.