Вам не нужно слишком беспокоиться о пользователе, если данные www -или любой пользователь на вашем веб/ftp-сервере имеет доступ для чтения.
Если загрузка работает, и каталог имеет значение 755, а файлы — 644, значит, можно продолжать.
Если вы не хотите, чтобы все локальные пользователи имели доступ к этим файлам, я бы прошел через группу, создал группу с именем ftpuploads, чтобы пользователь ftp и пользователь данных www -были членами этой группы, а ваш каталог загрузки теперь может быть
chgrp ftpuploads; chmod 750 $dir
Теперь в веб-части вам нужно, чтобы ваш виртуальный хост разрешил доступ для чтения к этому каталогу. Вы хотите, чтобы индекс файлов был разрешен? теперь он отключен по умолчанию.
Этот вопрос/ответ должен помочь вам в этом:
Apache :Как включить просмотр индекса каталога на корневом уровне документа?
Использовать функцию.
command1(){
convert -size 2000x1000 xc:none -gravity center \
-stroke yellow -pointsize 50 -font Courier-BoldOblique -strokewidth 3 -annotate +100+100 "${caption}" \
-blur 0x25 -level 0%,50% \
-fill white -stroke none -annotate +100+100 "${caption}" \
in.jpeg +swap -gravity center -geometry +0-3 \
-composite out.jpeg
}
command2() {
convert -size 2000x1000 xc:none -gravity center \
-fill white -pointsize 50 -stroke none -annotate +100+100 "${caption}" -channel alpha -evaluate multiply 0.35 -trim +repage \
in.jpeg +swap -gravity center -geometry +0-3 \
-composite out.jpeg
}
Узнайте, почему Почему переменные не работают при попытке выполнить команду
Во-первых, это не сработает, если в аргументах есть пробелы или обычные символы глобуса:
command1="convert... -fill white -stroke none -annotate +100+100 "${caption}"...
Обратите внимание, что даже подсветка синтаксиса показывает, что часть ${caption}
заключена в кавычки , а не . Цитаты не работают внутри кавычек, т.е. кавычки, расширенные из параметра, являются буквальными, они не цитируются повторно.
См.:
Два лучших варианта — хранить команды в отдельных функциях или отдельных массивах. К сожалению, вам придется придумать для них имена, у вас не может быть (пронумерованного )массива функций или массива массивов.
Затем, предполагая, что у вас есть функции или массивы с именами cmd1
и cmd2
, выберите одну из них, как вы это сделали, и, если вы использовали функции, просто запустите ее:
commands=(cmd1 cmd2)
chosen=$(shuf -n1 -e "${commands[@]}")
"$chosen" args...
или, если вы использовали массив, вам нужно будет использовать ссылку на имя для доступа к нему:
commands=(cmd1 cmd2)
declare -n chosen=$(shuf -n1 -e "${commands[@]}")
"${chosen[@]}" args...