天天看點

day08-linux權限(chmod chown umask chattr)

上次學習整理了linux的文檔的基本操作,今天我們學習linux下的權限:

1、檔案或目錄的權限chmod:

chmod主要用于修改檔案和目錄的權限,主要參數:-R(級聯修改下級目錄)。

1、那我們如何來檢視這個目錄或檔案的權限呢:

[root@localhost ~]# ls -l

總用量 136

drwxr-xr-x  2 root root     64 10月 24 15:28 1     #rwx為所屬主:r-x為所屬組:r-x為其他:

-rw-r--r--  1 root root    841 10月 24 17:31 1.txt

drwxr-xr-x  2 root root      6 10月 25 17:36 2

-rw-r--r--  1 root root      0 10月 24 15:28 22

如上所述:第一部分的第二位到第十位分别以三位一組:第十一位(.)是selinux(隻有selinux打開時才會添加.)

所屬主(user)     #檔案的擁有者:建立檔案/目錄的那個人:

所屬組(group)    #檔案的所屬組:建立檔案/目錄的那個使用者所在的組:

其他(other)      #其他外來人員:

1.2 那我們如何給目錄和檔案添權重限呢:一般有兩種方式(操作的結果都相同)

上圖中的rwx的權限用數字表示如下:

r===4        #表示可讀的權限:     檢視這個檔案:則表示對這個檔案可以讀:

w===2        #表示可寫的權限:     可以往檔案裡寫入内容:則表示對這個檔案可寫:

x===1        #表示可執行的權限:   可以打開這個目錄,則表示對這個目錄可執行: 

1、chmod  777   filename/dir    通過數字的方式來添加:如下:

1

2

3

4

5

<code>[root@localhost ~]</code><code># chmod 777 1.txt     #給檔案添加777(可讀可寫可執行)的權限:</code>

<code>[root@localhost ~]</code><code># chmod 777 1         #給目錄也添加777權限:</code>

<code>[root@localhost ~]</code><code># ls -l</code>

<code>drwxrwxrwx  2 root root     64 10月 24 15:28 1    </code><code>#此檔案對主(組)其他:可讀可寫可執行:</code>

<code>-rwxrwxrwx  1 root root    841 10月 24 17:31 1.txt</code>

2、chmod  u=rwx,g=rw,o=rx  filename/dir   #u表示主,g表示組,o表示其他:a=所有:

<code>[root@localhost ~]</code><code># chmod u=rwx,g=rw,o=rx 1.txt</code>

<code>[root@localhost ~]</code><code># chmod u=rwx,g=rw,o=rx 1</code>

<code>drwxrw-r-x  2 root root     64 10月 24 15:28 1</code>

<code>-rwxrw-r-x  1 root root    841 10月 24 17:31 1.txt</code>

當然:還可以通過+ -  =對分别對權限進行增減:#加号表示增權重限,減号表示減少權限,等号表示等于權限:  chmod   u-r  1

<code>[root@localhost ~]</code><code># chmod u-r,g+w,o-x 1.txt   #分别減去u權限和加上g的權限:</code>

<code>[root@localhost ~]</code><code># chmod u-r 1</code>

<code>d-wxrwwr-x  2 root root     64 10月 24 15:28 1</code>

<code>--wxr--r--  1 root root    841 10月 24 17:31 1.txt</code>

1.3 chmod還有一個參數: -R:表示級聯選項:會把此目錄下所有檔案/目錄的權限都改變:

chmod  -R  filename/dir

<code>[root@localhost ~]</code><code># chmod -R 777 1       #權限級聯下面檔案</code>

<code>[root@localhost ~]</code><code># ls -l 1</code>

<code>-rwxrwxrwx 1 root root 0 10月 24 15:28 11      </code><code>#目錄下檔案的權限已改變:</code>

<code>-rwxrwxrwx 1 root root 0 10月 25 18:08 1.txt   </code><code>#目錄下目錄的權限已改變:</code>

1.4 既然權限可以用數字來表示,那麼權限是如何定義的呢:umask值:

