Если путь назначения cp оказывается каталогом, как избежать ошибочного создания файлов внутри этого каталога?

Блокировать все остальное для веб-сервера

iptables -A INPUT -p tcp ! -s 10.8.0.0/24,127.0.0.0/8 --dport 80 -j REJECT
iptables -A INPUT -p tcp ! -s 10.8.0.0/24,127.0.0.0/8 --dport 443 -j REJECT
5
04.01.2021, 20:33
2 ответа

Это можно сделать с помощью перенаправления. Он ведет себя как cp-T, --no-target-directory(и завершается с ошибкой, если dstявляется каталогом):

$ cat src > dst
6
18.03.2021, 22:39

Что касается абсолютной совместимости, вы можете проверить целевой каталог перед попыткой копирования.

Либо ошибка,

[ -d dest ] && echo "${0##*/}: is a directory: dest" >&2 && exit 1
cp src dest

или тихо удалить цель

[ -d dest ] && rm -rf dest
cp src dest

Не существует атомарной операции для удаления каталога и замены его файлом. (Вы можете найти такую ​​команду, как cp --no-target-directory, но лежащая в ее основе операция по-прежнему принципиально не атомарна. Все, что вы делаете, это уменьшает поверхность атаки, а не устраняет ее.)

3
18.03.2021, 22:39

Теги

Похожие вопросы