مدیریت مالکیت فایلها یکی از مهارتهای پایه و بسیار مهم در لینوکس است؛ مخصوصاً اگر از VPS لینوکس استفاده میکنید، سرور اختصاصی مدیریت میکنید یا با هاست اشتراکی کار میکنید.
اگر با خطای Permission Denied مواجه شدهاید، قصد دارید مالکیت فایلهای یک وبسایت را اصلاح کنید یا میخواهید فایلها را بین کاربران مختلف منتقل کنید، دستور chown ابزار استاندارد لینوکس برای انجام این کار است.
در این مقاله بهصورت کامل توضیح میدهیم:
مالکیت فایل در لینوکس چیست؟
دستور
chownچگونه کار میکند؟چگونه مالک فایل را تغییر دهیم؟
رایجترین اشتباهات هنگام استفاده از chown
تفاوت chown و chmod
نکات امنیتی مهم هنگام تغییر مالکیت فایلها
مالکیت فایل در لینوکس یعنی چه؟
لینوکس یک سیستم مدیریت دسترسی بسیار دقیق دارد. هر فایل و پوشه در لینوکس دارای سه بخش اصلی است:
Owner (مالک) → کاربری که مالک فایل است
Group (گروه) → گروهی از کاربران که به فایل دسترسی دارند
Permissions (سطح دسترسی) → تعیین میکند چه کسی میتواند فایل را بخواند، ویرایش کند یا اجرا کند
برای مشاهده مالکیت یک فایل از دستور زیر استفاده کنید:
ls -l filename
مثال خروجی:
-rw-r--r-- 1 root www-data 2048 index.html
در این مثال:
مالک (Owner):
rootگروه (Group):
www-data
دستور chown در لینوکس چیست؟
دستور chown (مخفف Change Owner) برای تغییر مالک و یا گروه یک فایل یا پوشه در لینوکس استفاده میشود.
این دستور میتواند:
مالک یک فایل را تغییر دهد
گروه فایل را تغییر دهد
مالک و گروه را همزمان تغییر دهد
مالکیت یک دایرکتوری را بهصورت بازگشتی تغییر دهد
???? نکته مهم:
در اکثر توزیعهای لینوکس فقط کاربر root یا کاربری با دسترسی sudo میتواند مالک فایلها را تغییر دهد.
ساختار کلی دستور chown
ساختار کلی دستور:
chown [OPTIONS] OWNER[:GROUP] FILE
اجزای دستور:
OWNER → نام کاربری جدید یا UID
GROUP → نام گروه یا GID (اختیاری)
FILE → فایل یا پوشه مورد نظر
فرمهای رایج استفاده:
chown user file
chown user:group file
chown :group file
chown -R user:group directory
چگونه مالک فایل را در لینوکس تغییر دهیم؟
1️⃣ تغییر فقط مالک فایل
اگر فقط بخواهید مالک را تغییر دهید:
sudo chown username filename
مثال:
sudo chown john report.txt
در این حالت:
مالک = john
گروه بدون تغییر باقی میماند
2️⃣ تغییر همزمان مالک و گروه
برای تغییر مالک و گروه با هم:
sudo chown username:groupname filename
مثال:
sudo chown john:developers app.log
نتیجه:
مالک = john
گروه = developers
3️⃣ تغییر فقط گروه فایل
اگر فقط بخواهید گروه را تغییر دهید:
sudo chown :groupname filename
مثال:
sudo chown :www-data index.html
تغییر مالکیت پوشه در لینوکس بهصورت بازگشتی
در سرورهای لینوکس، مخصوصاً برای وبسایتها، معمولاً نیاز است مالکیت یک پوشه و تمام فایلهای داخل آن تغییر کند.
برای این کار از گزینه -R استفاده میکنیم:
sudo chown -R username:groupname directory_name
مثال رایج در سرورهای وب:
sudo chown -R www-data:www-data /var/www/html
این دستور معمولاً برای رفع مشکلات دسترسی در Apache یا Nginx استفاده میشود.
⚠️ هشدار:
استفاده اشتباه از -R میتواند دسترسیهای سیستمی را مختل کند. همیشه قبل از اجرا مسیر را بررسی کنید.
بررسی مالکیت فایل بعد از اجرای chown
برای اطمینان از اعمال تغییرات:
برای فایل:
ls -l filename
برای پوشه:
ls -ld directory_name
مهمترین گزینههای دستور chown
| گزینه | توضیح |
|---|---|
-R | تغییر بازگشتی مالکیت |
-v | نمایش فایلهای تغییر یافته |
--from | تغییر فقط در صورت تطابق مالک فعلی |
-h | تغییر مالک لینک سمبولیک |
مثال حالت verbose:
sudo chown -v john report.txt
چه زمانی باید مالک فایل را تغییر دهیم؟
در شرایط زیر استفاده از دستور chown ضروری است:
رفع خطای Permission Denied
تنظیم دسترسی صحیح برای Apache یا Nginx
انتقال فایل بین کاربران
ایمنسازی پوشههای برنامهها
مدیریت چندکاربره در VPS
اصلاح مالکیت بعد از آپلود فایل با FTP یا SCP
اشتباهات رایج هنگام استفاده از chown
❌ اجرای دستور بدون sudo
→ تغییر انجام نمیشود.
❌ استفاده نادرست از گزینه -R
→ ممکن است دسترسی کل سیستم مختل شود.
❌ دادن مالکیت root به فایلهای وبسایت
→ ریسک امنیتی بالا ایجاد میکند.
✅ بهترین روش:
همیشه کمترین سطح دسترسی لازم را اختصاص دهید (اصل Least Privilege).
تفاوت chown و chmod چیست؟
| دستور | کاربرد |
|---|---|
chown | تغییر مالک یا گروه فایل |
chmod | تغییر سطح دسترسی فایل |
این دو دستور مکمل هم هستند اما وظایف متفاوتی دارند.
نکات امنیتی هنگام استفاده از chown
هرگز فایلهای قابل دسترسی از وب را به root اختصاص ندهید
برای سرویسهایی مثل Apache یا Nginx کاربر اختصاصی تعریف کنید
بعد از مهاجرت یا دیپلوی حتماً مالکیت فایلها را بررسی کنید
تغییر بازگشتی را فقط روی مسیرهای مشخص اجرا کنید
جمعبندی
یادگیری نحوه تغییر مالک فایل در لینوکس یکی از مهارتهای ضروری برای توسعهدهندگان، مدیران سرور و صاحبان وبسایت است.
دستور chown به شما کنترل دقیقی روی دسترسی فایلها، امنیت سیستم و پایداری سرور میدهد. اگر سرور VPS یا وبسایت لینوکسی مدیریت میکنید، تسلط بر این دستور باعث میشود:
خطاهای دسترسی را سریعتر رفع کنید
امنیت سیستم را افزایش دهید
مدیریت کاربران را حرفهایتر انجام دهید
سوالات متداول درباره دستور chown
❓ آیا کاربر عادی میتواند مالک فایل را تغییر دهد؟
خیر. فقط کاربر root یا کاربران دارای دسترسی sudo میتوانند مالک فایل را تغییر دهند.
❓ آیا chown سطح دسترسی فایل را هم تغییر میدهد؟
خیر. این دستور فقط مالکیت را تغییر میدهد. برای تغییر سطح دسترسی باید از chmod استفاده کنید.
❓ چگونه مالک چند فایل را همزمان تغییر دهیم؟
sudo chown username file1 file2 file3
❓ آیا دستور chown در همه توزیعهای لینوکس وجود دارد؟
بله. این دستور بخشی از GNU Coreutils است و در تمام توزیعهای اصلی مانند Ubuntu، Debian، CentOS و RHEL وجود دارد.
❓ چرا بعد از اجرای chown هنوز خطای Permission Denied دریافت میکنم؟
زیرا تغییر مالکیت بهتنهایی مجوز دسترسی ایجاد نمیکند. ممکن است لازم باشد سطح دسترسی فایل را با دستور chmod نیز تنظیم کنید.
