2011-01-21 3 views
1

Иногда сотрудники моей компании захватывают файл, который по какой-то причине не имеет права на чтение или запись. Примером является загрузка файла с FTP-сервера клиента.Изменение прав доступа к файлам с помощью Applescript, если у вас нет разрешения на чтение.

Я ищу, чтобы создать что-то очень простое, AppleScript капли, которые будут изменить разрешения для файлов, сброшенных на него:

on open filelist 
repeat with i in filelist 
    do shell script "chmod -R +wr " & quoted form of POSIX path of i with administrator privileges 
end repeat 
end open 

Проблема заключается в том, что, поскольку пользователь не имеет права на чтение, капелька мгновенно выходит из строя на линии .

Удаление все между on open блока:

on open filelist 
end open 

по-прежнему приводит в сценарии неисправного. Из-за отказа я имею в виду, что он создает ошибку разрешения файла.

Заранее спасибо.

+0

вам нужно использовать AppleScript ли, или вы могли бы просто создать скрипт, содержащий CHMOD -R + RW $ 1 и иметь пользователи запускают это? (Кроме того, если вам нужно -R, вы, вероятно, хотите + rwX, так как каталогам нужен бит выполнения.) –

ответ

1

Проблема может заключаться в том, что вы пытаетесь работать с файлами, которые ваш пользователь не может прочитать - это приведет к тому, что Droplet не будет работать, потому что это зависит от возможности чтения! Вам нужно будет написать подходящее приложение, используя файл выбора. Проблема в том, что вы можете выбрать несколько файлов, но только файлы или папки. Во всяком случае, I've написано что-то подобное в прошлом, так что не стесняйтесь использовать это:

set myUsername to (short user name of (system info)) 
set myPassword to "" 

set fileOrFolder to button returned of (display dialog "Would you like to change permissions on files of folders?" buttons {"Cancel", "Files", "Folders"} default button "Cancel") 

if fileOrFolder is "Files" then 
set theSelection to choose file with multiple selections allowed without invisibles 

repeat with oneFile in theSelection 

do shell script "sudo chmod -R u+rwX,go+rX " & quoted form of POSIX path of oneFile password myPassword with administrator privileges 
do shell script "sudo chown -R " & myUsername & ":staff " & quoted form of POSIX path of oneFile password myPassword with administrator privileges 

end repeat 
else if fileOrFolder is "Folders" then 
set theSelection to choose folder with multiple selections allowed without invisibles 

repeat with oneFile in theSelection 

do shell script "sudo chmod -R u+rwX,go+rX " & quoted form of POSIX path of oneFile password myPassword with administrator privileges 
do shell script "sudo chown -R " & myUsername & ":staff " & quoted form of POSIX path of oneFile password myPassword with administrator privileges 

end repeat 
else 
display dialog "Error" 
end if 
+0

Спасибо Asmus. Хотя это не капля, которая не представляется возможной с AppleScript, она по-прежнему будет обеспечивать простой способ для нетехнических сотрудников исправлять разрешения. – kfriend

+0

Будьте осторожны, не используйте «sudo ...» с правами администратора. Если вы пишете команду с правами администратора, AppleScript запрашивает пароль администратора для выполнения команды как sudo. См. [Technotes/tn2065] (https://developer.apple.com/library/mac/technotes/tn2065/_index.html) – Steve

Смежные вопросы