[root@localhost ~]# umask     #檢視umask的值:

0022  

我們會發現普通檔案或目錄的權限不一樣:這是因為umask值定義的:并且umask值是可以修改的:

<code>[root@localhost yuan]</code><code># ls -la</code>

<code>-rw-r--r--  1 root root    0 10月 25 18:53 1.txt      </code><code>#檔案的權限為644.</code>

<code>drwxr-xr-x  2 root root    6 10月 25 18:53 </code><code>dir</code>        <code>#目錄的權限為755.</code>

這是因為檔案不需要執行權限:而目錄需要:進入一個目錄==執行這個目錄:

是以檔案的權限計算:

666    -          022        644                 #文本不需要執行權限

(rw-rw-rw-)  -  (----w--w-)  =  (rw-r--r--)

目錄的權限計算:

777     -       022         755                  #目錄需要執行權限

(rwxrwxrwx)  -  (----w--w-)  =  (rwxrw-rw-)

不過以數字相減的方式容易出現錯錯誤:

如:我們把umask值設定成003,那麼檔案的權限應該是664,則減下來是603,是以此方法不建議使用:

2、更改檔案的所有者和所屬組:chown

chown主要用于修改檔案的所屬主和所屬組:主要參數: -R

2.1 那我們如何來檢視檔案/目錄的所屬主和所屬組:

[root@localhost ~]#  ls -l

drw-r--r--  2 root root     90 10月 25 18:08 1

-rw-r--r--  1 root root    841 10月 24 17:31 1.txt

如上所述:第三部分root表示所屬主,第四部分表示所屬組:

所屬主(root)    #檔案的建立者及擁有者:

所屬組(root)    #檔案的擁有者所在那個組:

2.2 那我們如何給檔案/目錄修改所屬主和所屬組呢:

chown   username:group    filename/dir

6

<code>[root@localhost ~]</code><code># chown  yuanhh   1       #表示修改目錄1的所屬主為yuanhh.      </code>

<code>[root@localhost ~]</code><code># chown  :yuanhh  1       #表示修改目錄1的所屬組為yuanhh.</code>

<code>[root@localhost ~]</code><code># chown  yuanhh:yuanhh 1.txt    #表示同時修改1.txt的所屬主和所屬組:</code>

<code>drw-r--r--  2 yuanhh yuanhh     90 10月 25 18:08 1       </code><code>#檢視目錄1.</code>

<code>-rw-r--r--  1 yuanhh yuanhh    841 10月 24 17:31 1.txt   </code><code>#檢視檔案1.txt.</code>

2.3  此時chown還有一個參數:-R:表示級聯選項:會把此目錄下所有檔案/目錄的權限都改變(主要針對目錄):

chown  -R  username:group  1    #修改1目錄的主群組(同時也會修改其下的目錄和檔案).

<code>[root@localhost ~]</code><code># chown -R yuanhh:root 1   #同時修改目錄1的所屬主和所屬組:</code>

<code>-rwxrwxrwx 1 yuanhh root 0 10月 24 15:28 11    </code><code>#其下面的目錄也發生變化:</code>

<code>-rwxrwxrwx 1 yuanhh root 0 10月 25 18:08 1.txt   </code><code>#其下面的檔案也發生變化:</code>

3、chgrp: 此指令用于修改檔案的所屬組(與chown的所屬組一樣).

chgrp   group    filename/dir      #應用格式

<code>[root@localhost ~]</code><code># chgrp yuanhh 2.txt      #修改其所屬組為yuanhh:</code>

<code>[root@localhost ~]</code><code># ls -l 2.txt</code>

<code>-rw------- 1 root yuanhh 4904 10月 24 17:48 2.txt    </code><code>#已修改:</code>

3.1 同時,chagr也有級聯參數,可直接修改目錄下面的檔案或目錄:

 chgrp  -R   group   1     #修改目錄1,用級聯的方式:

<code>[root@localhost ~]</code><code># chgrp -R yuanhh 1      #修改目錄1,用級聯的方式:</code>

<code>[root@localhost ~]</code><code># ls -l 1 </code>

<code>-rwxrwxrwx 1 yuanhh yuanhh 0 10月 24 15:28 11     </code><code>#</code>

<code>-rwxrwxrwx 1 yuanhh yuanhh 0 10月 25 18:08 1.txt    </code><code>#</code>

4、隐藏權限lsattr/chattr:  參數如下;

-i  :增加了此選項後,檔案或目錄不能删除、修改、寫入等全部操作(連BOSS的root也不可以)

-a  :增加了此選項後:隻能追加,不能删除、修改,并且非root使用者不能操作(隻增不減)

-s  :增加了該選項後:會将資料同步寫入到磁盤:#不常用

-c  :自動解壓縮:讀取檔案時自動解壓縮:      #不常用

-A  :增加了後,檔案的atime不能修改:         #不常用

-d  :隻檢視目前目錄本身:   #相當于ls的-d選項:

-a  :檢視隐藏檔案:        #用法:lsattr  -a   

-R  :檢視目前目錄下的檔案或者目錄: 

4.1隐藏權限可以保護檔案的安全性,一旦設定後,檔案連root使用者也是不能修改的:

用法1: chattr  +i   filename/dir     #給檔案或目錄增加i權限:

7

<code>[root@localhost ~]</code><code># chattr +i 1.txt        #給1.txt增加i權限:</code>

<code>[root@localhost ~]</code><code># rm -fr 1.txt           #無法删除檔案:</code>

<code>rm</code><code>: 無法删除</code><code>"1.txt"</code><code>: 不允許的操作</code>

<code>[root@localhost ~]</code><code># echo 1 &gt; 1.txt         #無法追加檔案内容:</code>

<code>-</code><code>bash</code><code>: 1.txt: 權限不夠</code>

<code>[root@localhost ~]</code><code># chmod 777 1.txt</code>

<code>chmod</code><code>: 更改</code><code>"1.txt"</code> <code>的權限: 不允許的操作     </code><code>#無法修改檔案權限:</code>

用法2: chattr  +a   filename/dir    #給檔案或目錄增加a權限:

8

<code>[root@localhost ~]</code><code># chattr +a 1.txt         #給1.txt增加a權限    </code>

<code>[root@localhost ~]</code><code># rm -fr 1.txt            #無法删除檔案:</code>

<code>[root@localhost ~]</code><code># chmod 777 1.txt         #無法修改檔案權限。</code>

<code>chmod</code><code>: 更改</code><code>"1.txt"</code> <code>的權限: 不允許的操作</code>

<code>[root@localhost ~]</code><code># echo 1111 &gt;&gt; 1.txt      #可以追加檔案内容</code>

<code>[root@localhost ~]</code><code># tail -n1 1.txt</code>

<code>1111</code>

4.2 那我們如何取消檔案權限呢:

chattr  -a   filename/dir         #給檔案或目錄取消a權限:

chattr  -i   filename/dir         #給檔案或目錄取消i權限:

同時也支援lsattr  -R(也是級聯選項):用法如下:

lsattr  -R  +i  dir     #主要隻針對于目錄:

檢視指令lsattr: 參數:  -d(目錄本身)   -a(隐藏檔案)   -R(級聯下檔案或目錄)

<code>[root@localhost ~]</code><code># lsattr -d 1        #隻檢視目錄1的權限:</code>

<code>----i----------- 1</code>

<code>[root@localhost ~]</code><code># lsattr -R 1        #檢視目錄下面的檔案選項:</code>

<code>----i----------- 1</code><code>/2</code>

<code>----i----------- 1</code><code>/yuan</code>

隐藏檔案:

<code>[root@localhost ~]</code><code># lsattr -a /root/         #檢視隐藏檔案:</code>

<code>---------------- </code><code>/root/</code><code>.bash_logout</code>

<code>---------------- </code><code>/root/</code><code>.bash_profile</code>

今天現學習到這裡。

本文轉自 芬野 51CTO部落格,原文連結:http://blog.51cto.com/yuanhaohao/2052667,如需轉載請自行聯系原作者

繼續閱讀