上次學習整理了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 > 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 >> 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,如需轉載請自行聯系原作者