2011-05-04 20:42:49 +0000 2011-05-04 20:42:49 +0000
69
69

Waarom meldt chown "Operatie niet toegestaan" op OS X?

Ik probeer het volgende te doen op mijn Mac (10.6.7):

sudo chown myusername:wheel ./entries

maar Unix/Mac geeft “Operation not permitted” terug. Wanneer ik ls -lash het schuldige bestand, ziet het er als volgt uit:

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

Ik heb sudo en sudo su geprobeerd; niets werkt. Enig idee wat er aan de hand is?

Ik probeer chmod bestanden die ik heb gekopieerd van mijn oude Ubuntu doos. De meeste bestanden zijn succesvol recursief chmod‘ed; alleen deze zit vast en ik begrijp niet waarom.

Antwoorden (7)

91
91
91
2012-12-12 21:58:23 +0000

Ja, Mac heeft veel verbeteringen ten opzichte van Unix op het gebied van bestanden. Als je het hele resource fork ding negeert, dat niet veel meer gebruikt wordt, zijn er:

  • de standaard Unix permissies ugo rwx enzovoort. Normale Unix gereedschappen zijn van toepassing.
  • ACL‘s, te bekijken met ls -le en te wijzigen met chmod [-a | +a | =a].
  • bestandsvlaggen, te bekijken met ls -lO (hoofdletter oh, niet nul) en te wijzigen met chflags.
  • uitgebreide attributen , te bekijken met ls -l@ (alleen attribuutsleutels) en te bekijken en te wijzigen met xattr. (Gebruik xattr -h voor hulp als man xattr u niets oplevert.)
  • Vanaf OS X 10.11 “El Capitan”, * System Integrity Protection ** (SIP) beschermt sommige bestanden verder tegen wijzigingen van gewone processen, zelfs als u sudo gebruikt om als root te draaien. Bestanden die door SIP worden beschermd, zullen door ls -lO worden vermeld als hebbende de vlag restricted en/of door ls -l@ worden vermeld als hebbende het kenmerk com.apple.rootless.

Je kunt geen toegang krijgen tot een bestand vanwege Unix permissies, ACL’s, bestandsvlaggen of SIP. Om een bestand volledig te ontgrendelen:

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

Als System Integrity Protection (SIP) is ingeschakeld, zullen sudo chflags norestricted en sudo xattr -d com.apple.rootless ook een “Operation not permitted” fout teruggeven. Om de vlag en/of het kenmerk te wissen, moet u opstarten in macOS Herstel en ofwel de opdrachten van Terminal uitvoeren (u moet misschien eerst Schijfhulpprogramma gebruiken om uw opstartschijf te ontgrendelen en te mounten, onthoud dan dat uw bestanden onder /Volumes/Macintosh HD of hoe uw opstartschijf ook heet, zullen staan) of SIP helemaal uitschakelen en dan opnieuw opstarten en de opdrachten zouden dan moeten werken. Wees u er echter van bewust dat toekomstige updates van het besturingssysteem waarschijnlijk de restricted vlag en het com.apple.rootless attribuut zullen herstellen in alle bestanden waarvan u de vlag hebt verwijderd.

_ Het uitschakelen van SIP wordt niet aanbevolen _ omdat het veel bescherming tegen malware en onbedoelde schade wegneemt, plus het is niet nodig wanneer je de bescherming eenvoudig per bestand kunt verwijderen. Als u SIP toch uitschakelt, schakel het dan weer in als u klaar bent met het aanbrengen van wijzigingen.

Merk op dat als ls -lO laat zien dat de schg vlag gezet is, je in single-user mode moet komen om hem uit te zetten. Ik ga daar hier niet op in omdat er grotere vragen zijn over waarom die vlag in het bestand staat en waarom u er probeert mee te knoeien en wat de gevolgen zullen zijn.

18
18
18
2011-06-08 17:47:37 +0000

