تغییر خودکار owner فایل در Ubuntu به محض ایجاد فایل جدید

مطلب ویژه
نظر شما چیه؟

جرقه اولیه این موضوع زمانی خورد که کاربر یک فایل php داشت که از طریق اجرای اون فایل، یک سری فایل های جانبی ایجاد میشدن، ولی موقع اجرای این فایل با خطای زیر مواجه میشد:

Warning: file_put_contents(test.txt) failed to open stream: Permission denied

بعد از جستجو متوجه شدم مشکل به خاطر سطح دسترسی فایل نیست، به خاطر owner هست. چون وب سرور apache باید owner اون فایل باشه تا بعد از ارسال درخواست و اجرای فایل php بتونه فایل های موردنظر رو ایجاد کنه.

در اوبونتو، با اجرای دستوری مشابه دستور زیر میشه مشکل رو حل کرد:

chown -R www-data:www-data /path/to/dir

به جای /path/to/dir آدرس دایرکتوری موردنظر رو قرار بدین

منبع: https://gist.github.com/ybagheri/e88550dbc2d6df91b215eae3772938b3

اما این کار هر دفعه که فایل جدیدی ایجاد میشه، باید انجام بشه که خب کار سختی هست. به همین خاطر تصمیم گرفتم از ChatGPT کمک بگیرم و فرایند رو خودکار کنم.

نتیجه این شد که از inotify-tools استفاده کنم. پس اول به کمک دستور زیر اون رو در Ubuntu نصب کنید:

sudo apt-get install inotify-tools

حالا در مسیر موردنظر، فایلی تحت عنوان chown_script.sh ایجاد کنید و محتویات زیر رو در اون قرار بدید:

#!/bin/bash

# Define the directory to monitor
directory="/path/to/directory"

# Define the desired owner
owner="www-data"

# Use inotifywait to monitor the directory for new files
inotifywait -m -e create --format '%w%f' "$directory" |
while read -r filename; do
    # Change the owner of the new file
    chown "$owner" "$filename"
done

حالا دستور زیر رو اجرا کنید:

chmod +x chown_script.sh

در نهایت برای اینکه فایل بصورت خودکار در پس زمینه اجرا بشه و بتونه فایل های جدید رو رصد کنه، اون رو به کمک دستور زیر اجرا کنید:

sudo ./chown_script.sh

حالا به محض ایجاد فایل جدید، owner اون فایل بصورت خودکار توی گروه کاربری www-data قرار میگیره و مشکل سطح دسترسی برای اجرای چنین فایل های php حل میشه.

لینک کوتاه: https://waterdirectory.ir/?p=1922
برچسب ها:

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

*

*

موارد ارسالی در سایت حاصل تجربیات و گردآوری های شخصی است، در صورت انتشار در جای دیگر، لطفا منبع را ذکر کنید
قدرت گرفته از : وردپرس