Đầu tiên, hãy để tôi nói rằng chmod 777 thậm chí không hoạt động cho việc này (mặc dù tôi biết đó không phải là giải pháp chính xác).
Đây là tình huống: Tôi có một máy chủ thư nhận thư. Trên máy chủ đó có một cronjob chạy tập lệnh .sh di chuyển các tệp thư sang chia sẻ samba. Một máy chủ ứng dụng riêng biệt (là nơi tôi gặp sự cố) cũng có một cronjob chạy tập lệnh .sh để di chuyển các tệp thư đó khỏi chia sẻ:
#!/bin/sh
if [ "$(ls -A /samba/reports)" ]; sau đó
mv /samba/reports/* /home/adam/dmarc/reports/mail
chown adam:adam /home/adam/dmarc/reports/mail/*
chmod 664 /home/adam/dmarc/báo cáo/mail/*
fi
Tất cả điều này dường như làm việc tốt. Lưu ý, cronjob được chạy với quyền root (đó là crontab của root). Ngoài ra, thư mục 'báo cáo' được gắn dưới dạng một ổ bên trong bộ chứa Docker php:apache (-./reports:/var/www/reports:z). Các tệp ở đó và có sẵn để đọc trong vùng chứa. Tuy nhiên, khi tôi sử dụng php (được gọi từ tập lệnh, không phải apache), tôi không được phép đổi tên/di chuyển tệp. Tuy nhiên, nếu tôi chuyển từng tệp thành một tệp giống hệt nhau với một tên khác:
mèo theProblemFile > noProblem
.... sau đó nó hoạt động tốt. Chủ sở hữu/nhóm và quyền hoàn toàn giống nhau cho cả hai.
Có điều gì đó về việc tệp đã được di chuyển từ phần chia sẻ Samba khiến nó khác đi không? Chuyện gì đang xảy ra ở đây? Ngoài ra, trong vấn đề nhận các tệp từ máy chủ thư đến máy chủ ứng dụng, có cách nào theo tiêu chuẩn ngành/cách thực hành tốt nhất/được ưu tiên để thực hiện việc này không?
Cảm ơn