1. 程式人生 > >二周第四次課(12月21日)

二周第四次課(12月21日)

有意義 other mbo -- 目錄文件 rect /usr 表格 默認

二周第四次課(12月21日)
2.18 特殊權限set_uid
2.19 特殊權限set_gid
2.20 特殊權限stick_bit
2.21 軟鏈接文件
2.22 硬連接文件


特殊權限:
set_uid (擁有者特殊權限:)
#chmod命令:
文件權限屬性設置:
chmod命令用來變更文件或目錄的權限。
在UNIX系統家族裏,文件或目錄權限的控制分別以;
讀取、寫入、執行3種一般權限來區分,另有3種特殊權限可供運用。
用戶可以使用chmod指令去變更文件與目錄的權限,
設置方式采用文字或數字代號皆可。


符號連接的權限無法變更,如果用戶對符號連接修改權限,
其改變會作用在被連接的原始文件。
權限範圍的表示法如下:
u User,即文件或目錄的擁有者;
g Group,即文件或目錄的所屬群組;
o Other,除了文件或目錄擁有者或所屬群組之外,其他用戶皆屬於這個範圍;
a All,即全部的用戶,包含擁有者,所屬群組以及其他用戶;
r 讀取權限,數字代號為“4”;
w 寫入權限,數字代號為“2”;
x 執行或切換權限,數字代號為“1”;
- 不具任何權限,數字代號為“0”;
s 特殊功能說明:變更文件或目錄的權限。?(特殊權限)
語法:
chmod(選項)(參數)

選項:
-c或——changes:效果類似“-v”參數,但僅回報更改的部分;
-f或--quiet或——silent:不顯示錯誤信息;
-R或——recursive:遞歸處理,將指令目錄下的所有文件及子目錄一並處理;
-v或——verbose:顯示指令執行過程;
--reference=<參考文件或目錄>:
把指定文件或目錄的所屬群組全部設成和參考 文件或目錄的所屬群組相同;
<權限範圍>+<權限設置>:
開啟權限範圍的文件或目錄的該選項權限設置;
<權限範圍>-<權限設置>:
關閉權限範圍的文件或目錄的該選項權限設置;

<權限範圍>=<權限設置>:
指定權限範圍的文件或目錄的該選項權限設置;

參數:
權限模式:指定文件的權限模式;
文件:要改變權限的文件。

[root@localhost ~]# rws s ^C
[root@localhost ~]# set_uid ^C
[root@localhost ~]# passwd ^C

[root@localhost ~]# ls /etc/shadow
/etc/shadow


[root@localhost ~]# ls -l /etc/shadow
---------- 1 root root 662 12月 15 09:27 /etc/shadow
[root@localhost ~]# ls -l /usr/bin/ls
-rwxr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls


[root@localhost ~]# chmod u+s /usr/bin/ls
[root@localhost ~]# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
[root@localhost ~]# chmod u-s /usr/bin/ls


[root@localhost ~]# chmod u=rws /usr/bin/ls
[root@localhost ~]# ls -l /usr/bin/ls
-rwSr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls

[adkee@localhost ~]$ ls /root/
ls: 無法打開目錄/root/: 權限不夠

[adkee@localhost ~]$ ls /root/
2.txt anaconda-ks.cfg.1

[adkee@localhost ~]$ ls -ld /root/
drwx------. 3 root root 162 12月 19 11:31 /root/
[adkee@localhost ~]$

特殊權限:
#set_gid (所屬群組特殊權限:)

權限範圍的表示法如下:
u User,即文件或目錄的擁有者;
g Group,即文件或目錄的所屬群組;
o Other,除了文件或目錄擁有者或所屬群組之外,其他用戶皆屬於這個範圍;
a All,即全部的用戶,包含擁有者,所屬群組以及其他用戶;
r 讀取權限,數字代號為“4”;
w 寫入權限,數字代號為“2”;
x 執行或切換權限,數字代號為“1”;
- 不具任何權限,數字代號為“0”;
s 特殊功能說明:變更文件或目錄的權限。?(特殊權限)
語法:
chmod(選項)(參數)
選項:
-c或——changes:效果類似“-v”參數,但僅回報更改的部分;
-f或--quiet或——silent:不顯示錯誤信息;
-R或——recursive:遞歸處理,將指令目錄下的所有文件及子目錄一並處理;
-v或——verbose:顯示指令執行過程;
--reference=<參考文件或目錄>:
把指定文件或目錄的所屬群組全部設成和參考 文件或目錄的所屬群組相同;
<權限範圍>+<權限設置>:
開啟權限範圍的文件或目錄的該選項權限設置;
<權限範圍>-<權限設置>:
關閉權限範圍的文件或目錄的該選項權限設置;
<權限範圍>=<權限設置>:
指定權限範圍的文件或目錄的該選項權限設置;

