- 論壇徽章:
- 0
|
完成這一章,你可以做以下的事情:
※描述和更改文件的屬主和組。
※描述和更改一個文件的許可權(quán)限。
※描述和建立新文件的默認權(quán)限。
※描述如何更改文件的用戶和組的身份。
5.1 文件的權(quán)限和存取
存取一個文件需要用戶的身份,和與文件相關(guān)的權(quán)限。這一章會介紹如何存取文件
權(quán)限 理解文件的讀,寫,和執(zhí)行權(quán)限
ls (ll,ls –l) 確定文件被賦予的存取權(quán)限。
chmod 改變文件的存取權(quán)限。
chown 改變一個文件的屬主。
umask 改變默認的文件存取權(quán)限
chgrp 改變一個文件的組。
su 轉(zhuǎn)換你的用戶的身份。
newgrp 轉(zhuǎn)換你的組的身份
每一個文件都屬于系統(tǒng)中的一個用戶。文件的屬主控制誰可以來存取文件這個文件。文件的屬主有權(quán)力允許或是拒絕其它的用戶存取文件。
5.2 誰有存取一個文件的權(quán)利
UNIX系統(tǒng)為一個文件提供三層存取結(jié)構(gòu):
user 代表文件的所有者
group 代表對文件有存取權(quán)限的組
other 代表系統(tǒng)中的其他所有的用戶
每一個文件都屬于系統(tǒng)中的一些用戶。文件的屬主有完全控制權(quán)決定什么人有什么權(quán)限存取文件,屬主能允許或拒絕其系統(tǒng)中的其他用戶存取文件。屬主決定什么組有權(quán)限存取他的文件,屬主也能將文件給系統(tǒng)中的其他用戶,但是一旦文件的所有權(quán)被轉(zhuǎn)換,文件原始的屬主不再能夠控制這個文件。
由于文件屬于用戶,并且與組相關(guān)聯(lián),你可以使用id命令來顯示你的身份和你對系統(tǒng)中文件的存取權(quán)限。
上圖中的文件的屬主是用戶user3,class組的成員也可以存取這些文件,另外,user3能夠允許系統(tǒng)中的其他用戶也存取這些文件。
5.3 存取權(quán)限的類型
文件和目錄有三種類型的存取權(quán)限:
※read(讀)
※write(寫)
※execute(執(zhí)行)
不同的unix系統(tǒng)命令在存取程序或文件的時候會要求某種權(quán)限,例如:cat一個文件,要求要有可讀的權(quán)限,因為cat命令必須能夠讀取文件的內(nèi)容,才能將其顯示在屏幕上。類似,在使用ls命令的時候,要求一個目錄要讀的權(quán)限,才能夠列出目錄中的內(nèi)容。
請注意,存取權(quán)限決定于是否你正在存取一個文件或目錄。例如,一個文件的“寫”的權(quán)限意味著文件的內(nèi)容可以被改變。取消“寫”權(quán)限會禁止用戶改變一個文件的內(nèi)容。但是并不保護文件不被刪除。目錄的“寫”權(quán)限控制一個目錄中的內(nèi)容能否被改變。如果一個目錄沒有“寫”
的權(quán)限,它的內(nèi)容就不會被改變。目錄中的文件就不能被刪除,添加,或是重命名。
注釋:想要作為一個程序一樣運行一個文件,要求文件要有讀和執(zhí)行的權(quán)限。
5.4 權(quán)限
你對一個文件的存取權(quán)限是在以下部分定義的:你的用戶身份,你的組,和與文件關(guān)聯(lián)的權(quán)限設(shè)置。文件的權(quán)限在mode
(模式)中指明,文件的模式是一個包含九個字符的字段,其中定義了文件屬主的權(quán)限,文件所屬的組的權(quán)限,和其他系統(tǒng)中的用戶的權(quán)限。
5.5 chmod 改變一個文件的權(quán)限
chmod命令被用來更改一個文件或目錄的權(quán)限,只有文件的屬主(或root-系統(tǒng)管理員)才能改變權(quán)限,
為了保護一個文件不被刪除和破壞,文件所在的目錄和文件本身一定不能有寫的權(quán)限。文件寫的權(quán)限允許用戶改變(或是覆蓋)文件的內(nèi)容,如果一個目錄有寫的權(quán)限,會允許用戶刪除目錄中的文件。chmod命令支持一種字母的方式定義文件的權(quán)限。
你可以指定你想要更改的權(quán)限:
r 讀的權(quán)限
w 寫的權(quán)限
x 執(zhí)行的權(quán)限
和你如何更改權(quán)限:
+ 增加權(quán)限
- 減少權(quán)限
= 將權(quán)限設(shè)置為
你同時可以指明你想要修改哪一組的權(quán)限:
u 用戶(文件的屬主) g 組(文件關(guān)聯(lián)的組)
o 其他用戶
a 所有用戶(系統(tǒng)中的每個用戶)
none 分配權(quán)限給所有的域
注釋:想要禁止一個文件的所有的權(quán)限,鍵入以下的命令:
chmod = 文件名
例子:
$ ls -l f1
-rw-r--r-- 1 user3 class 37 Jul 24 11:06 f1
$chmod g=rw,o= f1
$ ls –l f1
-rw-rw-rw- 1 user3 class 37 Jul 24 11:06 f1
$ls –l f2
-rw-rw-rw- 1 user3 class 37 Jul 24 11:08 f2
$chmod u+x,g=rx,o-rw f2
$ls –l f2
-rwxr-x--- 1 user3 class 37 Jul 24 11:-8 f2
chmod命令也支持數(shù)值的(八進制)表達式來指定文件的權(quán)限。這種表達式十分陳舊,但這是一種十分通用的格式。
1)要改變文件的權(quán)限,你必須將權(quán)限的每一個域轉(zhuǎn)變成適當(dāng)?shù)財?shù)字表達式。對屬主,組,和其他用戶都有存取定義。每種類型的存取賦值可用以下的數(shù)字來表示:
read=4
write=2
execute=1
2)將這些關(guān)聯(lián)到存取權(quán)限的數(shù)字加起來。
3)將三個值合起來的數(shù)字就是chmod命令的參數(shù)。
舉個例子,如果你期望的權(quán)限:屬主是rw-,組是r--,其他是---:
屬主 組 其他 轉(zhuǎn)變成數(shù)字形式
rw- r-- ---
4+2+0 4+0+0 0+0+0
6 4 0
因此:chmod命令是:
chmod 640 filename
注釋:想要禁止所有的權(quán)限,你可以使用一下命令:
chmod 000 file
5.6 umask -權(quán)限掩碼
語法:
umask [-s] [mode] 用戶文件創(chuàng)建模式掩碼
例子:
原先默認的權(quán)限: rw- rw- rw-
設(shè)置默認權(quán)限: rw- r-- ---
$umask g=r,o=
[-S]選項以符號的格式顯示當(dāng)前的文件創(chuàng)建的掩碼,[-S]選項和符號格式在Bourne 和C shell無效。
選項a-rwx是u-rwx,g-rwx,o-rwx的一個縮寫。一個常用的新建文件的默認權(quán)限是rw-rw-rw-,這意味著系統(tǒng)中的任何用戶都能修改文件中的內(nèi)容。新建目錄的默認權(quán)限是rwxrwxrwx,這意味著任何用戶能更改這個目錄,和刪除這個目錄中的任何東西。
為了保護你的創(chuàng)建的文件,你可以使用umask命令,這個命令會取消你創(chuàng)建的文件和目錄的默認權(quán)限設(shè)置。組用戶的寫權(quán)限和其他用戶的寫權(quán)限大概是最重要的需要取消的權(quán)限。你指定的掩碼在你登錄系統(tǒng)時一直有效,umask
對已經(jīng)存在的文件沒有任何作用。
5.7 touch - 更新文件的時間標志
touch 命令可以用來創(chuàng)建新文件,空文件。如果指定的文件已經(jīng)存在,touch會更新文件的時間標志。它對文件的內(nèi)容沒有影響。
touch 命令有以下選項:
-a time 更改存取(Access)時間為指定的時間
-m time 更改修改(Modify)時間為指定的時間
-t time 使用指定時間(time)來代替當(dāng)前時間。
-c 如果文件不存在,不創(chuàng)建新文件。
例子:
$ touch test_file1
$ ls –l test_file1
-rw-rw-rw- 1 user3 class 0 Jul 24 11:08 test_fiile1
$ umask a-rwx,u=rw,g=r (或 umask 137)
$ umask –S (或 umask)
u=rw,g=r,o= (或 137)
$ touch test_file2
$ ls –l test_file2
$-rw-r----- 1 user3 class 0 Jul 24 11:10 test_file1
5.8 chown 更改文件的所有權(quán)
語法:
chown owner [:group] filename... 更改一個文件的屬主,和可選地,組ID
例子:
$ id
uid=303 (user3), gid=300 (class)
$cp f1 /tmp/user2/f1
$ls –l /tmp/user2/f1
-rw-r----- 1 user3 class 3976 Jan 24 13:13 f1
$ chown user2 /tmp/user2/f1
$ ls –l /tmp/user2/f1
-rw-r----- 1 user2 class 3976 Jan 24 13:13 f1
只有文件的屬主和root才能更改一個文件的所有權(quán)。
只有文件的屬主才能控制文件的屬性和存取,如果你想要將一個文件的所有權(quán)給系統(tǒng)中的另外一個用戶,你可以使用chown命令。例如,user3拷貝他的文件f1給user2。User2對他個人的文件應(yīng)該有完全的控制權(quán),于是user3將/tmp/user2/f1的所有權(quán)轉(zhuǎn)換給user2?蛇x地,chown可以改變一個或多個文件的組ID。要改變的組可以是一個數(shù)字的組ID,或者是一個passwd(group)文件中的登錄名。
注釋:一旦一個文件的屬主已經(jīng)被改變,只有新的屬主或root可以更改文件的所有權(quán)和模式。
屬主是一個系統(tǒng)認可的用戶標識。文件/etc/passwd 中包含有系統(tǒng)中所有用戶的ID。
例子:
在上圖中,在user3將文件/tmp/user2/f1的所有權(quán)轉(zhuǎn)換給user2后,他仍然有讀的權(quán)限,因為class組中的任何成員對這個文件對都有讀的權(quán)限。
5.9 chgrp 命令
語法:
chgrp newgroup filename.... 更改一個文件的組的存取。只有文件的屬主和root能更改文件的組。
例子:
$ id
uid=303(user3) ,gid=300(class)
$ ls –l f3
-rw-r----- 1 user3 class 3967 Jan 24 13:13 f3
$chgrp class2 f3
$ls –l f3
-rw-r----- 1 user3 class2 3967 Jan 24 13:13 f3
$chown user2 f3
$ls –l f3
-rw-r----- 1 user2 class2 3967 Jan 24 13:13 f3
在長列表中的組域確定什么用戶組可以存取這個文件。你可以用chgrp 命令來更改。
new_group(新組)是一個系統(tǒng)認可的組的標識,在文件/etc/group中有系統(tǒng)中所有用戶的組ID,
如果指定的新組不存在,chgrp命令不會產(chǎn)生作用。組和組的成員是由系統(tǒng)管理員來控制的。
注釋:只有文件的屬主和root才能更改一個文件的組。
例子:
在上圖中,當(dāng)user3將文件f1的組轉(zhuǎn)變?yōu)閏lass2組,他的存取權(quán)限沒有受到影響,因為他仍然是這個文件的屬主。在user3將文件的所有權(quán)給了user2,他不再能夠存取這個文件,因為user3當(dāng)前的組是class組。
5.10 su – 轉(zhuǎn)變用戶ID
語法:
su [user_name] 更改你的用戶ID和組ID
例子:
$ ls –l /usr/local/bin/class_setup
-rwxr-x--- 1 class_admin teacher 3967 Jan 24 13:13 class_setup
$ id
$uid=303(user3), gid=300(class)
$su class_admin
$passwd
$id
uid=400(class_admin), gid=300(class)
$ /usr/local/bin/class_setup
$
退出su對話線程。
$ ctrl + D
su 命令可以用來交互地更改你的用戶ID和組ID。 Su是switch user 或set user
id的一個縮寫。這個命令讓你開啟一個子進程,成為新的用戶ID和賦予你存取與這個用戶ID關(guān)聯(lián)所有文件的存取權(quán)限。因此,出于安全的考慮,你在實際轉(zhuǎn)換身份時,會被要求輸入這個用戶帳號的密碼。
如果沒有參數(shù),su命令將你轉(zhuǎn)換為root(系統(tǒng)管理員)。root帳號有時也被稱為超級用戶,因為這個用戶可以存取系統(tǒng)中的任何文件。也正是這個原因,許多人將su命令看成是supper-user(超級用戶)的一個縮寫。當(dāng)然,你必須要提供root密碼。
注釋:想要回到你原先的用戶身份,不要再使用su命令,你只需要使用exit命令退出你使用su命令而生成的新的對話進程。
例子
在上圖中,user3沒有程序/usr/local/bin/class_setup的存取權(quán)限,因為她不是teacher組的成員。如果她輸入命令
su class_admin,他就可以存取這個程序。作為用戶class_admin,她還可以修改程序
class_setup的內(nèi)容。當(dāng)她運行完成這個程序后退出su 的對話,就恢復(fù)自己原先的用戶狀態(tài)。
su – username
一些配置文件是為你的的對話線索而設(shè)立的。。當(dāng)你使用命令su
username時,你的對話特征和你原始的登錄身份一樣。如果你想要你的對話進程擁有轉(zhuǎn)換后的用戶ID一致的特征,你要使用短斜杠: su –
username.
5.11 newgrp 命令
newgrp 命令同su 命令十分相似。這個命令可以更改你的組的ID號。
系統(tǒng)管理員會定義你能轉(zhuǎn)變的組。通過查看文件/etc/group,你能確定你有權(quán)改變到那些組。如果你沒有被允許成為指定的組的成員,你會得到一條信息:Sorry.
由于newgrp命令沒有開啟一個新的對話線索,你只需要使用newgrp來回到你最初的組的狀態(tài)。
例子:
在以上的圖中,user3仍舊無權(quán)存取程序/usr/local/bin/class_setup,因為他被初始化定義為組class中,user3能newgrp
teacher到teacher組,因為系統(tǒng)管理員已經(jīng)賦予屬于他teacher的一員。現(xiàn)在他可以允運行這個程序,因teacher組的所有成員對為這個程序都有執(zhí)行權(quán)限,但是他不能更改這個程序的內(nèi)容,只有用戶class_admin可以更改這個程序。當(dāng)user3完成他的工作,他可以newgrp回到他原始的組狀態(tài)。
/etc/group文件的例子:
teacher: : 33: class_admin,user3
class: : 300 :user1,user2,user3,user4,user5,user6,class_admin
5.12 文件權(quán)限和存。偨Y(jié)
關(guān)于文件權(quán)限需要注意的有:
※文件的路徑名中指出的所有的目錄必須要有執(zhí)行的權(quán)限,否則文件不能得到存取。
※要保護一個文件,可以取消文件和文件所在目錄的寫的權(quán)限。
※只有文件的屬主(或root)才能更改文件模式(chmod),所有權(quán)(chown),和文件的組(chgrp)
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u2/84425/showart_2069310.html |
|