Создайте архив tar в исходном каталоге, отправьте его по каналу и распакуйте его в целевом каталоге.
# create src as before
(cd src;tar cf - .) | (mkdir dst;cd dst;tar xf -)
Linux не управляет разрешением удалить файлы отдельно из разрешения создать файлы. В обоих случаях, что имеет значение, есть ли у Вас разрешение записи к каталогу. Так как Вы оставили режим по умолчанию для каталогов, myuser может записать в /mnt/archive
и поэтому может удалить файлы там, а также создать их.
rm
подсказки для подтверждения, когда Вы пытаетесь удалить файл только для чтения, но это не означает, что у Вас нет разрешения удалить его: это означает, что у Вас действительно есть разрешение удалить его, но rm
думает, что это могла бы быть плохая идея сделать так.
Можно препятствовать тому, чтобы пользователи удалили файлы, которыми они не владеют путем установки “липкого бита” на каталоге (chmod +t
), как сделан для /tmp
. Используйте опцию монтирования dir_mode=1755
.
Вы не можете препятствовать тому, чтобы пользователи удалили свои собственные файлы кроме, не дав им разрешение создать файлы в том каталоге также.
Это нечетно, чтобы позволить пользователям создавать файлы, которые они не могут удалить. Если Вы действительно захотите это, то Вам будет нужно что-то более гибкое, чем классические полномочия файла Unix или Solaris/Linux ACLs (я думаю, что можно сделать это с OSX ACLs).