參數:
權限模式:指定文件的權限模式;
文件:要改變權限的文件。


[root@localhost ~]# mkdir 234
[root@localhost ~]# ls
234 2.txt anaconda-ks.cfg.1

[root@localhost ~]# chmod g+s 234
[root@localhost ~]# ls -ld 234
drwxr-sr-x 2 root root 6 12月 21 11:22 234


[root@localhost ~]# chown :adkee 234
[root@localhost ~]# ls -ld 234
drwxr-sr-x 2 root adkee 6 12月 21 11:22 234


[root@localhost ~]# touch 234/adxxx
[root@localhost ~]# ls -l 234/
總用量 0
-rw-r--r-- 1 root adkee 0 12月 21 11:24 adxxx


[root@localhost ~]# mkdir 234/ad
[root@localhost ~]# ls -l 234/
總用量 0
drwxr-sr-x 2 root adkee 6 12月 21 11:24 ad
-rw-r--r-- 1 root adkee 0 12月 21 11:24 adxxx


[root@localhost ~]# chmod g-s 234
[root@localhost ~]# ls -l 234/
總用量 0
drwxr-sr-x 2 root adkee 6 12月 21 11:24 ad
-rw-r--r-- 1 root adkee 0 12月 21 11:24 adxxx


[root@localhost ~]# mkdir 234/adx
[root@localhost ~]# ls -l 234/
總用量 0
drwxr-sr-x 2 root adkee 6 12月 21 11:24 ad
drwxr-xr-x 2 root root 6 12月 21 11:25 adx
-rw-r--r-- 1 root adkee 0 12月 21 11:24 adxxx
[root@localhost ~]#


特殊權限:
#stick_bit (其他用戶特殊權限:)
例:chmod o+t /目錄/擁有者
(安全防護刪除)

1 一個目錄如果設置了t權限,那肯定就會有防刪除的功能,比如/tmp/目錄就有這屬性
2 一個目錄如果沒有t權限,而設置了777權限,那麽這個目錄下面的文件就隨便任人宰割了。
A用戶創建的文件,B用戶也可以刪除的。這主要取決於這些文件所在的目錄的權限。


權限範圍的表示法如下:
u User,即文件或目錄的擁有者;
g Group,即文件或目錄的所屬群組;
o Other,除了文件或目錄擁有者或所屬群組之外,其他用戶皆屬於這個範圍;
a All,即全部的用戶,包含擁有者,所屬群組以及其他用戶;
r 讀取權限,數字代號為“4”;
w 寫入權限,數字代號為“2”;
x 執行或切換權限,數字代號為“1”;
- 不具任何權限,數字代號為“0”;
s 特殊功能說明:變更文件或目錄的權限。?(特殊權限)
語法:
chmod(選項)(參數)
選項:
-c或——changes:效果類似“-v”參數,但僅回報更改的部分;
-f或--quiet或——silent:不顯示錯誤信息;
-R或——recursive:遞歸處理,將指令目錄下的所有文件及子目錄一並處理;
-v或——verbose:顯示指令執行過程;
--reference=<參考文件或目錄>:
把指定文件或目錄的所屬群組全部設成和參考 文件或目錄的所屬群組相同;
<權限範圍>+<權限設置>:
開啟權限範圍的文件或目錄的該選項權限設置;
<權限範圍>-<權限設置>:
關閉權限範圍的文件或目錄的該選項權限設置;
<權限範圍>=<權限設置>:
指定權限範圍的文件或目錄的該選項權限設置;

參數:
權限模式:指定文件的權限模式;
文件:要改變權限的文件。


