دستور chown در لینوکس به شما امکان می‌دهد، کاربر و مالکیت گروه یک فایل، دایرکتوری یا فایل‌های اشاره‌گر (symbolic link) را تغییر دهید.

در لینوکس، تمام فایل‌ها به یک مالک و یک گروه اختصاص یافته‌اند و دارای حقوق دسترسی برای مالک فایل، اعضای گروه و دیگران می‌باشند.

در این آموزش، نحوه استفاده از دستور chown را از طریق مثال‌های عملی به شما نشان خواهیم داد.

 

 

نحوه استفاده از chown

ساختار دستوری chown به شکل زیر می‌باشد:

chown [OPTIONS] USER[:GROUP] FILE(s)

در این ساختار، USER نام کاربری یا شناسه کاربر (UID) مالک جدید است. GROUP نام گروه جدید یا ID گروه (GID) است. FILE نام یک یا چند فایل، دایرکتوری یا فایل‌های اشاره‌گر است.

 

USER - اگر فقط کاربر مشخص شده باشد، آن کاربر، مالک فایل‌های تعیین شده می‌شود و مالکیت گروه تغییر نمی‌یابد.

USER: - هنگامی‌که نام کاربری به همراه علامت “:” باشد و نام گروه داده نشود، کاربر مالک فایل‌ها شده و مالکیت گروه فایل‌ها به گروه لاگین کاربر تغییر می‌یابد.

USER:GRUP - اگر کاربر و گروه مشخص شده باشند (بدون هیچ فاصله‌ای بین آن‌ها)، مالکیت کاربر فایل‌ها به کاربر تعیین شده تغییر می‌یابد و مالکیت گروه نیز به گروه مشخص شده تغییر می‌یابد.

 :GRUP - اگر کاربر حذف شده و گروه با یک پیشوند “:” آمده باشد، فقط مالکیت گروهی فایل‌ها به گروه تعیین شده تغییر می‌یابد.

: - اگر فقط یک “:” بدون كاربر و گروه داده شده باشد، تغییری ایجاد نمی‌شود.

 

این مطلب نیز ممکن است برای شما مفید باشد: اصلاح دسترسی فایل ها و دایرکتوری ها در لینوکس

 

به طور پیش فرض، پس از اجرای موفقیت آمیز دستور chown هیچ خروجی‌ای تولید نشده و صفر برمی‌گردد.

می‌توانید از دستور ls -l استفاده کنید؛ تا بفهمید چه کسی مالک یک فایل است یا فایل متعلق به کدام گروه می‌باشد:

$ ls -l filename.txt
Output
-rw-r--r-- 12 linuxize users 12.0K Apr  8 20:51 filename.txt
|[-][-][-]-   [------] [---]
                |       |
                |       +-----------> Group
                +-------------------> Owner

فقط root یا کاربر دارای امتیازات sudo می‌تواند، مالکیت گروه یک فایل را تغییر دهد.

 

این مطلب نیز ممکن است برای شما مفید باشد: تغییر سطح دسترسی فایل ها در کنترل پنل دایرکت ادمین

 

نحوه تغییر مالک یک فایل

برای تغییر مالک یک فایل از دستور chown و به دنبال آن نام کاربر مالک جدید و فایل هدف به عنوان آرگمان استفاده کنید:

chown USER FILE

به عنوان مثال، دستور زیر مالکیت فایلی به نام file1 را به یک مالک جدید به نام linuxize تغییر می‌دهد:

$ chown linuxize file1

برای تغییر مالکیت چندین فایل یا دایرکتوری، آن‌ها را به صورت یک لیست که با فاصله از همدیگر جدا می‌شوند، مشخص کنید. دستور زیر مالکیت فایلی به نام file1 و دایرکتوری dir1 را به یک مالک جدید به نام linuxize تغییر می‌دهد:

$ chown linuxize file1 dir1

به جای نام کاربری می‌توانید از شناسه عددی کاربر (UID) استفاده کنید. مثال زیر مالکیت یک فایل به نام file2 را به یک مالک جدید با UID(شناسه) 1000 تغییر می‌دهد:

$ chown 1000 file2

 

نحوه تغییر مالک و گروه یک فایل

برای تغییر مالک و گروه فایل از دستور chown به دنبال مالک جدید و گروه که با علامت “:” از همدیگر جدا شده اند (بدون وجود فاصله) و فایل مورد نظر استفاده کنید.

chown USER:GROUP FILE

دستور زیر مالکیت فایلی به نام file1 را به یک مالک جدید به نام linuxize و گروه users تغییر می‌دهد:

$ chown linuxize:users file1

