Linux用戶管理詳解大結局(下)

                                      Linux用戶管理詳解(下)
我們已經可以通過創建不同的用戶來防止其他人使用自己的賬號,之後每個賬戶對應一個單獨的用戶密碼,構成了一個基本的用戶管理思路。爲了方便管理還可以使用組來設置相同屬性的用戶。那麼設置這些到底是爲了什麼呢?今天就揭開它的面紗。
Linux系統是一個典型的多用戶操作系統,不同的用戶處於不同的地位,爲了保護系統的安全性,linux系統對於不同用戶訪問同一個文件或目錄做了不同的訪問權限控制。
我們是否還記得查看文件權限的命令,爲了便於大家理解首先我創建如下所示文件和目錄並查看相應的權限。
[user@qiuri ~]$ mkdir qiuri
[user@qiuri ~]$ touch xifeng
[user@qiuri ~]$ ls -l
總計 4
drwxrwxr-x 2 user user 4096 07-13 15:17 qiuri
-rw-rw-r-- 1 user user    0 07-13 15:17 xifeng
[user@qiuri ~]$
我們拿qiuri這個目錄分析一下輸出的結果的含義,首先將它從左邊開始分爲7個部分,如下圖所示:
第一個部分:文件類型和文件權限,其中第一個字符是文件的類型標誌,後9個爲權限標誌。通過第一位確認文件屬於那種類型。說道文件類型在Windows中,常見的文件類型有file.txtfile.docfile.mp3等,根據文件的後綴名判斷該文件的類型,在Linux中,一個文件主要看他是否能夠執行與後綴沒有太大的關係,主要看文件的屬性有關。
linux中常見的文件類型有:
“—”表示普通文件,例如:
[root@qiuri ~]# ls -l install.log
-rw-r--r-- 1 root root 41727 07-13 02:56 install.log
輸出的第一個標誌位是“-”,這樣的文件在Linux 中就是普通文件。這些文件一般是用一些相關的應用程序創建,比如圖像工具、文檔工具、歸檔工具... .... cp工具等。這類文件的刪除方式是用rm 命令。

d”表示目錄,例如:
[root@qiuri ~]# ls -l /root
總計 84
-rw------- 1 root root   882 07-13 02:56 anaconda-ks.cfg
drwxr-xr-x 2 root root  4096 07-13 03:18 Desktop
-rw-r--r-- 1 root root 41727 07-13 02:56 install.log
-rw-r--r-- 1 root root  4182 07-13 02:50 install.log.syslog
-rw-r--r-- 1 root root   209 07-13 03:14 scsrun.log
當某個目錄下看到有類似 drwxr-xr-x ,這樣的文件就是目錄,目錄在Linux 是一個比較特殊的文件。注意它的第一個字符是d。創建目錄的命令可以用 mkdir 命令,或cp 命令,cp 可以把一個目錄複製爲另一個目錄。刪除用rm rmdir 命令

b”表示塊設備文件,例如:
[root@qiuri ~]# ls -l /dev/sda
brw-r----- 1 root disk 8, 0 07-13 05:57 /dev/sda
我們看到 /dev/sda 的屬性是 brw-rw---- ,注意前面的第一個字符是b,這表示塊設備,比如硬盤,光驅等設備。

c”表示字符設備文件
[root@qiuri ~]# ls -l /dev/tty
crw-rw-rw- 1 root tty 5, 0 07-13 05:58 /dev/tty
我們看到/dev/tty的屬性是 crw-rw-rw-,注意前面第一個字符是 c ,這表示字符設備文件。比如貓等串口設備。

l 表示符號鏈接
[root@qiuri ~]# ls -l /etc/rc.local
lrwxrwxrwx 1 root root 13 07-13 02:09 /etc/rc.local -> rc.d/rc.local
查看文件屬性時,會看到有類似 lrwxrwxrwx,注意第一個字符是l,這類文件是鏈接文件。這和Windows 操作系統中的快捷方式有點相似。一般鏈接有兩種:硬連接和符號鏈接。

首先我們要明白,在Linux系統中每一個存儲設備(硬盤、U盤),格式化後,分爲InodeBlock兩個部分。內核爲每一個新建的文件分配一個Inode(索引結點),每個文件都有一個惟一的inode號。文件屬性(文件的所有者、存取模式、類型、創建或修改時間、文件真正內容的指向等)保存在索引結點裏,在訪問文件時,索引結點值被複制到內存中,快速找到真正內容指向(pointer)指向數據內容放置的區塊(Block)之中,從而實現文件快速的找到該文件。
硬鏈接是直接指向索引結點(Inode)的指針,系統不會重新分配給它新的Inode。但是創建時需注意:鏈接文件和被鏈接文件必須位於同一個文件系統中,並且不能建立指向目錄的硬鏈接。默認情況下,ln名稱創建的便是硬鏈接。命令格式:
ln source(源文件名)dist(目的文件名)

