141 votes

Commande pour déverrouiller les fichiers "verrouillés" sous OS X

J'ai copié un grand nombre de fichiers en lecture seule d'un système Windows vers mon Mac. En affichant les informations de chaque fichier à l'aide de "Get Info", je peux voir qu'ils sont verrouillés. J'écris un bash script pour copier certains fichiers et je reçois une erreur qui dit "Operation not permitted" Donc, d'abord je dois déverrouiller les fichiers. Comme je vais souvent extraire des fichiers du système Windows, je veux que mon script déverrouille ces fichiers.

Quelle est la commande terminal pour déverrouiller les fichiers "verrouillés" sous OSX ?

200voto

Kit Roed Points 1922

Pour débloquer les fichiers, vous pouvez utiliser :

chflags -R nouchg /PATH/TO/DIRECTORY/WITH/LOCKED/FILES/
  • chflags = changer les indicateurs sur les fichiers/dossiers tels que "verrouillé".
  • -R = récursif ou pour tout et suivre les répertoires dans le répertoire spécifié
  • nouchg = signifie que le fichier peut être modifié
  • /PATH/ = bien sûr le chemin d'accès aux fichiers que vous voulez modifier. Quelque chose comme : ~/Sites/mysite/directory/with/locked/files/ fonctionne aussi également.

25voto

Mamie McCall Points 241

Ceci est utile si vous voulez rechercher un répertoire entier et déverrouiller tous les fichiers.

Dans le terminal cd dans le répertoire

Cette commande trouve et va imprimer une liste d'entre eux .

$ find . -flags uchg

Cette commande les déverrouille .

$ find . -flags uchg -exec chflags nouchg {} \;

Vous pouvez utiliser la première commande pour vérifier que tous les fichiers sont déverrouillés après avoir exécuté la seconde commande, voilà !

18voto

Dalroth Points 2468

Vous pouvez également utiliser SetFile -a l même s'il fait la même chose que chflags nouchg :

SetFile -a l file.ext

-a l Défait le bit de l'attribut verrouillé. Vous pouvez installer SetFile en téléchargeant le paquet Command Line Tools à partir des préférences de Xcode ou à partir de developer.apple.com/downloads .

12voto

Mecki Points 599

Il existe en fait deux indicateurs de verrouillage qui peuvent être définis sur un fichier : uchg y schg . Un fichier qui a l'extension uchg Le jeu de drapeaux est immuable par les utilisateurs normaux mais il est mutable par le système. Un fichier qui a l'option schg Le jeu de drapeaux est immuable par quiconque. Les deux drapeaux peuvent être activés en même temps.

Pour voir quels drapeaux sont définis sur un fichier, utilisez

ls -lO FILE

C'est un o majuscule, pas un zéro.

Pour déverrouiller définitivement un fichier, il faudrait exécuter

chflags nouchg,noschg FILE

comme si les deux drapeaux étaient activés et que vous n'en retiriez qu'un seul, il sera toujours verrouillé.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X