Chown neden OS X’de “Operasyona izin verilmiyor” yazıyor?


64

Mac'imde (10.6.7) aşağıdakileri yapmaya çalışıyorum:

sudo chown myusername:wheel ./entries

ancak Unix / Mac "İşleme izin verilmedi" döndürüyor. Ben ls -lashsuçlu dosyası, aşağıdaki gibi görünüyor:

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

Denedim sudove sudo su; hiç birşey çalışmıyor. Neler olduğu hakkında bir fikrin var mı?

chmodEski Ubuntu kutumdan kopyaladığım dosyaları deniyorum . Dosyaların çoğu chmodyinelemeli olarak başarılı bir şekilde yazılmıştır; Sadece bu sıkışmış ve nedenini anlamıyorum.


1
Denedin sudo chgrp wheel ./entriesmi
sincap,

1
Bir dosya sistemi kontrolü yapın. Disk İzlencesi'ni açın, biriminizi seçin ve Diski Doğrula'yı , ardından gerekirse Diski Onar'ı tıklatın .
Daniel Beck

Dosyanın Finder'da kilitli olmadığından emin olun (simgede kilit kartı yok). Değiştirmek için açmak Bilgi Al iletişim ve işaretini kaldırın Kilitli .
Daniel Beck

Eğer "harici" bir birim ise (yani sistem birimi değil), "Bu birimdeki sahipliği yoksay" seçeneğini kaldırmanız gerekebilir. (Birimin kendisi için Bilgi Al penceresinin altındaki bölümüne bakın).
mivk

Yanıtlar:


83

Evet, Mac'in Unix'te dosya alanında pek çok geliştirmesi var. Artık kullanılmayan tüm kaynak çatalını görmezden gelince, bunlar:

  • Standart Unix izin ugo rwx vb. Normal Unix araçları geçerlidir.
  • ACL , ile görülebilir ls -leve ile değiştirilebilir chmod [ -a | +a | =a ].
  • dosya bayrakları ile görüntülenebilir ls -lO(Sermaye oh değil sıfır) ile değiştirilebilir chflags.
  • genişletilmiş özellikler , ls -l@(yalnızca özellik tuşları ile) görüntülenebilir ve birlikte görüntülenebilir ve değiştirilebilir xattr. ( Size hiçbir şey vermezse xattr -hyardım için kullanın man xattr.)
  • 10.11 "El Capitan" X OS ile başlayan Sistemi Bütünlüğü Koruması kullanırken bile (SIP) ayrıca sıradan süreçlerden değişikliklerden bazı dosyaları korur sudoolarak çalışacak root. SIP ile korunan dosyalar tarafından listelenecek ls -lOsahip olarak restrictedbayrağı ve / veya tarafından sıralanabilir ls -l@sahip olarak com.apple.rootlessniteliği.

Unix izinleri, ACL'ler, dosya bayrakları veya SIP nedeniyle bir dosyadaki işlemler reddedilebilir. Bir dosyanın tamamen kilidini açmak için:

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

Sistem Bütünlüğü Koruması (SIP) etkinse sudo chflags norestrictedve sudo xattr -d com.apple.rootless"İşleme izin verilmedi" hatası da verir. Bayrak ve / veya özniteliği temizlemek için macOS Recovery'ye önyüklemeniz ve ya komutları Terminal'den çalıştırmanız gerekir (önyükleme sürücünüzün kilidini açmak ve monte etmek için önce Disk Yardımcı Programını kullanmanız gerekebilir, ardından dosyalarınızın /Volumes/Macintosh HDönyüklemenizin altında veya ne olacağını unutmayın sürücü adlandırılır) veya SIP'yi tamamen devre dışı bırakın ve yeniden başlatın ve komutlar çalışmalıdır. Bununla birlikte, gelecekteki işletim sistemi güncellemelerinin muhtemelen restrictedbayrağı com.apple.rootlesskaldırdığınız dosyalara ve özniteliği geri yükleyeceğini unutmayın.

Kötü amaçlı yazılımlara ve kazara hasara karşı çok fazla korumayı kaldırdığından SIP'yi devre dışı bırakmak önerilmez , ayrıca korumayı dosya başına basitçe kaldırabileceğiniz zaman gerekli değildir. SIP'yi devre dışı bırakırsanız, değişiklik yaptıktan sonra yeniden etkinleştirin.

Bayrağın ayarlanmış olduğunu ls -lOgösterirse, schgonu çözmek için tek kullanıcılı moda girmeniz gerekir. Dosyanın neden bu bayrağı koyduğunu ve neden onunla uğraşmaya çalıştığınızı ve sonuçlarının ne olacağı konusunda daha büyük sorular olduğu için buraya girmeyeceğim.


7
Buna ek olarak, diğer bayraklar dosyalarınızı değiştirmenizi engelleyebilir. sudo chflags -R nouchg,noschg,nouappnd,nosappnd,noopaque,dump .
Senaryomda

1
Not: Eğer bir şey "değiştirilemez" bayrağına sahipse, Bilgi Al içindeki Kilitli onay kutusu işaretlenecek ve gri olacaktır. "sudo chflags nouchg" sorunu giderdi.
Foo Bar

1
Ben yapamadı -Nve ugo+rwaynı anda hem (I got Failed to clear ACL on file ugo+rw: No such file or directory) ancak bunları çalıştıran tek tek iyi çalıştı. Özyinelemeli istenirse -R, ilk argüman olmalı.
owenfi

3
Sistem Bütünlüğü Korumasının (köksüz) El Capitan ve sonrasında da buna neden olabileceğini unutmayın. Bunu çözmek için, Kurtarma Moduna ( Cmd-R) önyükleyin , Terminal'i açın ve çalıştırın csrutil disable, ardından yeniden başlatın (yeniden etkinleştirmek için kullanın csrutil enable).
Erwin Wessels

