Mktemp in einem Docker-Container schlägt fehl, die Berührung funktioniert jedoch

487
Paul

Ich befinde mich in einem Docker-Container mit einem zugeordneten NFS-Volume. In einem Verzeichnis innerhalb des Volumes kann ich Dateien nach touchoder mit anderen Methoden erstellen, jedoch nicht mit 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/ 

Irgendwelche Ideen, warum dies passieren würde?

Beachten Sie, dass mktemp im Docker von coreutils bereitgestellt wird, also keine 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) Ich würde ein besseres Gefühl für Ihre Frage bekommen, wenn Sie zeigen würden, dass * einige * Befehle mit einem vollständigen Pfadnamen funktionieren. B. `touch / home / share / scripts / converth264queue / test`,` cat> / home / share / scripts / converth264queue / test2` und sogar `` ls -ld / home / share / scripts / converth264queue``. (2) In diesem Fall wird es wahrscheinlich nicht wirklich helfen, aber wenn ein Befehl unerwartet / mysteriös ausfällt, ist es in der Regel eine gute Idee, $ echo zu lassen, um zu sehen, ob der Befehl etwas aussagt oder Ihnen einen Wert gibt Hinweis. (3) Tritt dieses Problem nur in `/ home / share / scripts / converth264queue` auf? … (Fortsetzung) Scott vor 6 Jahren 0
(Fortsetzung)… Was haben Sie experimentiert? Wo kommt es vor und nicht vor? Die Tatsache, dass Sie es in einem Verzeichnis demonstriert haben, dessen Name 36 Zeichen lang ist (zum Beispiel neunmal so lang wie `/ tmp`), macht das Lesen der Frage schwierig (erfordert horizontales Scrollen) und macht das Kommentieren umständlich. (4) Besteht die Möglichkeit, dass "mktemp" auf Ihrem System eingestellt ist? Mach 'ls -ld $ (welches mktemp) `. (5a) "ls" ignoriert "-a", wenn Sie "-d" angeben (dh "ls -lad" entspricht "ls -ld"). (5b) "ls -n" impliziert "-l" (dh "ls" ignoriert "-l", wenn Sie "-n" angeben). Scott vor 6 Jahren 0
Ja, der Fehlercode ist nur "1". Ich frage mich, ob die kollisionsfreie Garantie von mktemp etwas enthält, was bedeutet, dass sie einen größeren Zugriff benötigt, als über ein Docking-zugeordnetes nfs-Volume bereitgestellt werden kann. Paul vor 6 Jahren 0

0 Antworten auf die Frage