2

Я использую OS X 10.6.4 и пытаюсь настроить папку для автоматического включения разрешений на выполнение для новых файлов сценариев, скопированных или созданных в каталоге. Я использовал Sandbox 2, чтобы установить каждое разрешение для папки, включенное с помощью закрепленных битов и флага наследования, но мне все еще нужно вручную устанавливать флаг выполнения, используя chmod для каждого нового флага.

Я сделал:

chmod -R a+rwxs ~/scripts

Я сделал:

chmod 7777 ~/scripts

И разрешения для папки отображаются как:

drwsrwsrwt+ for the folder.

Но если я добавлю новый файл скрипта, он будет установлен в -rw-r--r--+ (по умолчанию)

Я посмотрел на настройку unmask 000 в файле .profile но значение по умолчанию для файлов - 666, без маски - 022, так что это не имеет значения, так как для файлов мне понадобится значение по умолчанию 777.

Я выяснил, как использовать chmod в AppleScript, запускаемом действием папки, чтобы автоматизировать это, но мне интересно, есть ли простая настройка ACL или chmod, которую я пропускаю.

Итак, есть ли способ автоматически установить разрешение на выполнение для новых файлов? (Без использования действия папки и AppleScript?)

1 ответ1

2

Хорошо, я подумал, что дам несколько дней, чтобы посмотреть, есть ли более разумный способ сделать это. Итак, вот AppleScript, который я создал для автоматической установки любого файла на исполняемый. Хотя он не идеален, например, если у вас есть папка со странным именем, например, «Scripts, Ruby», она не будет работать, но это хорошее начало для тех, кто хочет использовать эту функцию.

Вам необходимо скопировать этот текст в AppleScript, а затем скопировать этот файл сценария в каталог «Сценарии действий папки» (~/Library/Scripts/«Сценарии действий папки» или /Library/Scripts/«Сценарии действий папки»). Затем щелкните правой кнопкой мыши папку, в которую вы хотите добавить скрипт, выберите «Настройка действий с папками ...» и выберите этот скрипт из списка.

У меня есть гораздо более сложная версия, которая выполняет такие вещи, как само обновление, позволяет изменять только определенные типы файлов для каждой папки, позволяет использовать любое имя пользователя и пароль для установки разрешений и отправляет уведомления о рычании, но я хотел сделайте это простым, чтобы решение не было омрачено причудливыми наворотами.

Во всяком случае, надеюсь, что это помогает кому-то другому, пытающемуся сделать то же самое.

-- 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .