歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux下文件與權限的設定

所謂的文件權限,是指對文件的訪問權限,包括對文件的讀、寫、刪除、執行等,在linux下,每個用戶都具有不同的權限,普通用戶只能在自己的主目錄下進行寫操作,而在主目錄之外,普通用戶只能進行查找、讀取操作,如何處理好文件權限和用戶之間的關系,是本節講述的重點。

一 查看文件的權限屬性

使用ls命令就可以查看文件的以及目錄的權限信息,不帶任何參數的ls命令只顯示文件名稱,通過“ls –al”可以顯示文件或者目錄的權限信息,看下面的輸出:

[root@localhost oracle]# ls -al

total 92

drwxr-xr-x   3 oracle oinstall  4096 Oct 30  2006 admin

drwxr-xr-x   2 oracle oinstall  4096 Oct 23 18:22 bin

-rwxr-xr-x   1 root   root      3939 Mar 20  2008 .createtablespace.pl

drwxr-xr-x   3 oracle oinstall  4096 Oct 30  2006 flash_recovery_area

drwxr-xr-x   2 oracle oinstall  4096 Jun 25 15:18 install

drwx------   2 oracle oinstall 16384 Jun 25 01:10 lost+found

drwxr-xr--   3 oracle oinstall  4096 Oct 30  2008 oradata

drwxr-xr-x   6 oracle oinstall  4096 Oct 30  2006 oraInventory

drwxr-xr-x   3 oracle dba       4096 Oct 28  2006 product

為了能更詳細的介紹上面輸出中每個屬性的含義,下圖列出了oradata文檔每列代表的含義:

下面通過具體的實例講述每列代表的含義。

1.第一列顯示文檔類型與執行權限,有十個字符組成,分為4個部分,下面將文檔oradata權限分解,如下圖所示

接著對每個部分解釋如下:

文檔類型部分:

當為“d”時,表示目錄;當為“l”時表示軟鏈接;當為“-”時表示文件;當為“c”時表示串行端口字符設備文件;當為“b”時表示可供存儲的塊設備文件。由此可知,oradata是一個目錄。

在接下來的三個部分中,三個字符為一組,每個字符的含義為:“r”表示只讀,即read;“w”表示可寫,即write;“x”表示可執行,即execute;“-”表示無此權限,即為空。

User部分:

第二部分是對文檔所有者(user)權限的設定,“rwx”表示用戶對oradata目錄有讀、寫和執行的所有權限。

Group部分:

第三部分是對文檔所屬用戶組(group)權限的設定,“r-x”表示用戶組對oradata目錄有讀和執行的權限,但是沒有寫的權限。

Others部分:

第四部分是對文檔擁有者之外的其它用戶權限的設定,“r--”表示其它用戶或用戶組對oradata目錄只有讀的權限。

文檔的操作權限是可以指定和更改的,通過chmod命令即可更改文件或者目錄的權限,這個將在下節講述。

2.第二列顯示的是文檔的連結數,這個連結數就是硬鏈接的概念,即多少個文件指向同一個索引節點,舉例如下:

[root@localhost ~]#ls -al

-rw-r--r--   1 root root 60151 Oct 25 01:01 install.log

[root@localhost ~]#ln install.log  install.log1

[root@localhost ~]#ls –al  install.log

-rw-r--r--   2 root root 60151 Oct 25 01:01 install.log

[root@localhost ~]#ln install.log  install.log2

[root@localhost ~]#ls –al  install.log

-rw-r--r--   3 root root 60151 Oct 25 01:01 install.log

從上面可以看出,install.log文件原始的連結數是1,然後做了兩個硬鏈接操作,install.log文件的連接數變為3,這就是連接數的含義。

3.第三列顯示了文檔所屬的用戶和用戶組,也就是文檔是屬於哪個用戶以及哪個用戶組所有,例如上面的oradata目錄,所屬的用戶為oracle,所屬的組為oinstall組。文件所屬的用戶和組是可以更改的,通過chown命令就可以修改文檔的用戶屬性。

4.第四列顯示的是文檔的大小,默認顯示的是以bytes為單位,但是也可以通過命令的參數修改顯示的單位,例如可以通過“ls -sh”組合人性化的顯示文檔的大小。對於目錄,通常只顯示文件系統默認block的大小。

5.第五列顯示文檔最後一次的修改日期,通常以月、日、時、分的方式顯示,如果文檔修改時間距離現在已經很遠了,會使用月、日、年的方式顯示。

6.第六列顯示的是文檔名稱,linux下以“.”開頭的文件是隱藏文件,同理以“.”開頭的目錄是隱藏目錄,隱藏文檔只有通過ls命令的“-a”選項才能顯示。

例如上面的.createtablespace.pl文件就是一個隱藏文件。

二 利用chown改變屬主和屬組

chown就是change owner的意思,主要作用就是改變文件或者目錄的所有者,而所有者包含用戶和用戶組,其實chown就是對文件所屬的用戶和用戶組進行的一系列設置。

chown使用的一般語法為:

[root@localhost ~]#chown [-R] 用戶名稱 文件或目錄

[root@localhost ~]#chown [-R] 用戶名稱:用戶組組名稱 文件或目錄

參數說明:

-R : 進行遞歸式的權限更改,也就是將目錄下的所有文件、子目錄都更新成為指定的用戶組權限。常常用於變更某一目錄的情況。

注意,在執行操作前,確保指定的用戶以及用戶組在系統中是存在的。

例子1:修改隱藏文件“.createtablespace.pl”的所屬用戶為oracle,所屬的用戶組為oinstall,操作如下:

[root@localhost ~]#chown oracle:oinstall .createtablespace.pl

[root@localhost ~]#ls -al  .createtablespace.pl

-rwxr-xr-x   1 oracle   oinstall      3939 Mar 20  2008 createtablespace.pl

注意,這裡要確保oracle用戶和oinstall組已經存在。

例子2:修改oradata目錄以及目錄下的所有文件的所屬用戶為root,用戶組為dba組,

[root@localhost ~]#chown -R root:dba oradata

drwxr-xr--   3 root dba   4096 Oct 30  2006 oradata

三 利用chmod改變訪問權限

chmod用於改變文件或目錄的訪問權限。該命令有兩種用法。一種是包含字母和操作符表達式的字符設定法;另一種是包含數字的數字設定法。

1. 字符設定法

使用語法為:

chmod [who] [+ | - | =] [mode] 文件名

命令中各選項的含義如下:

who表示操作對象,可以是下面字母中的任何一個或者它們的組合。

u 表示“用戶(user)”,即文件或目錄的所有者。

g 表示“用戶組(group)”,即文件或目錄所屬的用戶組。

o 表示“其他(others)用戶”。

a 表示“所有(all)用戶”。它是系統默認值。

操作符號含義如下:

“+”表示添加某個權限。

“-”表示取消某個權限。

“=”表示賦予給定的權限,同時取消文檔以前的所有權限。

mode表示可以執行的權限,可以是“r“(只讀)、“w”(可寫)和“x”(可執行),以及它們的組合。

文件名可以是以空格分開的文件列表,支持通配符。

2.舉例

修改install.log文件,使其所有者具有所有權限,用戶組和其它用戶具有只讀權限:

[root@localhost ~]# ls -al install.log

-rw------  1 root root 60151 Oct 17 16:11 install.log

[root@localhost ~]# chmod u=rwx,g+r,o+r install.log    

[root@localhost ~]# ls -al install.log        

-rwxr--r--  1 root root 60151 Oct 17 16:11 install.log

修改/etc/fstab文件的權限,使其所有者具有讀寫權限,用戶組和其它用戶沒有任何權限:

[root@localhost ~]# ll /etc/fstab

-rwxr--r--  1 root root 1150 Oct 23 09:30 /etc/fstab

[root@localhost ~]# chmod u-x,g-r,o-r /etc/fstab      

[root@localhost ~]# ll /etc/fstab      

-rw-------  1 root root 1150 Oct 23 09:30 /etc/fstab

3.數字設定法

首先了解一下用數字表示屬性的含義,0表示沒有任何權限,1表示有可執行權限,與上面字符表示法中的“x”有相同的含義。2表示有可寫權限,與“w”對應,4表示有可讀權限,對應與“r“。

如果想讓文件的屬主擁有讀和寫的權限,可以通過4(可讀)+2(可寫)=6(可讀可寫)的方式來實現,那麼用數字6就表示擁有讀寫權限。

使用語法:

chmod [屬主權限的數字組合] [用戶組權限的數字組合] [其它用戶權限的數字組合] 文件名

下圖展示了數字設定法的實現原理:

上圖數字設定法含義剖析

從圖中可以清晰的看出,“755”組合的代表含義,第一個“7”顯示了文件所有者的權限,是通過4(r)+2(w)+1(x)=7(rwx)而得到的。第二個“5”顯示了文件所屬組的權限,是通過4(r)+0(-)+1(x)=5(rx)而得到的,同理最後一個“5”也有類似的含義。

舉例:

某個文件mysqltuner.pl的默認權限為600,即“-rw-------”,表示只有此文件的所有者(User)擁有讀寫權限,其它用戶(Others)和組(Group)沒有對此文件訪問的任何權限。

首先修改此文件的權限為644,即“-rw-r--r--”,表示此文件的所有者(User)擁有讀寫權限,而其它用戶(Others)和組(Group)僅僅擁有讀的權限,操作如下:

[linux1@localhost ~]$ ls -al mysqltuner.pl

-rw------- 1 linux1 linux1 38063 Oct 26 07:49 mysqltuner.pl

[linux1@localhost ~]$ chmod 644  mysqltuner.pl

[linux1@localhost ~]$ ls -al mysqltuner.pl

-rw-r--r-- 1 linux1 linux1 38063 Oct 26 07:49 mysqltuner.pl

然後接著修改mysqltuner.pl文件的權限為755,即“-rwxr-xr-x”,表示此文件的所有者(User)擁有讀寫執行權限,而其它用戶(Others)和組(Group)擁有對此文件的讀和執行權限。

[linux1@localhost ~]$ chmod 755  mysqltuner.pl

[linux1@localhost ~]$ ls -al mysqltuner.pl

-rwxr-xr-x 1 linux1 linux1 38063 Oct 26 07:49 mysqltuner.pl

本文出自 “技術成就夢想” 博客,請務必保留此出處http://ixdba.blog.51cto.com/2895551/531799

Copyright © Linux教程網 All Rights Reserved