Redirecting …..
$ls -l
در دستور و برنامه ی بالا تنها stdout داریم لذا تنها خروجی درست در standard output چاپ می شود .
$ls -l > Out
در دستور بالا خروجی درست برنامه را درون فایل Out ریختیم . توجه داشته باشید که دستور بالا معادل دستور زیر است :
$ls -l 1> Out
حال فرض کنید فایلی با نام Pazhoheshi در دایرکتوری جاری وجود ندارد . به مثال زیر توجه کنید :
$ls -l Pazhoheshi
نتیجه ی حاصل نمایش ارور زیر در Standard Output می شود :
ls: cannot access Pazhoheshi: No such file or directory
حال برای ذخیره کردن خروجی غلط یا همان Stderr یا همین ارور دریافتی بالا , در یک فایل به صورت زیر عمل می کنیم :
$ls -l Pazhoheshi 2> Out
طبیعتا اگر بخواهیم به صورت هم زمان خروجی درست و غلط را در دو فایل جدا از هم , ذخیره کنیم . به صورت زیر عمل خواهیم کرد : ( با فرض وجود داشتن فایل Test و وجود نداشتن فایل Pazhoheshi )
$ls -l Pazhoheshi Test > Stdout 2> Stderr
اما زمانی پیش می آید که می خواهیم خروجی درست و غلط در یک فایل ذخیره شود . برای این منظور می توان به یکی از صورت های زیر عمل کرد :
$ls -l Pazhoheshi Test > Out 2>&1 $ls -l Pazhoheshi Test 2> Out 1>&2 $ls -l Pazhoheshi Test &> Out
نکته : در تمامی مثال های بالا از کارکتر بزرگ تر ( < ) استفاده کردیم . این کار باعث overwrite می شود ( در صورتی که فایل از قبل وجود داشته باشد ) . برای Append کردن خروجی به ادامه ی فایل باید از << استفاده کرد . برای مثال : ( با فرض وجود نداشتن دو فایل Test , Text )
$ls -l Pazhoheshi Test Text &>> Out
Piping ….
دستور less :
زمانی پیش می آید که تعداد خطوط چاپ شده ی یک فایل در ترمینال زیاد است و ترمینال فقط خطوط آخر را برای ما نمایش می دهد . لذا برای کنترل صفحه های باز شده می توان از این برنامه استفاده کرد
رایج ترین کلید های مورد استفاده در این برنامه up / down / q / Ctrl + b / Ctrl + d می باشد . دو کلید Ctrl + b و Ctrl + d به ترتیب به صفحه ی قبلی و صفحه ی بعدی می روند .
دستور more :
دقیقا همان کار less را انجام می دهد با این تفاوت که دیگر نمی توان به خطوط و صفحات بالایی رفت . معروف ترین کلید های استفاده شده در این برنامه q / Enter / Space می باشد .
more is a basic pager, which allows you to scroll downwards, one page at a time. Only downwards.
less is also a pager, but has addition functionality to scroll upwards and downwards through the input, in addition to several other extensions.
less is more
$cat /etc/apt/sources.list | less $cat /etc/apt/sources.list | more
اصطلاحا به چنین برنامه هایی Pager می گویند .
نکته : با توجه به قسمت Redirecting می توان نتیجه گرفت که در دو دستور بالا تنها خروجی درست یا Stdout به عنوان ورودی وارد برنامه ی less و more می شود . این موضوع با مثال زیر قابل فهم است : ( با فرض وجود نداشتن فایل Test )
$cat /etc/passwd Test | less
نتیجه این خواهد شد که فقط محتویات فایل passwd برای ما نمایش داده می شود . اما برای این که خروجی غلط یا همان stderr هم به عنوان ورودی وارد برنامه ی less شود به صورت زیر عمل می کنیم :
$cat /etc/passwd Test 2>&1 | less
نتیجه این می شود که در Standard Output عبارت زیر را نیز خواهیم دید :
cat: Test: No such file or directory
Using Man Pages …..
برای هر برنامه توضیحاتی مفصل همراه با معرفی انواع سوییچ ها و … وجود دارد . برای این منظور می توان از برنامه ی man استفاده کرد . مثال :
$man ls $man passwd
نکته ی حایز اهمین این جاست که هر برنامه برای خود یک section number دارد :
The table below shows the section numbers of the manual followed by the types of pages they contain. 1 Executable programs or shell commands 2 System calls (functions provided by the kernel) 3 Library calls (functions within program libraries) 4 Special files (usually found in /dev) 5 File formats and conventions eg /etc/passwd 6 Games 7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7) 8 System administration commands (usually only for root) 9 Kernel routines [Non standard]
برای مثال در برنامه ی ls عبارت زیر را خواهیم دید :
LS(1) User Commands
یعنی section برنامه ی ls یک می باشد و همان طور که در جلوی آن نوشته شده است , این برنامه یک برنامه ی User Commands است . مثال دیگر :
$man shadow SHADOW(5) File Formats and Conversions
همانند دیگر برنامه ها , این برنامه هم دارای سوییچ های متعدد است . برای مثال سوییچ a- و w- و k- . اجازه دهید در قالب مثال این دو سوییچ را بررسی کنیم .
$man -a passwd
با استفاده از این سوییچ می توان تمامی passwd ها را مشاهده کرد .
iman@ubuntu:~/test$ man -a passwd --Man-- next: passwd(1ssl) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ] --Man-- next: passwd(5) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]
و سوییچ w- :
iman@ubuntu:~/test$ man -w shadow /usr/share/man/man5/shadow.5.gz -w, --where, --location Don't actually display the manual pages, but do print the location(s) of the source nroff files that would be for matted.
و در نهایت سوییچ k- :
man -k printf Search the short descriptions and manual page names for the keyword printf as regular expression. Print out any matches. Equivalent to apropos -r printf.
برای مثال :
$man -k partition
با استفاده از این سوییچ می توان تمامی برنامه های مرتبط با partition همراه با توضیحی مختصر و شماره ی section آن مشاهده کرد .
حال به مثال زیر توجه کنید : ( به قسمتی که Bold هست توجه کنید )
iman@ubuntu:~/test$ man -k passwd chgpasswd (8) - update group passwords in batch mode chpasswd (8) - update passwords in batch mode Crypt::PasswdMD5 (3pm) - Provides interoperable MD5-based crypt() functions fgetpwent_r (3) - get passwd file entry reentrantly getpwent_r (3) - get passwd file entry reentrantly gpasswd (1) - administer /etc/group and /etc/gshadow grub-mkpasswd-pbkdf2 (1) - generate hashed password for GRUB htpasswd (1) - Manage user files for basic authentication lppasswd (1) - add, change, or delete digest passwords. mkpasswd (1) - Overfeatured front end to crypt(3) pam_localuser (8) - require users to be listed in /etc/passwd passwd (1) - change user password passwd (1ssl) - compute password hashes passwd (5) - the password file passwd2des (3) - RFS password encryption smbpasswd (5) - The Samba encrypted password file smbpasswd (8) - change a user's SMB password
همان طور که مشاهده می کنید دو passwd با شماره section مختلف داریم . یعنی 1 و 5 . حال می توان به صورت زیر passwd مورد نظر خودمون رو انتخاب کنیم . برای مثال :
$man 5 passwd
توجه داشته باشید که اگر شماره ی 5 را ذکر نکنیم . به صورت پیش فرض passwd با شماره ی section یک باز خواهد شد .
در داخل توضیحاتی که برنامه ی man در اختیار ما قرار می دهد می توان به قسمتی به نام SEE ALSO اشاره کرد . که در آن دیگر برنامه ی ها مرتبط را می توان مشاهده کرد . برای مثال :
$man fdisk SEE ALSO cfdisk(8), sfdisk(8), mkfs(8), parted(8), partprobe(8), kpartx(8)
… Using whatis and apropos
iman@ubuntu:~/test$ whatis mkdir mkdir (2) - create a directory mkdir (1) - make directories
نکته : این دو برنامه یک دیتابیس و یا پایگاه داده برای خود دارند که هر برنامه همراه با توضیحاتی مختصر درون آن ثبت شده است . این DB متشکل از دو ستون است :
الف ) ستون نام برنامه
ب ) ستون توضیحات
نکته ی قابل توجه این جاست که whatis فقط در ستون الف به دنبال ورودی می گردد اما apropos هم در ستون الف و هم در ستون ب به دنبال ورودی می گردد
نتیجه : apropos زمانی استفاده می شود که هیچ ایده ای نداریم مثلا اسم برنامه ( ها ) پارتیشن بندی رو نمی دونیم . مثال :
iman@ubuntu:~/test$ apropos partition addpart (8) - simple wrapper around the "add partition" ioctl all-swaps (7) - event signalling that all swap partitions have been activated cfdisk (8) - display or manipulate disk partition table delpart (8) - simple wrapper around the "del partition" ioctl fdisk (8) - manipulate disk partition table mpartition (1) - partition an MSDOS hard disk partprobe (8) - inform the OS of partition table changes partx (8) - tell the Linux kernel about the presence and numbering of on-disk partitions sfdisk (8) - partition table manipulator for Linux
Description Candidates should be able to control file access through the proper use of permissions and ownerships.
Key Knowledge Areas:Manage access permissions on regular and special files as well as directories.
Use access modes such as suid, sgid and the sticky bit to maintain security.
Know how to change the file creation mask.
Use the group field to grant file access to group members.The following is a partial list of the used files, terms and utilities:chmod
umask
chown
chgrp
برای مثال اگر در دسته ی Group دو مقدار Write و execute را داشته باشیم : 011
برای مثال اگر در دسته ی Other دو مقدار Read , Write را داشته باشیم : 110
توجه داشته باشید که این اعداد بدست آمده یعنی 100 و 011 و 110 همگی در مبنای دو یعنی باینری می باشند .
حال اگر هر کدام از این اعداد را به مبنای 10 ( دسیمال ) ببریم و آن ها را به صورت منظم پشت سر هر قرار دهیم به عدد رو به رو خواهیم رسید : 4/3/6 یا 436
011 => ( 0 x 2^2 ) + ( 1 x 2^1 ) + ( 1 x 2^0 ) = 0 + 2 + 1 = 3
110 => ( 1 x 2^2 ) + ( 1 x 2^1 ) + ( 0 x 2^0 ) = 4 + 2 + 0 = 6
پس عدد دسیمال 4 مشخصه ی پرمیشن دسته ی Owner و عدد دسیمال 3 مشخصه ی پرمیشن دسته ی Group و عدد دسیمال 6 مشخصه ی پرمیشن دسته ی Other می باشد .
مثال : پرمیشن یک فایل 665 است .
حل : از سمت چپ , 6 اولی برای دسته ی Owner و 6 دومی برای دسته Group و 5 برای دسته ی Other می باشد .
اگر 6 دسیمال را به باینری تبدیل کنیم نتیجه می شود : 110
اگر 5 دسیمال را به باینری تبدیل کنیم نتیجه می شود : 101 چرا که :
101 => ( 1 x 2^2 ) + ( 0 x 2^1 ) + ( 1 x 2^0 ) = 4 + 0 + 1 = 5
اما در نمایش پرمیشن فایل ها و دایرکتوری ها نمی توان از این اعداد استفاده کرد چرا که بسیار گیج کننده است . برای این منظور از نوع دیگری از نمایش استفاده می کنند که اصطلاحا به آن Symbolic می گویند . برای مثال :
iman@ubuntu:~/test$ ls -l text -rw-rw-r-- 1 iman iman 10 Jul 2 17:52 text
و یا :
drwxrwxr-x 2 iman iman 4096 Jul 2 19:44 Dir
توجه داشته باشید d اول ستون پرمیشن مشخصه ی دایرکتوری بودن می باشد . حال به پرمیشن دقت کنید : rwxrwxr-x و یا rwx/rwx/r-x و یا :
دسته ی Owner : rwx یعنی این دسته قابلیت read و write و execute را دارد . توجه داشته باشید که execute را با x نمایش می دهند .
دسته ی Group : rwx یعنی این دسته قابلیت read و write و execute را دارد .
دسته ی Other : r-x یعنی این دسته قابلیت read را دارد . قابلیت write را ندارد و قابلیت execute را دارد . توجه داشته باشید که – نمایانگر نداشتن پرمیشن write می باشد .
ابتدا گفته شد فرض کنید که پرمیشن ها در لینوکس با 9 بیت تعیین می شود . در واقع پرمیشن ها با 12 بیت مشخص می شود یعنی یک دسته ی 3 تایی دیگر در ابتدا داریم اما کمتر با آن سر و کار داریم و معمولا هم متوجه حضور آن نمی شویم . برای مثال در خروجی دستور ls -l فقط 9 بیتی که در بالا صحبت کردیم را مشاهده خواهیم کرد .
اما این 3 بیت چی هستند و چه کارایی ای دارند :
این دسته ی 3 تایی یا 3 بیتی از 3 خانه به ترتیب با نام های suid و sgid و sticky تشکیل شده است :
1. وظیفه ی suid این است که در صورت فعال بودن بر روی فایلی . آن فایل را با پرمیشن سازنده یا همان Owner فایل اجرا می کند مثلا یک فایل اجرایی را فرض کنید که مقدار suid دارد و سازنده ی این فایل اجرایی root است . حال اگر یوزر دیگری ( limit ) این فایل اجرایی را اجرا کند ( در صورت داشتن پرمیشن execute ) . آن فایل با یوزر root به اجرا در می آید .
2. وظیفه ی sgid دقیقا همانند وظیفه ی suid است با تفاوت که با گروه و یا Group فایل سرو کار دارد . یعنی در صورت فعال بودن بر روی فایلی . در صورت اجرا توسط هر یوزر . فایل با گروه سازنده ی فایل به اجرا در می آید .
3. و در آخر هم sticky . ابتدا باید گفت که این مقدار تنها بر روی دایرکتوری می تواند ست شود و در صورت فعال بودن به یوزر های مختلف اجازه ی پاک کردن فایل ها و دایرکتوری های یک دیگر را نمی دهد . حتی اگر دو یوزر در یک گروه بوده و پرمیشن مربوطه را داشته باشد .
نکته : بر خلاف قسمت قبل که هم فایل و هم دایرکتوری می توانستند پرمشین بگیرند . فایل های اجرایی یعنی execute فقط می توان دو مقدار suid و sgid را بگیرند هم چنین دایرکتوری ها فقط می توانند دو مقدار sticky و sgid را به خود اختصاص دهند که مقدار این 3 خانه یعنی مقدار suid و sgid و sticky صفر و یک است . به طور خلاصه :
suid : فقط exe
sgid : هم exe و هم dir
sticky : فقط dir
مثال : فایلی اجرایی دارای پرمیشن 4775 است . 3 بیت اولیه پرمیشن این فایل را تفسیر کنید !
حل : از سمت چپ به راست شروع به خواندن می کنیم . پس در نتیجه اولین عدد 4 است . این عدد 4 مشخصه 3 بیت اولیه از 12 بیت است یا نمایانگر دسته ی 3 تایی اول است .
گفتیم که 3 بیت اولیه به ترتیب 3 مقدار suid و sgid و sticky را شامل می شود . هم چنین عدد دسیمال ( ده دهی ) این دسته هم 4 است .
پس می توان نتیجه گرفت باینری ( دو دویی ) این دسته به این صورت است : 100 چرا که :
هم چنین گفتیم که 0 یعنی عدم حضور سیگنال یا همان غیر فعال بودن و 1 یعنی حضور سیگنال یا همان فعال بودن پس در نتیجه 100 یا 1/0/0 یعنی suid فعال و sgid و sticky غیر فعال می باشد .
اما این 3 بیت اولیه کجا استفاده دارد ؟
ابتدا suid را فرض کنید . گفتیم اگر فایلی اجرایی این پرمیشن را داشته باشد , هر یوزری که این فایل را اجرا کنید , آن فایل با یوزر سازنده و یا Owner به اجرا در می آید . حال دستور passwd را در نظر بگیرید ( با این دستور هر یوزر می تواند پسورد خود را عوض کند ) این برنامه پرمیشن suid دارد پس هر یوزری که این برنامه را اجرا کنید , این برنامه با سطح دسترسی یوزر سازنده ی برنامه یعنی root به اجرا در می آید . پس در نتیجه یک یوزر محدود به این صورت می تواند تغییرات لازم را در فایل passwd و shadow اعمال کند .
به عنوان مثالی دیگر می توان دستور ping را مثال زد .
پرمیشن دهی به فایل و دایرکتوری :
برای پرمیشن دادن به یک فایل و یا یک دایرکتوری از دستور chmod استفاده می کنیم . ابتدا به Syntax این دستور توجه کنید :
chmod [OPTION]... MODE[,MODE]... FILE... chmod [OPTION]... OCTAL-MODE FILE... chmod [OPTION]... --reference=RFILE FILE...
همان طور که از Syntax پیداست , به 3 روش می توان پرمیشن یک فایل را تعیین کرد :
1. استفاده از حروف برای مشخص کردن پرمیشن .
2. استفاده از اعداد اکتال برای مشخص کردن پرمیشن .
3. رفرنس به فایلی دیگر برای مشخص کردن پرمیشن .
روش اول :
در این روش دقیقا پرمیشنی که لازم است به فایل داده شود یا گرفته شود باید ذکر شود . برای مثال :
$chmod u+x file1
توجه داشته باشید که u مشخصه ی دسته ی Owner و x مشخصه ی execute می باشد . معنی این دستور یعنی فایل file1 برای سازنده پرمیشن اجرا داشته باشد ( اضافه شود ) .
مثالی دیگر :
$chmod g-r file1
این دستور یعنی از دسته ی Group پرمیشن write گرفته شود . توجه داشته باشید که علامت – به معنای گرفتن پرمیشن می باشد . مثال :
$chmod gu+r file1 $chmod o-rw file1
توجه داشته باشید که منظور از o دسته ی Other می باشد . مثال :
$chmod g-rw , u+w , o-rwx file1
مطابق Syntax می توان چندین mode را مشخص کرد . مثال :
$chmod o=rw file1
دستور بالا به این معناست که دسته ی Other فقط و فقط پرمیشن read و write داشته باشد . مثال :
$chmod ug=r file1
روش دوم :
مطابق Syntax در این روش از اعداد اکتال برای مشخص کردن پرمیشن یک یا چند فایل استفاده می کنیم . برای مثال قصد داریم پرمیشن 644 را به فایل file1 بدهیم :
$chmod 644 file1
روش سوم :
مطابق Syntax و تعریف , در این روش پرمیشن یک فایل از پرمیشن فایلی دیگر خوانده می شود . به عنوان مثال قصد داریم پرمیشن فایل file1 دقیقا برابر پرمیشن فایل shadow شود :
$chmod --reference=/etc/passwd file1
توجه داشته باشید که مشخص کردن پرمیشن دایرکتوری نیز به همین صورت است . به عنوان مثال :
$chmod 775 dir1/
نکته : برای تغییر پرمیشن تمامی فایل های درون یک دایرکتوری از سوییچ R- استفاده می کنیم . به عنوان مثال :
$chmod -Rv o-w dir1/
نکته : تا به این جا فقط تعیین 9 بیت پرمیشن معروف گفته شد . در واقع برای مشخص کردن پرمیشن در 3 بیت اول که شامل suid و sgid و sticky هست , دوباره به 3 روش می توان عمل کرد :
1. استفاده از حروف برای مشخص کردن پرمیشن .
2. استفاده از اعداد اکتال برای مشخص کردن پرمیشن .
3. رفرنس از یک فایل برای مشخص کردن پرمیشن .
روش اول :
ابتدا باید گفت که :
الف ) به صورت خلاصه suid را با s و gsid را با s و sticky را با t مشخص می کنند .
ب ) تغییرات suid در دسته ی Owner و تغییرات gsid در دسته ی Group و تغییرات sticky در دسته ی Other اعمال می شود .
ج ) تغییرات suid و guid و sticky در پرمیشن x یا همان execute دسته ی خود اعمال می شود . یعنی suid در پرمیشن x دسته ی Owner و guid در پرمیشن x دسته ی Group و sticky در پرمیشن x دسته ی Other تغییر اعمال خواهد کرد .
حال به مثال زیر توجه کنید :
$chmod u+s file1
دستور بالا به این معناست که به فایل file1 پرمیشن suid داده شود . توجه داشته باشید که s به معنای suid است چرا که u به معنای دسته ی Owner می باشد . حال به مثال زیر توجه کنید :
$chmod g+s dir1/
g به معنای دسته ی Group است و از آن جایی که در این دسته فقط gsid اعمال می شود . پس نتیجه می گیریم که s در این جا به معنای gsid است نه usid . حال به مثالی دیگر توجه کنید :
$chmod o-t dir1/
همان طور که در ابتدا گفته شد , t به معنای sticky و o به معنای دسته ی Other می باشد .
روش دوم :
در این روش از اعداد اکتال برای مشخص کردن پرمیشن استفاده می کنیم . در قسمتی که 9 بیت دوم رو بررسی کردیم دیدیم که پرمیشن ها به صورت 3 عدد اکتال 1 رقمی داده می شد . در این جا یک عدد اکتال دیگر به این 3 عدد اضافه شده و به عنوان پرمیشن به فایل یا دایرکتوری تخصیص داده می شود . برای مثال :
$chmod 6750 file1
توجه داشته باشید که اولین عدد از سمت چپ نمانگر پرمیشن برای دسته اول یا همان 3 بیت اول می باشد که در این مثال 6 است یعنی :
با توجه به تصویر دوم . عدد اکتال 6 یعنی پرمیشن suid و sgid به فایل file1 داده شده است .
طبیعتا اگر مثل بالا حساب کنیم , می توانیم به این نتیجه برسیم که عدد 4 مشخصه ی پرمیشن suid و عدد 1 مشخصه ی پرمیشن sticky می باشد .
توجه داشته باشید که در مثال بالا اگر به جای 6750 , 750 را وارد می کردیم , 3 بیت اول یعنی suid و sgid و sticky هیچ تغییری نمی کند و مقدار پیش فرض خود را که 0 ( غیر فعال ) است حفط می کند .
روش سوم :
روش سوم با استفاد از رفرنس است و همانند قسمت سوم 9 بیت دوم (قسمت قبل ) می باشد .
stat [OPTION]... FILE...
در واقع این دستور از کلمه ی status میاید و جزییاتی از فایل و یا دایرکتوری را برای ما نمایش می دهد . نمایش دقیق پرمیشن یکی از قابلیت های این دستور می باشد که ما در این جا از آن استفاده می کنیم . به عنوان مثال :
$stat /bin/mount $stat /usr/bin/passwd $stat /tmp
حالا به تصویر زیر نگاه کنید ( به قسمت access و عدد اکتال پرمیشن ها توجه کنید )
همان طور که در تصویر می بینید به ترتیب 3 عدد 0644 و 1777 و 4755 را در پیش رو داریم . 0 به معنای 0 بودن یا غیر فعال بودن تمامی خانه های 3 بایت اول می باشد . 1 به معنای 2 به توان صفر یعنی فعال بودن پرمیشن sticky می باشد . 4 به معنای 2 به توان 2 و فعال بودن پرم suid می باشد .
نکته : tmp/ مسیری است که تمامی برنامه ها فایل های موقت خود را در آن می ریزند لذا پیمشن آن 777 است اما برای جلوگیری از این مورد که کسی نتواند فایل دیگری را پاک کند , پرمیشن sticky هم در این دایرکتوری فعال می باشد .
umask [-S] [mask definition]
در قسمت های قبل دیدیم که چه طور پرمیشن فایل و یا دایرکتوری های مختلف را کنترل و تعیین کنیم . اما پرمیشن اولیه فایل ها و دایرکتوری هایی که ساخته می شوند به صورت پیش فرض چی هست ؟
برای تعیین پرمیشن فایل ها و دایرکتوری ها به صورت خودکار با تعریفی به نام umask سرو کار داریم که تقریبا به صورت یک مکانیزم امنیتی عمل می کند .
اگر پرمیشن فایل را 666 و پرمیشن دایرکتوری ها را 777 در نظر بگیریم , پرمیشن فایل ها و دایکتوری هایی که ساخته می شوند ( به صورت پیش فرض ) برابر با :
666 - umask = file's permission 777 - umask = dir's permission
برای مثال در اوبونتو 12.04 این عدد 0002 می باشد و اگر از دو عدد 666 و 777 کم شود به ترتیب دو عدد 664 و 775 بدست می آید که پرمیشن پیش فرض فایل ها و دایرکتوری های ساخته شده می باشد .
برای تغییر این عدد پیشفرض می توان به عنوان نمونه به صورت زیر عمل کرد :
umask 0022
نکته : این عدد در توزیع های مختلف متفاوت است .
Changing file’s owner ….
نکته : در لینوکس هیچ کسی نمی توان owner یک فایل و یا دایرکتوری را تغییر دهد حتی اگر سازنده ی آن باشد . به غیر از یوزر Root
برای این منظور از دستور chown استفاده می کنیم . ابتدا به Syntax این دستور توجه کنید :
chown [OPTION]... [OWNER][:[GROUP]] FILE... chown [OPTION]... --reference=RFILE FILE...
همان طور که از Syntax پیداست . از این دستور می توان به 2 روش استفاده کرد :
الف ) مشخص کردن owner و group
ب ) رفرنس دادن به فایلی دیگر
مثال :
#chown sara file1 #chown sara:test file1 #chown sara: file1
توجه داشته باشید که در قسمت سوم , گروهی مشخص نشده است لذا به صورت پیش فرض گروه دیفالت یوزر به فایل تخصیص داده می شود .
مثال :
#chown :test file1 #chown --reference=/etc/passwd file1 #chown -Rv sara dir1/
در قسمت اول هیچ یوزری در نظر گرفته نشده است لذا در این حالت فقط گروه فایل file1 تغییر می کند .
توجه داشته باشید که در قسمت سوم از سوییچ R- برای تغییر owner کل دایرکتوری dir1 استفاده شده است .
بر خلاف قسمت قبل که هیچ یوزری نمی توانست owner خود را تغییر دهد , هر یوزر می تواند Group Owner خود را تغییر دهید ( بدون احتیاج به دسترسی root ) . ابتدا به Syntax این قسمت توجه کنید :
chgrp [OPTION]... GROUP FILE... chgrp [OPTION]... --reference=RFILE FILE...
به عنوان مثال :
$chgrp test file1 $chgrp -Rv test dir1/