Стандартное де-юре расположение временных файлов задается в переменной среды TMPDIR
.
Эта переменная должна представлять путь к каталогу, доступному для программ, которым требуется место для создания временных файлов.
Фактически, многие системы не определяют TMPDIR
. Стандартное фактическое расположение временных файлов - / tmp
. Поэтому проверьте TMPDIR
, и если он не установлен, используйте / tmp
. В сценарии оболочки вы можете использовать $ {TMPDIR: - / tmp}
, или, если вам удобнее,
if [ -z "$TMPDIR" ]; then TMPDIR=/tmp; fi
или справиться с set -u
: "${TMPDIR:=/tmp}"
Вы можете предположить что это место доступно для записи, но оно может быть доступно для чтения и записи всем, поэтому:
mktemp
(широко распространена, присутствует в GNU, BusyBox, BSD, но не POSIX) или библиотечную функцию mkstemp
C. Под капотом open
или creat
должны вызываться с флагом O_EXCL
. mkdir
. Это безопасно от обмана прав собственности, потому что при этом не будет повторно использоваться существующий файл, но он подвержен тому же отказу в обслуживании, что и обычные файлы, поэтому вы должны использовать случайное имя. mktemp -d
- отличный способ сделать это. / tmp
обычно создаются в подкаталогах. Программы, которые создают подкаталог / tmp
(или $ TMPDIR
, если установлен) и создают в нем именованный сокет, включают серверы X11, ssh-agent, gpg-agent, KDE, emacs,… (это только те, которые существуют на машине, на которой я публикую это). Как видите, вы попадете в хорошую компанию.
Вы можете попробовать переустановить пакет ca-сертификатов
и пакет openssl
на своем сервере:
$ sudo yum reinstall ca-certificates openssl
У меня это сработало (на машине CentOS 6):
mkdir /usr/src/ca-certificates && cd /usr/src/ca-certificates
wget http://mirror.centos.org/centos/6/os/x86_64/Packages/ca-certificates-2015.2.6-65.0.1.el6_7.noarch.rpm
rpm2cpio ca-certificates-2015.2.6-65.0.1.el6_7.noarch.rpm | cpio -idmv
cp -pi ./etc/pki/tls/certs/ca-bundle.* /etc/pki/tls/certs/
Ответьте «да», чтобы перезаписать файлы.
Для проверки:
curl -vvv https://www.unixy.net