Я бы посчитал поведение Finder ошибкой, но разница отчасти преднамеренная (и из-за разницы в философии). Когда вы используете cp
для копирования одного файла поверх другого, он просто заменяет файл, не спрашивая (или даже не замечая, что это произошло). Обычно Finder спросит, уверены ли вы, что хотите заменить его; в этом случае, похоже, что права доступа к папке не позволяют ей сделать это успешно, поэтому вы получите сообщение об ошибке.
Я, вероятно, должен немного объяснить разрешения для папки Drop Box, чтобы уточнить, что разрешения на самом деле разрешают и запрещают. Существует три основных права доступа к папке: чтение, запись и "выполнение" (иногда называемое "поиск"). Чтение дает вам возможность прочитать названия элементов в папке, но на самом деле не дает никакой возможности прикоснуться к ним каким-либо образом. Запись дает возможность добавлять, удалять и переименовывать элементы в папке. "Выполнить" дает возможность "коснуться" содержимого папки, если вы знаете имена файлов.
Когда вы используете Finder для предоставления кому-то "только для чтения" доступа к папке, он фактически предоставляет чтение и выполнение; это означает, что они могут видеть имена файлов и папок в нем и взаимодействовать с ними (с учетом разрешений для самих элементов). Если вы фактически предоставили доступ на чтение без выполнения, они могли бы видеть имена файлов, но не что-либо еще о файлах (то есть ls
в такой папке работало бы, но ls -l
получит ошибки прав доступа, когда попытается получить свойства файлов).
Если вы предоставляете кому-либо доступ к папке (и ничему другому), это означает, что он может работать с файлами в этой папке, если они знают (или предполагают) имена файлов. ls /path/to/exec-folder
, но ls -l /path/to/exec-folder/filename
будет работать, если файл с таким именем существует.
В папке Drop Box есть запись и выполнение (но без прав чтения) для всех, кроме владельца. Это означает, что в /Users /otheruser /Public /Drop Box вы можете добавлять файлы, перечислять их свойства (если вы знаете их имена) и даже перемещать, переименовывать или удалять их (опять же, если вы знаете их имена). Искатель не может воспользоваться этим, потому что он действительно хочет иметь возможность просматривать содержимое папки; поскольку он не может этого сделать, он перестает взаимодействовать с Drop Box. Многие инструменты командной строки гораздо более точны в том, что они делают, и, следовательно, даже не замечают, что они работают в нечитаемой папке:
$ echo "This is the file's contents." >somefile.txt
$ cp somefile.txt /Users/otheruser/Public/Drop\ Box
$ ls /Users/otheruser/Public/Drop\ Box # Unable to look around
ls: Drop Box: Permission denied
$ ls -l /Users/otheruser/Public/Drop\ Box/somefile.txt # But if you know the filename...
-rw-r--r--+ 1 gordon staff 29 Mar 26 21:35 /Users/otheruser/Public/Drop Box/somefile.txt
$ more /Users/otheruser/Public/Drop\ Box/somefile.txt
This is the file's contents.
$ mv /Users/otheruser/Public/Drop\ Box/somefile.txt /Users/otheruser/Public/Drop\ Box/newname.txt
$ rm /Users/otheruser/Public/Drop\ Box/newname.txt
$