Linux下的文件、目錄權(quán)限

對于Linux的初學(xué)者來說,熟悉了Windows下的文件類型,接觸到Linux的下的文件類型是有所區(qū)別的。如Windows的:



而Linux下:


你會發(fā)現(xiàn)Linux下前面的幾列不同如drwxr-xr-x. 2 root root,這又代表的什么?下面我們來說說Linux的文件權(quán)限......

一 、文件的屬性

1. 文件的權(quán)限:
文件的權(quán)限主要針對三類對象進(jìn)行定義:

owner: 屬主, u
group: 屬組, g
other: 其他, o

每個文件針對每類訪問者都定義了三種權(quán)限:

r: Readable 讀權(quán)限
w: Writable 寫權(quán)限
x: eXcutable 執(zhí)行權(quán)限

文件:(例:-rw-r--r--. 1 root root 21 May 30 13:43 test.txt)

r: 可使用文件查看類工具獲取其內(nèi)容
w: 可修改其內(nèi)容
x: 可以把此文件提請內(nèi)核啟動為一個進(jìn)程

目錄:(例:drwxr-xr-x. 2 root root 6 May 27 21:12 Music)

r: 可以使用ls查看此目錄中文件列表
w: 可在此目錄中創(chuàng)建文件,也可刪除此目錄中的文件
x: 可以使用ls -l查看此目錄中文件列表,可以cd進(jìn)入此

為什么Linux上要設(shè)置這么多的屬性呢?其實,最大的用途是在『數(shù)據(jù)安全性』上面的。

1.系統(tǒng)保護(hù)的功能:

