ก่อนอื่น ขอบอกว่า chmod 777 ใช้ไม่ได้กับสิ่งนี้ (แม้ว่าฉันจะรู้ว่านั่นไม่ใช่วิธีแก้ปัญหาที่ถูกต้อง)
นี่คือสถานการณ์: ฉันมีเมลเซิร์ฟเวอร์ที่รับเมล บนเซิร์ฟเวอร์นั้นมี cronjob ที่รันสคริปต์ .sh ที่ย้ายไฟล์เมลไปยัง samba ที่แชร์ เซิร์ฟเวอร์แอพแยกต่างหาก (ซึ่งเป็นที่ที่ฉันมีปัญหา) ยังมี cronjob ที่รันสคริปต์ .sh ที่ย้ายไฟล์เมลเหล่านั้นจากการแชร์:
#!/bin/sh
ถ้า [ "$(ls -A /samba/reports)" ]; แล้ว
mv /samba/reports/* /home/adam/dmarc/reports/mail.mv
chown adam:อดัม /home/adam/dmarc/reports/mail/*
chmod 664 /home/adam/dmarc/reports/mail/*
ไฟ
ทั้งหมดนี้ดูเหมือนจะทำงานได้ดี โปรดทราบว่า cronjob จะทำงานในฐานะรูท (มันคือ crontab ของรูท) นอกจากนี้ ไดเร็กทอรี 'รายงาน' ยังเมาต์เป็นวอลุ่มภายในคอนเทนเนอร์ php:apache Docker (-./reports:/var/www/reports:z) ไฟล์อยู่ที่นั่นและสามารถอ่านได้ภายในคอนเทนเนอร์ อย่างไรก็ตาม เมื่อฉันใช้ php (เรียกใช้จากสคริปต์ ไม่ใช่ apache) ฉันไม่ได้รับอนุญาตให้เปลี่ยนชื่อ/ย้ายไฟล์ อย่างไรก็ตาม ถ้าฉันกำหนดให้แต่ละไฟล์เป็นไฟล์เดียวกันโดยใช้ชื่ออื่น:
cat theProblemFile > noProblem
....ก็ใช้งานได้ดี เจ้าของ/กลุ่มและการอนุญาตเหมือนกันทุกประการ
มีบางอย่างเกี่ยวกับไฟล์ที่ถูกย้ายจากการแชร์ของ Samba ที่ทำให้แตกต่างออกไปหรือไม่? เกิดขึ้นที่นี่คืออะไร? นอกจากนี้ ในเรื่องของการรับไฟล์จากเมลเซิร์ฟเวอร์ไปยังเซิร์ฟเวอร์แอพ มีวิธีที่เป็นมาตรฐานอุตสาหกรรม/วิธีปฏิบัติที่ดีที่สุด/ที่ต้องการหรือไม่?
ขอบคุณ