اگر نام گروه را بعد از علامت “:” حذف کنید، گروه فایل به گروه لاگین کاربر مشخص شده تغییر می‌یابد:

$ chown linuxize: file1

 

نحوه تغییر گروه یک فایل

برای تغییر تنها گروه یک فایل، از دستور chown به همراه یک علامت “:” و نام گروه جدید (بدون فاصله بین آن‌ها) و فایل مورد نظر به عنوان یک آرگومان استفاده کنید:

chown :GROUP FILE

دستور زیر گروه مالکیت یک فایل به نام file1 را به www-data تغییر می‌دهد:

$ chown :www-data file1

دستور دیگری که می‌توانید برای تغییر مالکیت گروه فایل‌ها استفاده کنید دستور chgrp است.

 

نحوه تغییر مالکیت فایل‌های اشاره‌گر

هنگامی‌که از گزینه بازگشتی استفاده نمی‌شود، دستور chown به تنهایی مالکیت گروه فایل‌هایی را که فایل‌های اشاره‌گر به آنها اشاره می‌کنند، تغییر می‌دهد؛ و مالکیت گروه خود فایل‌های اشاره‌گر تغییر نمی‌یابد.

به عنوان مثال، در موردی که می‌خواهید مالک و گروه فایل اشاره‌گر symlink1 را که به var/www/file1/ اشاره می‌کند، تغییر دهید، با استفاده از دستور chown به صورت زیر تنها مالکیت فایل یا دایرکتوری که به آن اشاره شده است، تغییر می‌یابد:

$ chown www-data: symlink1

این احتمال وجود دارد که به جای مالکیت فایل مورد نظر، خطای “cannot dereference ‘symlink1’: Permission denied” را دریافت نمایید.

دلیل رخداد این خطا این است که  در بیشتر توزیع‌های لینوکس به‌طور پیش‌فرض فایل‌های اشاره‌گر محافظت شده هستند، و شما نمی‌توانید روی فایل مورد نظر خود عملیات انجام دهید. این گزینه در proc/sys/fs/protection_symlinks/ مشخص شده است. 1 به معنای فعال و 0 به معنای غیرفعال کردن است. توصیه می‌کنیم محافظت از Symlink را غیرفعال نکنید.

برای تغییر مالکیت خود فایل‌های اشاره‌گر، می‌توانید از گزینه h- استفاده کنید:

$ chown -h www-data symlink1

 

نحوه تغییر مالکیت فایل به صورت بازگشتی

برای اینکه به‌صورت بازگشتی روی کلیه فایل‌ها و دایرکتوری‌های داخل یک دایرکتوری مشخص کار کنید، از گزینه R-  یا گزینه recursive-- استفاده نمایید:

chown -R USER:GROUP DIRECTORY

مثال زیر مالکیت کلیه فایل‌ها و زیردایرکتوری‌های داخل دایرکتوری var/www/ را به یک مالک و گروه جدید به نام www-data تغییر می‌دهد:

$ chown -R www-data: /var/www

اگر دایرکتوری شامل فایل‌های اشاره‌گر باشد، گزینه h- را انتخاب کنید:

$ chown -hR www-data: /var/www

گزینه‌های دیگر که می‌توانند هنگام تغییر بازگشتی مالکیت دایرکتوری مورد استفاده قرار گیرند، گزینه‌های H- و L- هستند.

اگر آرگومان ارسالی به دستور chown یک فایل اشاره‌گر باشد که به یک دایرکتوری اشاره می‌کند، گزینه H- باعث می‌شود که دستور، آن فایل را بپیماید. گزینه L- به دستور chown می‌گوید که هر فایل اشاره‌گری را تا دایرکتوری اشاره شده بپیماید. تا جایی که امکان دارد، نباید از این گزینه‌ها استفاده کنید؛ زیرا ممکن است سیستم‌تان به هم ریخته و یا خطر امنیتی ایجاد شود.

 

استفاده از یک فایل مرجع

گزینه reference = ref_file-- به شما امکان می‌دهد تا کاربر و مالکیت گروه فایل‌های مورد نظر را به کاربر و مالکیت گروه فایل مرجع تعیین شده (ref_file) تغییر دهید. اگر فایل مرجع یک فایل اشاره‌گر باشد، دستور chown از کاربر و گروه فایل مورد نظر استفاده می‌کند.

chown --reference=REF_FILE FILE

به عنوان مثال، دستور زیر مالکیت گروه و کاربر مربوط به file1 را به file2 اختصاص می‌دهد.

$ chown --reference=file1 file2

 

 

منبع:

linuxize