Existe uma maneira de definir automaticamente permissões de execução para novos arquivos?

2

Estou usando o OS X 10.6.4 e estou tentando definir uma pasta para ativar automaticamente as permissões de execução em novos arquivos de script copiados ou criados em um diretório. Eu usei o Sandbox 2 para definir todas as permissões para que a pasta seja ativada com bits fixos e a bandeira herdada definida, mas ainda tenho que defina manualmente o sinalizador de execução usando chmod para cada novo sinalizador.

Eu fiz:

chmod -R a+rwxs ~/scripts

Eu fiz:

chmod 7777 ~/scripts

E as permissões para a pasta são exibidas como:

drwsrwsrwt+ for the folder.

Mas se eu adicionar um novo arquivo de script, ele será definido como -rw-r--r--+ (o padrão)

Eu olhei para a configuração unmask 000 no arquivo .profile , mas o valor padrão para arquivos é 666 com uma máscara de 022, então isso não é relevante, já que eu precisaria de um valor padrão de 777 para arquivos.

Eu descobri como usar chmod em um AppleScript acionado por uma ação de pasta para automatizar isso, mas estou imaginando se há uma configuração simples de ACL ou chmod que estou perdendo.

Então, existe uma maneira de definir automaticamente a permissão de execução para novos arquivos? (Sem usar uma ação de pasta e o AppleScript?)

    
por i help X u 14.08.2010 / 17:04

1 resposta

2

OK, pensei em dar alguns dias para ver se havia uma maneira mais sensata de fazer isso. Então, aqui está o AppleScript que eu criei para definir automaticamente qualquer arquivo para executável. Não é perfeito, como se você tivesse uma pasta com um nome estranho, por exemplo "Scripts, Ruby", não funcionará, mas é um bom começo para qualquer pessoa que queira essa funcionalidade.

Você precisa copiar este texto para um AppleScript e copiar esse arquivo de script para o diretório Scripts de Ação de Pasta (~ / Biblioteca / Scripts / Scripts de Ação de Pasta ou / Biblioteca / Scripts / Scripts de Ação de Pasta). Em seguida, clique com o botão direito do mouse na pasta para a qual você deseja adicionar o script, escolha "Configuração das ações da pasta ..." e escolha esse script fora da lista.

Eu tenho uma versão muito mais complicada que faz coisas como as próprias atualizações, apenas permite que certos tipos de arquivos sejam alterados por pasta, permite que você use qualquer nome de usuário e senha para definir permissões e envia notificações de grunhidos, mas Eu queria manter a simplicidade para que a solução não fosse ofuscada pelos sinos e assobios extravagantes.

De qualquer forma, espero que isso ajude alguém tentando fazer a mesma coisa.

-- Set all the files in the directory to executable
on adding folder items to currentFolder after receiving addedItems
  try
    -- Set execute permissions for each file that is copied to this directory
    repeat with anItem in addedItems
      tell application "Finder"
        try
          -- Test to see if it's a file or folder (we ignore folders)
          set fileType to type identifier of (info for anItem)
          -- It's a file so change the permissions to execute
          do shell script "/bin/chmod u+x " & (the POSIX path of anItem)
        on error
          -- It's a folder so do nothing
        end try
      end tell
    end repeat

  on error errorStr number errorNumber
    -- Let the user know there was an error
    display dialog errorStr & return & return ¬
      & "Error Number: " & errorNumber ¬
      buttons {"OK"} default button 1 ¬
      with title "Error: " giving up after 30
  end try
end adding folder items to
    
por 19.08.2010 / 13:58