更改所屬使用者組, chgrp
改變檔案的使用者組很簡單,直接用chgrp即可,這個命令就是change group(改變使用者組)的縮寫。這樣就很好記了。不過,請記住,要改變成為的使用者組名稱,必須在 /etc/group裡存在,否則就會顯示錯誤。
假設以root的身份登入FC4,那麼,在你的家目錄內有一個install.log檔案,如何改變該檔案的使用者組呢?假設你已經知道在 /etc/group裡已經存在一個名為users的使用者組,但是,testing這個使用者組名字就不存在 /etc/group中了,此時改變使用者組成為users與testing,會有什麼現象發生呢?
[root@linux ~]# chgrp [-R] dirname/filename ...
參數:
-R : 進行遞迴( recursive )的持續更改,即連同子目錄下的所有檔案、目錄
都更新成為這個使用者組。常常用在更改某一目錄的情況。
範例:
[root@linux ~]# chgrp users install.log
[root@linux ~]# ls -l
-rw-r--r-- 1 root users 68495 Jun 25 08:53 install.log
[root@linux ~]# chgrp testing install.log
chgrp: invalid group name `testing' <== 出現錯誤資訊~找不到這個使用者組名~
發現了嗎?檔案的使用者組被改成users了,但要改成testing的時候,就會發生錯誤。注意,出現錯誤資訊,還是要查查錯誤資訊的內容才好。
變更檔擁有者, chown
那麼,如何改變一個檔案的擁有者呢?很簡單。既然改變使用者組是change group,那麼改變擁有者就是change owner(改變擁有者)。這就是chown這個命令的用途,要注意的是,使用者必須是已經存在系統中的,也就是在 /etc/passwd這個檔案中有記錄的使用者名稱稱才可改變。
chown的用途很多,還可以順便直接修改使用者組的名稱。此外,如果要連目錄下的所有子目錄或檔案同時變更檔擁有者的話,直接加上 -R的參數即可。我們來看看文法與範例:
[root@linux ~]# chown [-R] 帳號名稱 檔案或目錄
[root@linux ~]# chown [-R] 帳號名稱:使用者組名稱 檔案或目錄
參數:
-R : 進行遞迴( recursive )的持續更改,即連同子目錄下的所有檔案、目錄
都更新成為這個使用者組。常常用在更改某一目錄的情況。
範例:
[root@linux ~]# chown bin install.log
[root@linux ~]# ls -l
-rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
[root@linux ~]# chown root:root install.log
[root@linux ~]# ls -l
-rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
我們知道如何改變檔案的使用者組與擁有者了,那麼,什麼時候要使用chown或chgrp呢?或許你會覺得奇怪吧?是的,確實有時候需要變更檔的擁有者的,最常見的例子就是在複製檔案給其他人時,我們使用最簡單的cp來說明好了:
[root@linux ~]# cp 來源檔案 目的檔案 |
假設今天要將 .bashrc檔案複製成為 .bashrc_test,且是要給bin這個人,你可以這樣做:
[root@linux ~]# cp .bashrc .bashrc_test [root@linux ~]# ls -al .bashrc* -rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc -rw-r--r-- 1 root root 395 Jul 13 11:31 .bashrc_test |
怎麼辦?.bashrc_test還是屬於root所有,如此一來,即使將檔案拿給bin使用者了,他仍然無法修改(看屬性就知道了),所以就必須修改這個檔案的擁有者與使用者組。