例如:
[user@qiuri ~]$ ls -il   #查看文件屬性並顯示文件lnode號
total  4
354552 drwxrwxr-x 2 user user 4096 07-13 17:34 qiuri
354553 -rw-rw-r-- 1 user user    0 07-13 17:34 xifeng
[user@qiuri ~]$ ln xifeng qiurixifeng      #創建文件xifeng的硬鏈接qiurixifeng
[user@qiuri ~]$ ls -il   #驗證結果,結果表明創建硬鏈接系統沒有分配新的lndoe
total  4
354552 drwxrwxr-x 2 user user 4096 07-13 17:34 qiuri
354553 -rw-rw-r-- 2 user user    0 07-13 17:34 qiurixifeng
354553 -rw-rw-r-- 2 user user    0 07-13 17:34 xifeng
[user@qiuri ~]$ ln qiuri qiurixifeng     #創建目錄qiuri的硬鏈接,提示不允許硬鏈接指向目錄
ln: `qiuri': hard link not allowed for directory
[user@qiuri ~]$
軟連接又稱符號鏈接克服了硬鏈接的不足,不受文件系統的限制,可以創建指向目錄的符號鏈接。因此我們大多數使用符號鏈接。創建符號鏈接的時候只需要在ln後加上-s選項即可。
例如:
[root@qiuri ~]# ln -s /home/user/qiuri qiuri     #給root用戶創建符號鏈接qiuri,鏈接到/home/user/qiuri
[root@qiuri ~]# ln -s /home/user/xifeng xifeng #創建符號鏈接xifeng,提示“文件已存在”的錯誤信息。
ln: creating symbolic link `xifeng' to `/home/user/xifeng': File exists
[root@qiuri ~]# ls -l     #查看一下當前目錄下的文件,發現當前目錄下已存在一個同名文件。
total 80
-rw------- 1 root root   882 Jul 13 02:56 anaconda-ks.cfg
drwxr-xr-x 2 root root  4096 Jul 13 03:18 Desktop
-rw-r--r-- 1 root root 41727 Jul 13 02:56 install.log
-rw-r--r-- 1 root root  4182 Jul 13 02:50 install.log.syslog
lrwxrwxrwx 1 root root    16 Jul 13 17:48 qiuri -> /home/user/qiuri
-rw-r--r-- 1 root root   209 Jul 13 03:14 scsrun.log
-rw-r--r-- 1 root root     0 Jul 11 07:51 xifeng
[root@qiuri ~]# ln -sf /home/user/xifeng xifeng  
#我們可以使用-f選項忽略目標文件的存在並強制做鏈接文件。
[root@qiuri ~]# ls -li     #驗證結果,發現創建成功。
total 80
 580109 -rw------- 1 root root   882 Jul 13 02:56 anaconda-ks.cfg
 128925 drwxr-xr-x 2 root root  4096 Jul 13 03:18 Desktop
1031170 -rw-r--r-- 1 root root 41727 Jul 13 02:56 install.log
1031171 -rw-r--r-- 1 root root  4182 Jul 13 02:50 install.log.syslog
1031178 lrwxrwxrwx 1 root root    16 Jul 13 17:48 qiuri -> /home/user/qiuri
 580110 -rw-r--r-- 1 root root   209 Jul 13 03:14 scsrun.log
1031176 lrwxrwxrwx 1 root root    17 Jul 13 17:53 xifeng -> /home/user/xifeng
[root@qiuri ~]#
對文件類型有了一個瞭解之後,我們接着說文件權限,linux文件的權限標誌位共九個,分爲3組,分別代表文件擁有者的權限,文件所屬用戶組的權限和其它用戶的權限,如下圖所示:
           
Linux 文件的權限有三種:

² 可讀(r):意味着我們可以查看閱讀;

² 可寫(w):意味着,可以修改或刪除(不過刪除或修改的權限受父目錄上的權限控制);

² 可執行(x):意味着如果是文件就可以運行,比如二進制文件(比如命令),或腳本(要用腳本語言解釋器來解釋運行)。

 如果權限位不可讀、不可寫、不可執行,是用“-”來表示。對於目錄來說,執行(x)權限表示可以使用cd 命令進入該目錄,可以讀出該目錄下的文件的內容。如果某用戶對目錄只有讀取權限,而沒有執行權限,那麼該用戶只能使用ls 命令列出目錄下的文件,而不能讀取該目錄內的文件。
 當一個文件的權限不符合我們使用的要求我們可以使用命令chmod來設置和改變,改變目錄和文件權限的方法有兩種,一種是通過八進制的語法,另一種是助記語法。
 八進制的語法使用數字表示各個權限分別是r(4)、w(2)、x(1)、-(0)。例如目錄qiuri的權限如何使用八進制來表示:
drwxrwxr-x 2 user user 4096 07-13 15:17 qiuri
屬主的權限用數字表達:屬主的那三個權限位的數字加起來的總和。比如上面的例子中屬主的權限是rwx ,也就是4+2+1 ,應該是7

