chgrp :改變檔案所屬群組
chown :改變檔案擁有者
chmod :改變檔案的權(quán)限, SUID, SGID, SBIT 等等的特性
改變所屬群組, chgrp
? ?
#改變一個(gè)檔案的群組真是很簡(jiǎn)單的,直接以 chgrp 來(lái)改變即可,咦!這個(gè)命令就是 change group 的縮寫嘛!這樣就好記了吧! 不過,請(qǐng)記得,要被改變的組名必項(xiàng)要在/etc/group 檔案內(nèi)存在才行,否則就會(huì)顯示錯(cuò)誤;假如你是以 root 的身份登入 Linux 系統(tǒng)的,那么在你的home/目錄內(nèi)有一個(gè) install.log 的檔案, 如何將該檔案的群組改變一下呢?假如你已經(jīng)知道在/etc/group 里面已經(jīng)存在一個(gè)名為 users 的群組, 但是testing 這個(gè)群組名字就不存在/etc/group 當(dāng)中了,此時(shí)改變?nèi)航M成為 users 與 testing 分別會(huì)有什么現(xiàn)象發(fā)生呢?
發(fā)現(xiàn)了嗎?檔案的群組被改成 users 了,但是要改成 testing 的時(shí)候, 就會(huì)發(fā)生錯(cuò)諢~注意喔!發(fā)生錯(cuò)誤訊息還是要努力的查一查錯(cuò)誤訊息的內(nèi)容才好! 將他英文翻譯成為中文,就知道問題出在哪里了结借。
改變檔案擁有者, chown
#如何改變一個(gè)檔案的擁有者呢?很簡(jiǎn)單呀!既然改變?nèi)航M是 change group,那么改變擁有者就是change owner 啰!BINGO!那就是 chown 這個(gè)命令的用途,要注意的是, 用戶必項(xiàng)是已經(jīng)存在系統(tǒng)中的賬號(hào),也就是在/etc/passwd 這個(gè)檔案中有紀(jì)錄的用戶名稱才能改變们陆。chown 的用途還滿多的,他還可以順便直接修改群組的名稱呢!此外,如果要連目錄下的所有次目錄或檔案同時(shí)更改檔案擁有者的話,直接加上 -R 的選頃即可!我們來(lái)看看語(yǔ)法與范例:
PS:亊實(shí)上,chown 也可以使用『chown user.group file』,亦即在擁有者不群組間加上小數(shù)點(diǎn)『.』也行! 丌過徆多朊友謳定賬號(hào)時(shí),喜歡在賬號(hào)當(dāng)中加入小數(shù)點(diǎn)(例如vbird.tsai 這樣的賬號(hào)格式),這就會(huì)造成系統(tǒng)的諢判了! 所以我們比較建議使用冎號(hào)『:』來(lái)隑開擁有者不群組啦!此外,chown 也能單純的修改所屬群組呢! 例如『chown .sshd install.log』就是修改群組~看到了嗎?就是那個(gè)小數(shù)點(diǎn)的用途!
知道如何改變檔案的群組不擁有者了,那么什么時(shí)候要使用 chown 和 chgrp 呢?或許你會(huì)覺得奇怪吧? 是的,確實(shí)有時(shí)候需要變更檔案的擁有者的,最常見的例子就是在復(fù)制檔案給你之外的其他人時(shí), 我們使用最簡(jiǎn)單的 cp 命令來(lái)說(shuō)明好了:
假如你今天要將.bashrc 這個(gè)檔案拷貝成為.bashrc_test 檔名,且是要給 bin 這個(gè)人,你可以這樣做:
由于復(fù)制行為(cp)會(huì)復(fù)制執(zhí)行者的屬性于權(quán)限,所以!怎么辦?.bashrc_test 還是屬二 root 所擁有,如此一來(lái),即使你將檔案拿給 bin 這個(gè)使用者了,那他仍然無(wú)法修改的(看屬性/權(quán)限就知道了吧), 所以你就必項(xiàng)要將這個(gè)檔案的擁有者不群組修改一下啰!知道如何修改了吧?
改變權(quán)限, chmod
檔案權(quán)限的改變使用的是 chmod 這個(gè)命令,但是,權(quán)限的設(shè)定方法有兩種, 分別可以使用數(shù)字或者是符號(hào)來(lái)進(jìn)行權(quán)限的變更印叁。我們就來(lái)談一談:
# 數(shù)字類型改變檔案權(quán)限
Linux 檔案的基本權(quán)限就有九個(gè),分別是 owner/group/others 三種身份各有自己的read/write/execute 權(quán)限, 先復(fù)習(xí)一下剛剛上面提到的數(shù)據(jù):檔案的權(quán)限字符為:『-rwxrwxrwx』, 這九個(gè)權(quán)限是三個(gè)三個(gè)一組的!其中,我們可以使用數(shù)字來(lái)代表各個(gè)權(quán)限,各權(quán)限的分?jǐn)?shù)對(duì)照表如下:
r:4
w:2
x:1
每種身份(owner/group/others)各自的三個(gè)權(quán)限(r/w/x)分?jǐn)?shù)是需要累加的,例如當(dāng)權(quán)限為: [-rwxrwx---] 分?jǐn)?shù)則是:
owner = rwx? = 4+2+1 = 7;
grounp = rwx? = 4+2+1 = 7;
others = rwx? = 0+0+0 = 0;
所以等一下我們?cè)O(shè)定權(quán)限的變更時(shí),該檔案的權(quán)限數(shù)字就是 770 啦!變更權(quán)限的命令 chmod 的語(yǔ)法是這樣的:
舉例來(lái)說(shuō),如果要將.bashrc 這個(gè)檔案所有的權(quán)限都設(shè)定啟用,那么就下達(dá):
那如果要將權(quán)限變成『 -rwxr-xr-- 』呢?那舉權(quán)限的分?jǐn)?shù)就成為[4+2+1][4+0+1][4+0+0]=754 啰!所以你需要下達(dá)『chmod 754 filename』蜜另。 另外,在實(shí)際的系統(tǒng)運(yùn)作中最常發(fā)生的一個(gè)問題就是,常常我們以 vim 編輯一個(gè) shell 的文字批處理文件后,他的權(quán)限通常是 -rw-rw-r-- 也就是 664, 如果要將該檔案變成可執(zhí)行文件,并且不要讓其他人修改此一檔案的話, 那么就需要-rwxr-xr-x 這樣的權(quán)限,此時(shí)就得要下達(dá):
chmod 755 test.sh 的命令
符號(hào)類型改變檔案權(quán)限
還有一個(gè)改變權(quán)限的方法呦!仍之前的介紹中我們可以發(fā)現(xiàn),基本上就九個(gè)權(quán)限分別是(1)user(2)group (3)others 三種身份啦!那么我們就可以藉由 u, g, o 來(lái)代表三種身份的權(quán)限!此外,a 則代表 all 亦即全部的身份!那么讀寫的權(quán)限就可以寫成 r, w, x !也就是可以使用底下的方式來(lái)看:
來(lái)實(shí)際操作一下吧!假如我們要『設(shè)定』一個(gè)檔案的權(quán)限成為『-rwxr-xr-x』時(shí),基本上就是:o user (u):具有可讀丰榴、可寫溅蛉、可執(zhí)行的權(quán)限;o group 與 others (g/o):具有可讀不執(zhí)行的權(quán)限公浪。
那么假如是『 -rwxr-xr-- 』這樣的權(quán)限呢?可以使用『 chmod u=rwx,g=rx,o=r filename 』來(lái)設(shè)定。此外,如果我不知道原先的文件屬性,而我只想要增加.bashrc 這個(gè)檔案的每個(gè)人均可寫入的權(quán)限, 那么我就可以使用:
而如果是要將權(quán)限去掉而不更動(dòng)其他已存在的權(quán)限呢?例如要拿掉全部人的可執(zhí)行權(quán)限,則:
知道 +, -, = 的不同點(diǎn)了嗎?對(duì)啦!? + 與? – 的狀態(tài)下,只要是沒有指定到的項(xiàng)目,則該權(quán)限『不會(huì)被變動(dòng)』, 例如上面的例子中,由二僅以 – 拿掉 x 則其他兩個(gè)保持當(dāng)時(shí)的值丌變!多多實(shí)作一下,你就會(huì)知道如何改變權(quán)限啰! 這在某些情況底下徆好用的~舉例來(lái)說(shuō),你想要教一個(gè)朋友如何讓一個(gè)程序可以擁有執(zhí)行的權(quán)限, 但你又不知道該檔案原本的權(quán)限為何,此時(shí),利用『chmod a+x filename』 ,就可以讓該程序擁有執(zhí)行的權(quán)限了