mktemp в контейнере Docker не работает, но Touch работает

369
Paul

Я нахожусь в док-контейнере с сопоставленным томом NFS. В каталоге внутри тома я могу создавать файлы touchдругими способами, но не используя mktemp:

$ ls -ld /home/share/scripts/converth264queue/ drwxrwxr-x 1 abc abc 964 Oct 22 08:04 /home/share/scripts/converth264queue/ $ touch /home/share/scripts/converth264queue/test2 $ ls -l /home/share/scripts/converth264queue/test2 -rw-r--r-- 1 abc abc 10 Oct 22 08:04 /home/share/scripts/converth264queue/test2 $ cat > /home/share/scripts/converth264queue/test3 test etst  $ mktemp -p /home/share/scripts/converth264queue file.XXXXXXXX mktemp: failed to create file via template ‘/home/share/scripts/converth264queue/file.XXXXXXXX’: Permission denied $ mktemp -p /home/share/scripts/converth264queue mktemp: failed to create file via template ‘/home/share/scripts/converth264queue/tmp.XXXXXXXXXX’: Permission denied $ id uid=1000(abc) gid=100(abc) groups=100(abc),1000(users) $ ls -lnd /home/share/scripts/converth264queue/ drwxrwxr-x 1 1000 100 964 Oct 22 08:04 /home/share/scripts/converth264queue/ 

Есть идеи, почему это произойдет?

Обратите внимание, что mktemp в докере предоставляется coreutils, поэтому нет setuid:

$ ls -ld $(which mktemp) lrwxrwxrwx 1 root root 20 Oct 20 09:09 /bin/mktemp -> ../usr/bin/coreutils $ ls -ld /usr/bin/coreutils -rwxr-xr-x 1 root root 1065928 May 1 21:44 /usr/bin/coreutils 
2
(1) Я бы лучше понял ваш вопрос, если бы вы продемонстрировали, что * некоторые * команды работают с полным путем; например, `touch / home / share / scripts / converth264queue / test`,` cat> / home / share / scripts / converth264queue / test2` и даже `` ls -ld / home / share / scripts / converth264queue``. (2) Это, вероятно, не очень поможет в этом случае, но, как правило, когда команда неожиданно / загадочно завершается с ошибкой, рекомендуется `echo $? ', Чтобы узнать, говорит ли это вам что-нибудь или дает вам Подсказка. (3) Эта проблема возникает только в `/ home / share / scripts / converth264queue`? … (Продолжение) Scott 5 лет назад 0
(Продолжение) ... Какие эксперименты вы провели? Где это происходит, а не происходит? Тот факт, что вы продемонстрировали его в каталоге, длина которого составляет 36 символов (например, в девять раз длиннее `/ tmp`), затрудняет чтение вопроса (требует горизонтальной прокрутки) и затрудняет комментирование. (4) Есть ли вероятность того, что `mktemp` установлен в вашей системе? Сделайте `ls -ld $ (который mktemp)`. (5a) `ls` игнорирует` -a` при указании `-d` (то есть` ls -lad` эквивалентно `ls -ld`). (5b) `ls -n` подразумевает` -l` (то есть `ls` игнорирует` -l`, когда вы указываете `-n`). Scott 5 лет назад 0
Да, код ошибки просто `1`. Мне интересно, есть ли что-то в гарантии отсутствия столкновений, которую предоставляет mktemp, что означает, что ему нужен больший доступ, чем он может быть предоставлен для тома nfs с сопоставленным докером. Paul 5 лет назад 0

0 ответов на вопрос

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