屬組的權限用數字表達:屬組的那個權限位數字的相加的總和。比如上面的例子中的rwx ,也就是4+2+1 ,應該是7

其它用戶的權限數字表達:其它用戶權限位的數字相加的總和。比如上面例子中是 r-x ,也就是4+0+1,應該是5

也就是說,如果使用八進制數來表示該文件的權限,應該是775
明白了數值表示權限的方法,例如將目錄qiuri的權限修改爲:屬主對目錄qiuri有可讀可寫可執行權限,屬組和其他人有可讀和可執行權限。
[root@qiuri ~]# ls -l     #修改前查看一下
total 4
drwxrwxr-x 2 user user 4096 07-13 15:17 qiuri
-rw-rw-r-- 1 user user    0 07-13 15:17 xifeng
[root@qiuri ~]#chmod 755 qiuri    #修改權限爲755
[root@qiuri ~]# ls -l    #修改後驗證
total 4
drwxr-xr-x 2 user user 4096 07-13 15:17 qiuri
-rw-rw-r-- 1 user user    0 07-13 15:17 xifeng
如果想同時修改目錄和子目錄中所有文件的權限執行如下命令:
[root@qiuri ~]#chmod –R 755 qiuri
助記語法中將屬主(user)使用u表示、屬組(group)使用g表示、其它用戶(other)使用o來表示,而所有人(all)使用a來表示。使用“+”來表示添加權限、“-”表示減少權限、“=”表示授予的權限。當然使用r、w、x來表示權限。在使用的時候,可以組合使用。例如:
[root@qiuri tmp]# touch xifeng     #創建空文件
[root@qiuri tmp]# chmod u+x xifeng    # 給文件的擁有者添加執行權限
[root@qiuri tmp]# chmod go-r xifeng     # 給文件的屬組和其它用戶減去讀取權限
[root@qiuri tmp]# chmod a-rwx xifeng    # 所有人都拒絕訪問
[root@qiuri tmp]# chmod a+rw xifeng    # 所有人都具有讀寫權限
[root@qiuri tmp]# chmod o=rw    #其它人的權限爲讀寫
注意:每修改一次,別忘了使用ls -l 命令查看權限的變化。
第二個部分:硬鏈接數 一般文件創建硬鏈接的時候這個數值會發生變化。
第三個部分:文件的屬主,就是說這個文件是那個用戶的。這裏是user用戶的目錄。我們可以通過chown來修改文件或文件夾的所有者。例如:
[root@qiuri ~]# ls -l /home/user     #修改前查看一下屬性
total 4
drwxrwxr-x 2 user user 4096 07-13 15:17 qiuri
-rw-rw-r-- 1 user user    0 07-13 15:17 xifeng
[root@qiuri ~]#chown root /home/user/qiuri   #使用命令修改屬主
[root@qiuri ~]# ls -l /home/user    #驗證修改結果
Total 4
drwxrwxr-x 2 root user 4096 07-13 15:17 qiuri
-rw-rw-r-- 1 user user    0 07-13 15:17 xifeng
第四個部分:文件屬組:也就是說,對於這個文件,它歸屬於哪個用戶組,在這裏是user 用戶組。可以通過命令chgrp修改文件或文件夾組用戶。例如:
[root@qiuri ~]# ls -l /home/user     #修改前查看一下屬性
total 4
drwxrwxr-x 2 root user 4096 07-13 15:17 qiuri
-rw-rw-r-- 1 user user    0 07-13 15:17 xifeng
[root@qiuri ~]#chgrp root /home/user/qiuri   
 #修改文件屬組,同理如果想修改當前目錄和子目錄的話,使用選項-R。
[root@qiuri ~]# ls -l /home/user    #驗證結果
total 4
drwxrwxr-x 2 root root 4096 07-13 15:17 qiuri
-rw-rw-r-- 1 user user    0 07-13 15:17 xifeng
第五個部分:文件的大小,這裏是4096個字節。
第六個部分:創建或修改時間,這裏是7131517。這個值的變化和修改或訪問文件有關。
第七個部分:文件或目錄的名稱。這裏是qiuri這個目錄。
另外我們在修改文件的屬主和屬組的時候可以使用一下命令同時修改:
[root@qiuri ~]# ls -l /home/user     #修改前查看一下屬性
total 4
drwxrwxr-x 2 root root 4096 07-13 15:17 qiuri
-rw-rw-r-- 1 user user    0 07-13 15:17 xifeng
[root@qiuri ~]#chown root.root /home/user/xifeng  
#同時修改文件的屬主和屬組,如果想修改目錄和子目錄下的所有文件屬性使用選項-R。
[root@qiuri ~]# ls -l /home/user     #驗證結果
total 4
drwxrwxr-x 2 root root 4096 07-13 15:17 qiuri
-rw-rw-r-- 1 root root   0 07-13 15:17 xifeng

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章