linux 資料夾許可權及umask

2021-09-07 14:21:35 字數 4355 閱讀 7230

先建立乙個目錄,看看許可權:

$ ll

總用量 20

drwxrwxr-x 3 huangxm huangxm 4096 2月 16 16:35 ./

drwxr-xr-x 128 huangxm huangxm 12288 2月 16 16:35 ../

drwxrwxr-x 2 huangxm huangxm 4096 2月 16 16:35 test/

然後我們將許可權更改為444, 即所有都是r許可權

$ ll

總用量 20

drwxrwxr-x 3 huangxm huangxm 4096 2月 16 16:35 ./

drwxr-xr-x 128 huangxm huangxm 12288 2月 16 16:35 ../

dr--r--r-- 2 huangxm huangxm 4096 2月 16 16:35 test/

進入目錄試一下

$ whoami

huangxm

$ cd test

bash: cd: test: 許可權不夠

huangxm@huanghao-virtual-m

沒有許可權進入目錄,看來只有r許可權是不行的,那我們再加上w許可權

$ ll

總用量 20

drwxrwxr-x 3 huangxm huangxm 4096 2月 16 16:35 ./

drwxr-xr-x 128 huangxm huangxm 12288 2月 16 16:35 ../

drw-rw-r-- 2 huangxm huangxm 4096 2月 16 16:35 test/

再cd進入目錄試一下

$ cd test

bash: cd: test: 許可權不夠

看來還是不行。那我們就加上x許可權 吧

$ ll

總用量 20

drwxrwxr-x 3 huangxm huangxm 4096 2月 16 16:35 ./

drwxr-xr-x 128 huangxm huangxm 12288 2月 16 16:35 ../

dr-xr-xr-- 2 huangxm huangxm 4096 2月 16 16:35 test/

再cd進入目錄:

$ cd test

$ pwd

/home/huangxm/測試目錄/test

看來只有讀許可權是沒有辦法進入目錄的,只有rw許可權也是不能進入目錄的,所以一定要x許可權都有才可以。

所以一般情況下,系統裡的資料夾都是755許可權,允許所有使用者進入資料夾。

那我們在test目錄下新建乙個檔案a.txt,並將test目錄許可權改為766,使所有使用者都有rw許可權。

$ ll

總用量 20

drwxrwxr-x 3 huangxm huangxm 4096 2月 16 16:35 ./

drwxr-xr-x 128 huangxm huangxm 12288 2月 16 16:35 ../

drwxrw-rw- 2 huangxm huangxm 4096 2月 16 16:53 test/

$ ll

總用量 8

drwxrw-rw- 2 huangxm huangxm 4096 2月 16 16:53 ./

drwxrwxr-x 3 huangxm huangxm 4096 2月 16 16:35 ../

-rw-r--r-- 1 root root 0 2月 16 16:53 a.txt

可以看到test資料夾所有使用者都有w許可權 , a.txt檔案除root之外都只有r許可權,現在我們以其它使用者嘗試修改一下

d

fdfd

fffffffffff

e45: 已設定選項 'readonly' (** ! 強制執行)

強制儲存一下,發現儲存成功了。再開啟檔案看看

$ cat a.txt

ijfeihifhfe

fefefe

fef

內容已經儲存了。。明明檔案是沒有寫入許可權的,但是可以強制寫入,而且可以刪除檔案,所以資料夾給w許可權是相當危險的事情。

總結一下:

許可權操作rcd

rxcd ls

wxcd touch rm(self,other) vi(self,other)

wxtcd touch  rm(self)  vi(self)

理一下思路:

1. 使用root使用者建立目錄test , 並給others  wx許可權,並建立a,b,c三個檔案

# mkdir test

#chmod o=wx test

# touch test/

檢視一下, a,b,c是屬於root的

-rw-r--r-- 1 root    root       0  2月 16 18:00 a

-rw-r--r-- 1 root root 0 2月 16 18:00 b