Ik had hetzelfde probleem. Het bleek dat de bestanden die het probleem veroorzaakten door het besturingssysteem als “vergrendeld” waren gemarkeerd. Ik vond deze oplossing en het loste de problemen in seconden op: http://explanatorygap.net/2005/07/10/unlocking-files-recursively-from-the-command-line/

Het lijkt erop dat het rm commando in Tiger zodanig is veranderd dat als je rm -Rf met verhoogde rechten gebruikt, het automatisch de bestanden ontgrendelt.

In OS X vóór Tiger: find /Volumes/Transit -flags +uchg -print0 | xargs -0 chflags nouchg

In OS X na Tiger: sudo rm -Rf foldername/

Ook kunnen er, zelfs na OS X 10.4, bestandsmetagegevensvlaggen zijn, zoals uchg en uappnd, die elke wijziging van de bestandspermissies of eigendom verhinderen. chflags kan de vlaggen verwijderen. Enkele van de bestandsattributen/metadata en hoe ze worden behandeld door verschillende kopieer gereedschappen zijn hier .

12
12
12
2015-09-30 23:09:40 +0000

In OS X 10.11 (El Capitan) kan dit ook worden veroorzaakt door de nieuwe Rootless functie. Zie dit antwoord voor een uitleg.

Kortom, voor bepaalde belangrijke directories is er geen manier om ze te wijzigen - of je nu sudo, chown of chmod gebruikt. Dit betreft de /usr directory, (hoewel je /usr/local wel mag wijzigen).

Om een Rootless-beveiligde directory te wijzigen, moet u Rootless uitschakelen . En, natuurlijk, weer inschakelen nadat u uw wijzigingen hebt aangebracht, omdat het een belangrijke beveiligingsverbetering is.

12
12
12
2014-08-21 17:30:15 +0000

Ik had hetzelfde probleem met de Crashplan.app.

Alle oplossingen die hier genoemd zijn hielpen mij niet, maar deze deed de truc http://forums.macrumors.com/showthread.php?t=1546163

Je moet de systeem en gebruiker onveranderlijke vlaggen veranderen:

Doe dit om te zien welke vlaggen actief zijn op je bestand/map:

ls -lhdO MyFile

Het antwoord zou er zo uit kunnen zien:

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

schg , uchg zijn die onveranderlijke vlaggen. Een voor het systeem en een voor de gebruiker. Om ze te verwijderen, doe je het volgende:

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

Dan, voor mij althans, is het bestand ontgrendeld en kun je het verwijderen!

5
5
5
2011-05-04 21:02:23 +0000

Na veel geworstel is dit wat ik moest doen om het probleem opgelost te krijgen:

  • Verplaatste het bestand naar ~/Desktop
  • sudo chown myusername:staff ./entries
  • Verplaatste het bestand terug naar zijn oorspronkelijke locatie werkte niet (Operatie niet toegestaan, alweer), dus…
  • sudo rm ./entries
  • sudo mv ~/Desktop/entries ./entries
4
4
4
2013-09-19 22:49:53 +0000

Ik had hetzelfde probleem, met mijn thuismap. Uiteindelijk heb ik finder als volgt gebruikt:

Ga -> Computer -> uw schijf -> Gebruikers -> uw gebruikersnaam -> klik met de rechtermuisknop -> Get Info

Ik vond dat het vergrendeld was, waarschijnlijk heb ik het in het verleden gedaan en vergeten. Vink het vakje vergrendeld uit, probleem opgelost.

Ik kan je aanraden om ‘Get Info’ van finder te gebruiken om dit soort problemen aan te pakken.

(OS X 10.8.3)

1
1
1
2015-03-23 15:28:32 +0000

Zorg ervoor dat zowel het bestand als de bovenliggende map ontgrendeld zijn

Ik had een soortgelijk probleem toen ik probeerde een Mac Mail e-mail handtekening bestand te verwijderen. Ik kon het niet verwijderen voordat ik zowel het bestand als de bovenliggende map had ontgrendeld.