Comando para desbloquear arquivos "Bloqueados" no OS X


96

Copiei muitos arquivos somente leitura de um sistema Windows para o meu Mac. Ao visualizar as informações de cada arquivo usando "Obter informações", posso ver que elas estão bloqueadas. Estou escrevendo um script bash para copiar alguns arquivos e estou recebendo um erro que diz "Operação não permitida". Primeiro, preciso desbloquear os arquivos. Como eu extrairei arquivos do sistema Windows com frequência, desejo que meu script desbloqueie esses arquivos.

Qual é o comando do terminal para desbloquear arquivos "Bloqueados" no OSX?

Respostas:


136

Para desbloquear arquivos, você pode usar:

chflags -R nouchg /PATH/TO/DIRECTORY/WITH/LOCKED/FILES/
  • chflags = alterar sinalizadores em arquivos / pastas como "bloqueado"
  • -R = recursivo ou para tudo e siga os diretórios dentro do diretório especificado
  • nouchg = significa que o arquivo pode ser alterado
  • /PATH/= obviamente é o caminho para os arquivos que você deseja alterar. Algo como: ~/Sites/mysite/directory/with/locked/files/funciona também.

1
Parece que encontrei a solução exatamente como você estava respondendo. Eu também aprendi que o -R é recursivo. Portanto, para desbloquear todos os arquivos no diretório atual, use <br/> chflags nochg * <br/> e altere apenas um arquivo <br/> chflags nouchg onefile.txt Veja: mehtanirav.com/2009/04/16/recursively -unlock-files-on-mac-os-x
Michael Prescott

3
Há uma outra bandeira relevante schgque é a bandeira imutável sistema (consulte developer.apple.com/library/mac/documentation/Darwin/Reference/... ) O comando para limpá-la é semelhante:sudo chflags noschg PATH/TO/LOCKED/FILE
Andy Madge

1
Use /bin/ls -lO /path/to/filepara visualizar o macOS flagsnos arquivos. Observe o caminho completo para o lscomando macOS ' '. Isso é necessário se você tiver o GNU Coreutils instalado.
Tony Barganski

15

Você também pode usar SetFile -a l, mesmo que faça a mesma coisa que chflags nouchg:

SetFile -a l file.ext

-a ldesativa o bit para o atributo bloqueado. Você pode instalar o SetFile baixando o pacote Command Line Tools nas preferências do Xcode ou em developer.apple.com/downloads .


Este é o método que funcionou para mim no macOS Sierra com alguns arquivos copiados de uma máquina Windows. Eu usei: SetFile -al ~ / Documents / Arduino / Samples / *
callisto

14

Isso é útil se você deseja pesquisar em um diretório inteiro e desbloquear todos os arquivos.

No terminal cdpara o diretório

Este comando encontra e imprime uma lista deles .

$ find . -flags uchg

Este comando os desbloqueia .

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

Você pode usar o primeiro comando para verificar se todos os arquivos estão desbloqueados após a execução do segundo comando, voilà!


1
Enquanto isso funciona, pode ser extremamente lento para um grande número de arquivos, porque inicia um novo processo para cada arquivo.
Richard Waite

0

Na verdade, existem dois sinalizadores de bloqueio que podem ser definidos em um arquivo: uchge schg. Um arquivo que tem o uchgsinalizador definido é imutável por usuários normais, mas é mutável pelo sistema. Um arquivo com o schgsinalizador definido é imutável por qualquer pessoa. Ambos os sinalizadores podem ser definidos ao mesmo tempo.

Para ver quais sinalizadores estão definidos em um arquivo, use

ls -lO FILE

Essa é uma letra maiúscula o, não zero.

Para desbloquear definitivamente um arquivo, você teria que executar

chflags nouchg,noschg FILE

como se os dois sinalizadores estivessem definidos e você removesse apenas um deles, ele ainda estará bloqueado.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.