-r--------. 1 root root 2211 May 29 12:44 /etc/shadow```
像/etc/shadow 這一個賬號管理的文件,由于該文件記錄了你系統(tǒng)中所有賬號的數(shù)據(jù)。你不希望所有普通用戶都能訪問它,否則就存在安全隱患。因此像這類很重要的配置文件通常只有root (管理員)才能讀寫或者是執(zhí)行。
2.組成員數(shù)據(jù)共享的功能:
例如你有一個組,你希望你的每個組成員都有訪問這個組下的文件,而其他人不可訪問,你則可以設(shè)置組的權(quán)限。
3.未將權(quán)限設(shè)定的危害:
假如你的目錄權(quán)限沒有設(shè)定好的話,可能造成其他人隨意訪問,修改配置權(quán)限,像一些重要的的文件,本來只有管理員,組內(nèi)成員可修改,沒設(shè)定好造成其他人可執(zhí)行管理員的權(quán)限,會造成數(shù)據(jù)的流失,系統(tǒng)得不到安全的保障。

## 二 、文件屬性的設(shè)定與權(quán)限操作
1.設(shè)置文件的所有者:chown
chown [OPTION]... [OWNER][:[GROUP]] FILE...
[root@centos7 ~]# chown [-R] 賬號名稱:組名 文件或目錄
>[root@centos7 ~]#ls -l test.txt
-rwxrwxr-x. 1 root root 21 May 30 13:43 test.txt
[root@centos7 ~]#useradd xiao
[root@centos7 ~]#chown xiao test.txt 
[root@centos7 ~]#ls -l test.txt
-rwxrwxr-x. 1 xiao root 21 May 30 13:43 test.txt

PS.改文件的所有者只能在root下有效,在普通用戶下改所有者無效,改所屬組有條件性(如wang用戶在xiao組中可以修改為wang為所屬組,不在這個組中修改不了)。
>[root@centos7 ~]#useradd wang
[root@centos7 ~]#id xiao
uid=2009(xiao) gid=2014(xiao) groups=2014(xiao),
[root@centos7 ~]#su - xiao
[xiao@centos7 ~]$touch b
[xiao@centos7 ~]$ll
-rw-rw-r--. 1 xiao xiao 0 May 30 15:51 b
[xiao@centos7 ~]$chown wang b
chown: changing ownership of ‘b’: Operation not permitted
[xiao@centos7 ~]$chown :wang b
chown: changing group of ‘b’: Operation not permitted
[xiao@centos7 ~]$exit
[root@centos7 ~]#usermod -G  xiao wang 
[root@centos7 ~]#id xiao
uid=2009(xiao) gid=2014(xiao) groups=2014(xiao),2010(wang)
[root@centos7 ~]#su - xiao
[xiao@centos7 ~]$chown :wang b
[xiao@centos7 ~]$ll
-rw-rw-r--. 1 xiao wang 0 May 30 15:51 b
[xiao@centos7 ~]$exit


-R : 進(jìn)行遞歸(recursive)的持續(xù)變更,亦即連同次目錄下的所有文件都變更
 >[root@centos7 ~]#chown -R xiao:xiao /etc
[root@centos7 ~]#ll /etc
total 1396
drwxr-xr-x.  3 xiao xiao    101 May 30 15:33 abrt
-rw-r--r--.  1 xiao xiao     16 May 30 15:33 adjtime
-rw-r--r--.  1 xiao xiao   1518 May 30 15:33 aliases
-rw-r--r--.  1 xiao xiao  12288 May 30 15:33 aliases.db
drwxr-xr-x.  2 xiao xiao     51 May 30 15:33 alsa
drwxr-xr-x.  2 xiao xiao   4096 May 30 15:33 alternatives
-rw-------.  1 xiao xiao    541 May 30 15:33 anacrontab
PS.用遞歸變更目錄下的文件需注意,特別是在root模式下,會把重要的配置文件所有者所屬組改變。

2.設(shè)置文件的屬組信息:chgrp
>chgrp [OPTION]... GROUP FILE...
[root@centos7 app]#touch c
[root@centos7 app]#chgrp wang c
[root@centos7 app]#ll
-rw-r--r--.   1 root wang    0 May 30 16:07 c

3.修改文件權(quán)限:chmod
通常修改文件權(quán)限為**模式法與數(shù)字法**。
**模式法:**
chmod [OPTION]... MODE[,MODE]... FILE...
修改一類用戶的所有權(quán)限:
u= g= o= ug= a= 
>[root@centos7 app]#ls -l cc
-rw-r--r--. 1 root root 0 May 30 17:37 cc
[root@centos7 app]#chmod u=rwx,g=rx,o=rx cc
[root@centos7 app]#ls -l cc
-rwxr-xr-x. 1 root root 0 May 30 17:37 cc
[root@centos7 app]#chmod ug=rx cc
[root@centos7 app]#ls -l cc
-r-xr-xr-x. 1 root root 0 May 30 17:37 cc
[root@centos7 app]#chmod a=rwx cc
[root@centos7 app]#ls -l cc
-rwxrwxrwx. 1 root root 0 May 30 17:37 cc

修改一類用戶某位或某些位權(quán)限
u+ u-g+ g-o+ o-a+ a-+ -
>[root@centos7 app]#chmod a-w cc
[root@centos7 app]#ls -l cc
-r-xr-xr-x. 1 root root 0 May 30 17:37 cc
[root@centos7 app]#chmod u+w cc
[root@centos7 app]#ls -l cc
-rwxr-xr-x. 1 root root 0 May 30 17:37 cc
[root@centos7 app]#chmod g+w,o-x cc
[root@centos7 app]#ls -l cc
-rwxrwxr--. 1 root root 0 May 30 17:37 cc
[root@centos7 app]#

**數(shù)字法:**

![](http://upload-images.jianshu.io/upload_images/6137254-83a9f5a529887d11.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
>八進(jìn)制數(shù)
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
例如:640: rw-r----- 、755: rwxr-xr-x
[root@centos7 app]#chmod 755 cc
[root@centos7 app]#ls -l cc
-rwxr-xr-x. 1 root root 0 May 30 17:37 cc

在某些情況下修改文件權(quán)限需注意:
例:
>在普通用戶下:
1.[xiao@centos7 ~]$touch a.txt
[xiao@centos7 ~]$nano a.txt
[xiao@centos7 ~]$ls -l a.txt 
-rw-rw-r--. 1 xiao xiao 12 May 30 17:59 a.txt
[xiao@centos7 ~]$chmod u=,g=rw,o=rx a.txt 
[xiao@centos7 ~]$cat a.txt
cat: a.txt: Permission denied
[xiao@centos7 ~]$chmod u=rwx a.txt 
[xiao@centos7 ~]$cat a.txt 
hello linux
[xiao@centos7 ~]$rm a.txt 
對普通用戶來說,把自己權(quán)限設(shè)為u=0,所有者沒有任何權(quán)限,訪問不了文件,但所有者有資格改所有者權(quán)限,亦可刪除。
2.[root@centos7 ~]#groupadd g1
[root@centos7 ~]#useradd -g g1 xiaohong
[root@centos7 ~]#useradd -g g1 xiaoming
[root@centos7 ~]#useradd xiaodong
[root@centos7 ~]#touch ab.txt
[root@centos7 app]#cat>>ab.txt
hello linux
[root@centos7 app]#chown xiaoming:g1 ab.txt
[root@centos7 app]#chmod u=,g=r,o=rw ab.txt
[root@centos7 app]#su xiaoming
[xiaoming@centos7 app]$ cat ab.txt
cat: ab.txt: Permission denied
[xiaoming@centos7 app]$ exit
[root@centos7 app]#su xiaohong
[xiaohong@centos7 app]$ cat ab.txt
hello linux
[xiaohong@centos7 app]$ cat >>ab.txt
bash: ab.txt: Permission denied
[xiaohong@centos7 app]$ exit
[root@centos7 app]#su xiaodong
[xiaodong@centos7 app]$ cat ab.txt
hello linux
[xiaodong@centos7 app]$ cat >>ab.txt
abc
[xiaodong@centos7 app]$ cat ab.txt
hello linuxabc
用戶訪問一個文件,他的權(quán)限,執(zhí)行過程為:先判斷這個文件是否為所有者,如果是則匹配權(quán)限,后面則省略權(quán)限匹配,及使在別的組你對這個文件有更大的權(quán)限,如果不是所有者,判斷是否為所屬組,再然后是其他人。
匹配順序為所有者--所屬組---其他人,不是用戶權(quán)限的累加。
3.
[root@centos7 app]#cp /usr/bin/cat /app
[root@centos7 app]#chmod a= /app/cat
[root@centos7 app]#/app/cat ab.txt
-bash: /app/cat: Permission denied
[root@centos7 app]#chmod g=x /app/cat
[root@centos7 app]#/app/cat ab.txt
hello linuxabc
對root用戶來說rw權(quán)限不受影響,x權(quán)限受限制,如果u,g,o,只要一項有x權(quán)限,則root有x權(quán)限。
4.
chown [OPTION]... --reference=aFILE bFILE...
 b文件參考a文件的權(quán)限來設(shè)。
[root@centos7 app]#ll
-r-xr-xr-x. 1 xiaoming g1      20 May 30 20:30 ab.txt
----------. 1 root     root    26 May 30 20:47 ac.txt
[root@centos7 app]#chmod --reference ab.txt ac.txt
[root@centos7 app]#ll
-r-xr-xr-x. 1 xiaoming g1      20 May 30 20:30 ab.txt
-r-xr-xr-x. 1 root     root    26 May 30 20:47 ac.txt

##三.目錄的權(quán)限
目錄的權(quán)限一般為```drwxr-xr-x. 2 root root    6 May 27 21:12 Videos```
但不排除特殊情況;例只有r或w或x權(quán)限時:
>[root@centos7 app]#mkdir test1
[root@centos7 app]#cd /app/test1
[root@centos7 test1]#touch a 
[root@centos7 test1]#touch b
[root@centos7 app]#cp -rp /app/test1/ /app/test2
[root@centos7 app]#cp -rp /app/test1/ /app/test32
[root@centos7 app]#tree
├── test1
│   ├── a
│   └── b
├── test2
│   ├── a
│   └── b
├── test32
│   ├── a
│   └── b
[root@centos7 app]#chmod u=x,g=,o= test1
[root@centos7 app]#chmod u=w,g=,o= test2
[root@centos7 app]#chmod u=r,g=,o= test32
[root@centos7 app]#chown xiaoming: test1
[root@centos7 app]#chown xiaoming: test2
[root@centos7 app]#chown xiaoming: test32
[root@centos7 app]#su xiaoming
[xiaoming@centos7 app]$ ls /app/test32
ls: cannot access /app/test32/a: Permission denied
ls: cannot access /app/test32/b: Permission denied
a  b
[xiaoming@centos7 app]$ cd /app/test32
bash: cd: /app/test32: Permission denied
[xiaoming@centos7 app]$ rm -rf /app/test32
rm: cannot remove ‘/app/test32/a’: Permission denied
rm: cannot remove ‘/app/test32/b’: Permission denied
[xiaoming@centos7 app]$ cd test1
[xiaoming@centos7 test1]$ ls
ls: cannot open directory .: Permission denied
[xiaoming@centos7 test1]$ cat a
只有讀:只能查看目錄文件列表,不能訪問文件,也不能cd目錄(查看,刪除)
只有執(zhí)行:可以cd,不能ls,可以訪問目錄中的文件。執(zhí)行是基礎(chǔ)權(quán)限
寫權(quán)取:配合x權(quán)限才生效
[root@centos7 test1]#mkdir a
[root@centos7 test1]#mkdir b
[root@centos7 test1]#touch c
[root@centos7 test1]#chmod u=rw,g=rw,o=r a
[root@centos7 test1]#chmod u=rw,g=rw,o=r b
[root@centos7 test1]#chmod u=rw,g=rw,o=r c
[root@centos7 app]#ll /app/test1
-rw-rw-r--. 1 root root 0 May 30 21:26 a
-rw-rw-r--.. 1 root root 0 May 30 21:26 b
-rw-rw-r--. 1 root root 0 May 30 21:43 c
[root@centos7 app]#chmod -R  a=rwX test1
[root@centos7 app]#ll /app/test1
-rwxrwxr-x. 1 root root 0 May 30 21:26 a
-rwxrwxr-x. 1 root root 0 May 30 21:26 b
-rw-rw-r--. 1 root root 0 May 30 21:43 c
[root@centos7 test1]#chmod u=rw,g=rw,o=rx c
[root@centos7 test1]#cd ..
[root@centos7 app]#chmod -R  a=rwX test1
[root@centos7 app]#cd /app/test1
[root@centos7 test1]#ll
-rwxrwxrwx. 1 root root 0 May 30 21:26 a
-rwxrwxrwx. 1 root root 0 May 30 21:26 b
-rwxrwxrwx. 1 root root 0 May 30 21:43 c
X的作用(x權(quán)限特殊形式)
針對目錄增加x權(quán)限
對文件
1 無執(zhí)行的文件,不會增加x權(quán)限
2 任意三種人有執(zhí)行權(quán)限,也會增加x權(quán)限
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容