軟鏈接文件
硬連接文件
ln命令:
文件處理:
ln命令用來為文件創件連接,連接類型分為硬連接和符號連接兩種,默認的連接類型是硬連接。
如果要創建符號連接必須使用"-s"選項。
註意:
符號鏈接文件不是一個獨立的文件,它的許多屬性依賴於源文件,
所以給符號鏈接文件設置存取權限是沒有意義的。
語法:
ln(選項)(參數)
選項:
-b或--backup:刪除,覆蓋目標文件之前的備份;
-d或-F或——directory:建立目錄的硬連接;
-f或——force:強行建立文件或目錄的連接,不論文件或目錄是否存在;
-i或——interactive:覆蓋既有文件之前先詢問用戶;
-n或--no-dereference:把符號連接的目的目錄視為一般文件;
-s或——symbolic:對源文件建立符號連接,而非硬連接;
-S<字尾備份字符串>或--suffix=<字尾備份字符串>:
用"-b"參數備份目標文件後,備份文件的字尾會被加上一個備份字符串,預設的備份字符串是符號“~”,
用戶可通過“-S”參數來改變它;
-v或——verbose:顯示指令執行過程;
-V<備份方式>或--version-control=<備份方式>:
用“-b”參數備份目標文件後,備份文件的字尾會被加上一個備份字符串,
這個字符串不僅可用“-S”參數變更,當使用“-V”參數<備份方式>指定不同備份方式時,
也會產生不同字尾的備份字符串;
--help:在線幫助;
--version:顯示版本信息。
參數:
源文件:
指定連接的源文件。
如果使用-s選項創建符號連接,則“源文件”可以是文件或者目錄。
創建硬連接時,則“源文件”參數只能是文件; 目標文件:指定源文件的目標連接文件。
實例:
將目錄/usr/mengqc/mub1下的文件m2.
鏈接到目錄/usr/liu下的文件a2.c
cd /usr/mengqc ln /mub1/m2.c
/usr/liu/a2.c 在執行ln命令之前,目錄/usr/liu中不存在a2.c文件。
執行ln之後,在/usr/liu目錄中才有a2.c這一項,
表明m2.c和a2.c鏈接起來(註意,二者在物理上是同一文件),
利用ls -l命令可以看到鏈接數的變化。
在目錄/usr/liu下建立一個符號鏈接文件abc,
使它指向目錄/usr/mengqc/mub1 ln -s /usr/mengqc/mub1 /usr/liu/abc 執行該命令後,
/usr/mengqc/mub1代表的路徑將存放在名為/usr/liu/abc的文件中。

擴展知識:
Linux具有為一個文件起多個名字的功能,稱為鏈接。
被鏈接的文件可以存放在相同的目錄下,但是必須有不同的文件名,而不用在硬盤上為同樣的數據重復備份。
另外,被鏈接的文件也可以有相同的文件名,但是存放在不同的目錄下,
這樣只要對一個目錄下的該文件進行修改,就可以完成對所有目錄下同名鏈接文件的修改。
對於某個文件的各鏈接文件,我們可以給它們指定不同的存取權限,以控制對信息的共享和增強安全性。
文件鏈接有兩種形式,即硬鏈接和符號鏈接。

硬鏈接:
建立硬鏈接時,在另外的目錄或本目錄中增加目標文件的一個目錄項,
這樣,一個文件就登記在多個目錄中。的m2.c文件就在目錄mub1和liu中都建立了目錄項。

創建硬鏈接後,己經存在的文件的I節點號(Inode)會被多個目錄文件項使用。

一個文件的硬鏈接數可以在目錄的長列表格式的第二列中看到,無額外鏈接的文件的鏈接數為l。

在默認情況下,ln命令創建硬鏈接。ln命令會增加鏈接數,rm命令會減少鏈接數。
一個文件除非鏈接數為0,否則不會從文件系統中被物理地刪除。

對硬鏈接有如下限制:

不能對目錄文件做硬鏈接。
不能在不同的文件系統之間做硬鏈接。就是說,鏈接文件和被鏈接文件必須位於同一個文件系統中。

符號鏈接 :

符號鏈接也稱為軟鏈接,是將一個路徑名鏈接到一個文件。
這些文件是一種特別類型的文件。

事實上,它只是一個文本文件,其中包含它提供鏈接的另一個文件的路徑名。
另一個文件是實際包含所有數據的文件。所有讀、寫文件內容的命令被用於符號鏈接時,將沿著鏈接方向前進來訪問實際的文件。

與硬鏈接不同的是,符號鏈接確實是一個新文件,

當然它具有不同的I節點號;而硬鏈接並沒有建立新文件。

符號鏈接沒有硬鏈接的限制,可以對目錄文件做符號鏈接,也可以在不同文件系統之間做符號鏈接。
用ln -s命令建立符號鏈接時,源文件最好用絕對路徑名。這樣可以在任何工作目錄下進行符號鏈接。
而當源文件用相對路徑時,如果當前的工作路徑與要創建的符號鏈接文件所在路徑不同,就不能進行鏈接。
技術分享圖片

符號鏈接保持了鏈接與源文件或目錄之間的區別:

刪除源文件或目錄,只刪除了數據,不會刪除鏈接。
一旦以同樣文件名創建了源文件,鏈接將繼續指向該文件的新數據。
在目錄長列表中,符號鏈接作為一種特殊的文件類型顯示出來,其第一個字母是l。
符號鏈接的大小是其鏈接文件的路徑名中的字節數。
當用ln -s命令列出文件時,可以看到符號鏈接名後有一個箭頭指向源文件或目錄,
例如lrwxrwxrwx … 14 jun 20 10:20 /etc/motd->/original_file其中,
表示“文件大小”的數字“14”恰好說明源文件名original_file由14個字符構成

二周第四次課(12月21日)