Teşekkürler ... Dosya bayrakları hakkında hiçbir fikrim yoktu. Şimdi neden söylediğini anlıyorumoverride rwxrwxrwx huttarl/staff uchg for green.html?
Lars H

18

Ben de aynı problemi yaşadım. Sorunlu dosyaların işletim sistemi tarafından "Kilitli" olarak işaretlendiği ortaya çıktı. Bu çözümü buldum ve sorunları saniyeler içinde çözdüm:

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

Öyle görünüyor ki rm, Tiger’da komut değiştirildi, öyle ki rm -Rfyüksek ayrıcalıklara sahipseniz , dosyaları otomatik olarak açacak.

Tiger'dan önceki OS X'te: find /Volumes/Transit -flags +uchg -print0 | xargs -0 chflags nouchg

Tiger’dan sonra OS X’de: sudo rm -Rf foldername/

Ayrıca, OS X 10.4'ten sonra bile , dosya izinlerinin veya sahipliğinin herhangi bir şekilde değiştirilmesini önleyen uchgve gibi dosya meta veri bayrakları olabilir uappnd. chflagsbayrakları kaldırabilir. Dosya özniteliklerinin / meta verilerinin bazıları ve bunların farklı kopyalama araçları tarafından nasıl işlendiği buradadır .


sudo rm -Rf foldername/OSX Mountain Lion'da mükemmel çalışıyor
Aryo

5
@Aryo: rmdizini siler. Silmeden her şeyin kilidini açmanın bir yolu var mı? Baktığımda uchgayarlanmadığında ve beklendiği gibi tekrar açıp kapatabilirim (birlikte chflags [no]uchg), ancak Bulucu'ndaki kilit simgesi veya bu durumun yeteneğimi etkilemez chown.
orome

12

Crashplan.app ile de aynı sorunu yaşadım.

Burada listelenen tüm çözümler bana yardımcı olmaz, ancak bu işe yaradı: http://forums.macrumors.com/showthread.php?t=1546163

Sistemi ve kullanıcı tarafından değiştirilemez bayrakları değiştirmeniz gerekir:

Dosya / klasörünüzde hangi bayrakların aktif olduğunu görmek için bunu yapın:

ls -lhdO MyFile

Yanıt şöyle görünebilir:

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

schg , uchg bu değişmez bayraklardır. Biri sistem için, diğeri kullanıcı için. Bunları kaldırmak için aşağıdakileri yapın:

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

O zaman, en azından benim için, dosyanın kilidi açıldı ve silebilirsiniz!


Korku veren, olsa chflagskullanmak zorunda sudo, ama mantıklı
Felipe

CrashPlan.app ile aynı sorunu vardı (ben vardı drwxrwxr-x@ 3 _BGMXPCHelper admin schg 96B 9 Jan 2018 CrashPlan.app) ve bu silmeme izin veren tek çözümdü, teşekkürler!
webeno

12

OS X 10.11'de (El Capitan), buna yeni Rootless özelliği neden olabilir . Bir açıklama için bu cevaba bakınız .

Kullanmak ister - Kısacası, bazı önemli dizinler için, gerekli değişiklikleri orada bir yol yoktur sudo, chownya da chmod. Bu, /usrdizini etkiler (değiştirmenize izin verilmesine rağmen /usr/local).

Rootless korumalı bir dizini değiştirmek için Rootless'ı devre dışı bırakmanız gerekir . Ve elbette, değişikliklerinizi yaptıktan sonra tekrar etkinleştirin, çünkü bu önemli bir güvenlik geliştirmesidir.


1
Vay. Bu beni deli etti. Her nasılsa / usr / lib dizinine / usr / local / lib dizininde bulunmayan bir şeyi kopyalamam gerekiyordu (nedenini sorma). Ve bu numara yaptı.
qwerty_so

4
Aslında, Rootless'i tamamen devre dışı bırakmak zorunda değilsiniz, Kurtarma Moduna (Rootless'ı devre dışı bırakmak için ne yapmak zorunda olursanız olun) önyükleme yapabilir ve orada Terminal'den istediğiniz değişiklikleri yapabilirsiniz.
Eski Pro

6

Çok fazla mücadele ettikten sonra, sorunu çözmek için yapmam gerekenler:

  • Dosyayı şuraya taşıdı: ~/Desktop
  • sudo chown myusername:staff ./entries
  • Dosyayı orijinal konumuna geri getirmek işe yaramadı (Çalışmaya tekrar izin verilmedi), bu yüzden ...
  • sudo rm ./entries
  • sudo mv ~/Desktop/entries ./entries

4

Ev klasörüm için de aynı problem vardı. Sonunda sadece böyle bulucu kullandım:

Git -> Bilgisayar -> diskiniz -> Kullanıcılar -> kullanıcı adınız -> sağ tıklayın -> Bilgi Alın

Kilitli olduğunu buldum, muhtemelen geçmişte yaptım ve unuttum. Kilitli onay kutusunun işaretini kaldırın, sorun çözüldü.

Bu tür sorunların üstesinden gelmek için 'Bilgi Al'ı bulucudan kullanmanızı tavsiye ederim.

(OS X 10.8.3)


Bu benim .isoaksaklık Sanal Kutu kilidini açmak için bana yardımcı oldu .
Nakilon

1

Hem dosyanın hem de ana klasörünün kilidinin açıldığından emin olun.

Bir Mac Mail e-posta imza dosyasını silmeye çalışırken benzer bir sorunla karşı karşıyaydım. Dosyanın ve ana klasörünün kilidini açana kadar silemedim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.