-rw-r--r-- 1 root root 0 2月 16 18:00 c

2. 切換到普通使用者身份,嘗試刪除a

$ rm -f a
到root使用者下ll看一下,普通使用者wx沒有ls許可權

# ll

總用量 8

drwxr-x-wx 2 root root 4096 2月 16 18:01 ./

drwxrwxr-x 3 huangxm huangxm 4096 2月 16 17:56 ../

-rw-r--r-- 1 root root 0 2月 16 18:00 b

-rw-r--r-- 1 root root 0 2月 16 18:00 c

a已經被刪掉了

3. 以普通使用者vi b,修改後強制儲存,也是可以的。

4. 到root使用者下,給test目錄加個o=t許可權

# chmod o+t test

# ls -l

總用量 4

drwxr-x-wt 2 root root 4096 2月 16 18:02 test

到普通使用者下,嘗試刪除b

$ rm -f b

rm: 無法刪除"b": 不允許的操作

加了t許可權後已經無法刪除別人的檔案了。再嘗試vi一下

"b" e212: 無法開啟並寫入檔案

請按 enter 或其它命令繼續

即使加!強制儲存也不行了。

那麼用數字形式怎麼加t許可權呢,比如tmp目錄,這是個臨時目錄,所有人都需要往裡放東西,所以它是777的許可權,但是想一下,如果root放進去的東西,那別的使用者是不是也可以修改,那就不合理了。所以tmp目錄需要有個t許可權,不允許其它使用者修改,使用數字形式就是:

#chmod 1777 /tmp
umask:

每個使用者在建立檔案和資料夾的時候,都會給予檔案和資料夾乙個預設許可權 ; 預設許可權就是根據各使用者的umask值來確定的。我們用root和普通使用者建立檔案和資料夾看看許可權:

drwxr-xr-x 2 root    root    4096  2月 17 11:15 rootdir

-rw-r--r-- 1 root root 0 2月 17 11:15 rootfile

drwxrwxr-x 2 huangxm huangxm 4096 2月 17 11:15 userdir

-rw-rw-r-- 1 huangxm huangxm 0 2月 17 11:15 usertouch

可以看出root使用者建立的資料夾許可權是755 ,建立的檔案許可權是644;普通使用者建立的資料夾許可權是775,建立的檔案許可權是664

分別檢視一下root和普通使用者的umask值

# umask

0022

$ umask

0002

root的umask是022  , 普通使用者的是002

資料夾的許可權 777 – 022 = 755 , 檔案許可權 666 – 022 = 644

我們可以這麼理解,資料夾許可權就是777 – umask     檔案許可權就是666 – umask

但並不是真的是減法,實際上是掩碼,嘗試一下將umask值設為777 (在當前使用者下umask 777可以設定),那麼檔案許可權是000,並不是-1

Linux 資料夾許可權

資料夾預設許可權 drwxr xr x 755 檔案預設許可權 rw r r 644 drwxr xr x 第一位 左數 表示當前目錄是目錄還是檔案,d表示目錄,表示普通檔案.後面9位分為3組,每3組作為1組,從左到右分別表示 檔案屬主 建立者 檔案屬組 和建立者同組的使用者許可權 和其他所有使用者...

linux複製資料夾及賦予許可權

1.cp命令 命令 cp dir1 a.doc dir2 表示將dir1下的a.doc檔案複製到dir2目錄下 cp r dir1 dir2 表示將dir1及其dir1下所包含的檔案複製到dir2下 cp r dir1 dir2 表示將dir1下的檔案複製到dir2,不包括dir1目錄 說明 cp引...

linux 資料夾許可權修改

rw 600 只有所有者才有讀和寫的許可權 rw r r 644 只有所有者才有讀和寫的許可權,組群和其他人只有讀的許可權 rwx 700 只有所有者才有讀,寫,執行的許可權 rwxr xr x 755 只有所有者才有讀,寫,執行的許可權,組群和其他人只有讀和執行的許可權 rwx x x 711 只...