linux課題之文件系統權限

[TOC]html

用戶和羣組

  • 文件擁有者
  • 羣組:只有在組中文件纔可用
  • 其餘人:其餘組中的人

文件權限

clipboard.png

drwxr-xr-x. 4 root root 31 Oct 4 00:54 zhanghao
  • drwxr-xr-x:node

    • 第一個字符d: 表示文件類型vim

      • d: 目錄
      • - : 文件
      • l :連接文件
      • b:可隨機存儲設備
      • c: 鍵盤等一次性讀取設備
    • 第一組rwx: 表示文件所屬用戶的使用權限,rwx表示可讀寫可執行
    • 第二組r-x: 表示用戶組權限
    • 第三組r-x:表示其餘人權限
  • 4: 表示有多少個文件連接到這個i-node
  • root root: 文件的所屬主和組
  • 時間: 文件建立時間可使用ls -l --full-time顯示可讀時間
文件權限解答
例題:假設test1, test2, test3同屬於testgroup這個羣組,若是有下面的兩個文件,請說明兩個
文件的擁有者與其相關的權限爲什麼?
-rw-r--r-- 1 root root 238 Jun 18 17:22 test.txt
-rwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 ping_tsai
  • 答:安全

    • 文件test.txt的擁有者爲root,所屬羣組爲root。至於權限方面則只有root這個賬號能夠存取此文件,其餘人則僅能讀此文件;文件擁有者test1[rwx]能夠在本目錄中進行任何工做;
    • 另外一個文件ping_tsai的擁有者爲test1,而所屬羣組爲testgroup。其中:test1 能夠針對此文件具備可讀可寫可執行的權力;而同羣組的test2, test3兩我的與test1一樣是testgroup的羣組賬號,則僅可讀可執行但不能寫(亦即不能修改) ;至於沒有加入testgroup這一個羣組的其餘人則僅能夠讀,不能寫也不能執行!
    • 而testgroup這個羣組[r-x]的賬號,例如test2, test3亦能夠進入本目錄進行工做,可是不能

在本目錄下進行寫入的動做;bash

* 至於other的權限中[r--]雖然有r ,可是因爲沒有x的權限,所以others的使用者,並不能進

入此目錄!spa

[zhanghao@zhanghao-server ~]$ cd /home/test1/
-bash: cd: /home/test1/: Permission denied
[zhanghao@zhanghao-server ~]$ ls
[zhanghao@zhanghao-server ~]$ exit
logout
[root@zhanghao-server test1]# su - test2
[test2@zhanghao-server ~]$ cd /home/test1/
-bash: cd: /home/test1/: Permission denied
[test2@zhanghao-server ~]$ ll /home/test1/
ls: cannot open directory /home/test1/: Permission denied
[test2@zhanghao-server ~]$ exit
logout
[root@zhanghao-server test1]# ll /home/
total 0
drwx------. 3 test1 test 95 Oct 4 03:54 test1
drwx------. 2 test2 test 83 Oct 4 03:55 test2
drwx------. 2 zhanghao zhanghao 83 Oct 4 03:55 zhanghao
從上面看,test1和test2雖然是屬於同一個test組,可是/home下面目錄對於組沒有任何的權限,給組一個讀權限
[root@zhanghao-server test1]# chmod 0611 /home/test1
[root@zhanghao-server test1]# su - test2
Last login: Thu Oct 4 03:55:27 EDT 2018 on pts/0
[test2@zhanghao-server ~]$ cd /home/test1/
[test2@zhanghao-server test1]$ ls
ls: cannot open directory .: Permission denied
從上面能夠看出其餘用戶在test1目錄下面沒有任何的讀寫,沒辦法ls,touch。cd屬於執行權限
[root@zhanghao-server home]# chmod 755 test1
[root@zhanghao-server home]# ll -h
total 0
drwxr-xr-x. 3 test1 test 95 Oct 4 03:54 test1
drwx------. 2 test2 test 83 Oct 4 03:55 test2
drwx------. 2 zhanghao zhanghao 83 Oct 4 03:55 zhanghao
[root@zhanghao-server home]# su - test2
Last login: Thu Oct 4 03:58:41 EDT 2018 on pts/0
[test2@zhanghao-server ~]$ cd /home/test1
[test2@zhanghao-server test1]$ ls
test
[test2@zhanghao-server test1]$ touch nihao
touch: cannot touch ‘nihao’: Permission denied
[test2@zhanghao-server test1]$ cd test/
[test2@zhanghao-server test]$ ls
nihao
[test2@zhanghao-server test]$ cat nihao o
test1
cat: o: No such file or directory
[test2@zhanghao-server test]$ cat nihao
test1
[test2@zhanghao-server test]$ vim nihao
-bash: vim: command not found
[test2@zhanghao-server test]$ vi nihao
vim 保存顯示只讀文件。沒法touch,

修改文件權限

  • chgrp : 修改文件組
  • chown: 修改文件擁有者
  • chmod: 修改文件的權限,SUID,SGID,SBIT
chgrp
/zhanghao目錄其餘人權限爲0,新建用戶zhtest在zhanghao組中,能夠有執行和讀的權限,不能寫。
[zhanghao@zhanghao-server home]$ touch zhanghao
[zhanghao@zhanghao-server home]$ exit
logout
[root@zhanghao-server ~]# su - test1
Last login: Thu Oct 4 03:53:52 EDT 2018 on pts/0
[test1@zhanghao-server ~]$ cd /home/
[test1@zhanghao-server home]$ ls
nihao test1 test2 zhanghao
[root@zhanghao-server /]# chmod 0750 /zhanghao/
[root@zhanghao-server /]# ll /
total 24
lrwxrwxrwx. 1 root root 7 Oct 3 00:14 bin -> usr/bin
dr-xr-xr-x. 4 root root 4096 Oct 3 04:00 boot
drwxr-xr-x. 19 root root 3160 Oct 4 02:29 dev
drwxr-xr-x. 80 root root 8192 Oct 4 03:55 etc
drwxr-xr-x. 5 root root 61 Oct 4 04:09 home
lrwxrwxrwx. 1 root root 7 Oct 3 00:14 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Oct 3 00:14 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Mar 10 2016 media
dr-xr-xr-x. 9 root root 4096 Jul 11 2017 mnt
drwxr-xr-x. 2 root root 6 Mar 10 2016 opt
dr-xr-xr-x. 106 root root 0 Oct 3 23:55 proc
dr-xr-x---. 3 root root 147 Oct 4 00:17 root
drwxr-xr-x. 26 root root 800 Oct 4 00:20 run
lrwxrwxrwx. 1 root root 8 Oct 3 00:14 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Mar 10 2016 srv
dr-xr-xr-x. 13 root root 0 Oct 3 23:55 sys
drwxrwxrwt. 11 root root 4096 Oct 4 03:26 tmp
drwxr-xr-x. 13 root root 155 Oct 3 00:14 usr
drwxr-xr-x. 19 root root 267 Oct 3 03:55 var
drwxr-x---. 4 zhanghao zhanghao 31 Oct 4 00:54 zhanghao
[root@zhanghao-server /]# su - test1
Last login: Thu Oct 4 04:18:33 EDT 2018 on pts/0
[test1@zhanghao-server ~]$ ls
test
[test1@zhanghao-server ~]$ cd /zhanghao/
-bash: cd: /zhanghao/: Permission denied
[test1@zhanghao-server ~]$

[root@zhanghao-server /]# useradd zhtest -g zhanghao
[root@zhanghao-server /]# su - zhtest
[zhtest@zhanghao-server ~]$ cd /zhanghao/
[zhtest@zhanghao-server zhanghao]$ ls
test test1
[zhtest@zhanghao-server zhanghao]$ touch niaho
touch: cannot touch ‘niaho’: Permission denied
  • 修改組權限
將/zhanghao目錄的組權限修改成test,讓test組下面的用戶test1,有讀和執行的權限。
[root@zhanghao-server /]# chgrp test /zhanghao
[root@zhanghao-server /]# ll -h
total 24K
lrwxrwxrwx. 1 root root 7 Oct 3 00:14 bin -> usr/bin
dr-xr-xr-x. 4 root root 4.0K Oct 3 04:00 boot
drwxr-xr-x. 19 root root 3.1K Oct 4 02:29 dev
drwxr-xr-x. 80 root root 8.0K Oct 4 04:21 etc
drwxr-xr-x. 6 root root 75 Oct 4 04:21 home
lrwxrwxrwx. 1 root root 7 Oct 3 00:14 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Oct 3 00:14 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Mar 10 2016 media
dr-xr-xr-x. 9 root root 4.0K Jul 11 2017 mnt
drwxr-xr-x. 2 root root 6 Mar 10 2016 opt
dr-xr-xr-x. 106 root root 0 Oct 3 23:55 proc
dr-xr-x---. 3 root root 147 Oct 4 00:17 root
drwxr-xr-x. 26 root root 800 Oct 4 00:20 run
lrwxrwxrwx. 1 root root 8 Oct 3 00:14 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Mar 10 2016 srv
dr-xr-xr-x. 13 root root 0 Oct 3 23:55 sys
drwxrwxrwt. 11 root root 4.0K Oct 4 03:26 tmp
drwxr-xr-x. 13 root root 155 Oct 3 00:14 usr
drwxr-xr-x. 19 root root 267 Oct 3 03:55 var
drwxr-x---. 4 zhanghao test 31 Oct 4 00:54 zhanghao
[root@zhanghao-server /]# su - test1
Last login: Thu Oct 4 04:19:58 EDT 2018 on pts/0
[test1@zhanghao-server ~]$ cd /zhanghao/
[test1@zhanghao-server zhanghao]$ ls
test test1
[test1@zhanghao-server zhanghao]$ touch nihao
touch: cannot touch ‘nihao’: Permission denied
chown
修改文件擁有者
[root@zhanghao-server /]# chown -R root:root /zhanghao
[root@zhanghao-server /]# ll /
total 24
lrwxrwxrwx. 1 root root 7 Oct 3 00:14 bin -> usr/bin
dr-xr-xr-x. 4 root root 4096 Oct 3 04:00 boot
drwxr-xr-x. 19 root root 3160 Oct 4 02:29 dev
drwxr-xr-x. 80 root root 8192 Oct 4 04:21 etc
drwxr-xr-x. 6 root root 75 Oct 4 04:21 home
lrwxrwxrwx. 1 root root 7 Oct 3 00:14 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Oct 3 00:14 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Mar 10 2016 media
dr-xr-xr-x. 9 root root 4096 Jul 11 2017 mnt
drwxr-xr-x. 2 root root 6 Mar 10 2016 opt
dr-xr-xr-x. 107 root root 0 Oct 3 23:55 proc
dr-xr-x---. 3 root root 147 Oct 4 00:17 root
drwxr-xr-x. 26 root root 800 Oct 4 00:20 run
lrwxrwxrwx. 1 root root 8 Oct 3 00:14 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Mar 10 2016 srv
dr-xr-xr-x. 13 root root 0 Oct 3 23:55 sys
drwxrwxrwt. 11 root root 4096 Oct 4 03:26 tmp
drwxr-xr-x. 13 root root 155 Oct 3 00:14 usr
drwxr-xr-x. 19 root root 267 Oct 3 03:55 var
drwxr-x---. 4 root root 31 Oct 4 00:54 zhanghao
chown -R 用戶: 組 文件, 能夠單純的改組
[root@zhanghao-server /]# chown -R :test zhanghao
[root@zhanghao-server /]# ll -h
total 24K
lrwxrwxrwx. 1 root root 7 Oct 3 00:14 bin -> usr/bin
dr-xr-xr-x. 4 root root 4.0K Oct 3 04:00 boot
drwxr-xr-x. 19 root root 3.1K Oct 4 02:29 dev
drwxr-xr-x. 80 root root 8.0K Oct 4 04:21 etc
drwxr-xr-x. 6 root root 75 Oct 4 04:21 home
lrwxrwxrwx. 1 root root 7 Oct 3 00:14 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Oct 3 00:14 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Mar 10 2016 media
dr-xr-xr-x. 9 root root 4.0K Jul 11 2017 mnt
drwxr-xr-x. 2 root root 6 Mar 10 2016 opt
dr-xr-xr-x. 107 root root 0 Oct 3 23:55 proc
dr-xr-x---. 3 root root 147 Oct 4 00:17 root
drwxr-xr-x. 26 root root 800 Oct 4 00:20 run
lrwxrwxrwx. 1 root root 8 Oct 3 00:14 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Mar 10 2016 srv
dr-xr-xr-x. 13 root root 0 Oct 3 23:55 sys
drwxrwxrwt. 11 root root 4.0K Oct 4 03:26 tmp
drwxr-xr-x. 13 root root 155 Oct 3 00:14 usr
drwxr-xr-x. 19 root root 267 Oct 3 03:55 var
drwxr-x---. 4 root test 31 Oct 4 00:54 zhanghao
chmod
  • 權限code

    • r: 4
    • w:2
    • x:1
  • 附加者server

    • u: 所屬主
    • g: 所屬組
    • o: 其餘人
chmod 755 filename
chmod u=rwx,go=rx filename

隱藏權限

umask

顯示當前用戶建立目錄和文件夾的時候,默認的權限,用777減去umask值是默認的權限值,umask後面加上數字表示設置。htm

[root@zhanghao-server ~]# umask
0022
[root@zhanghao-server ~]# umask -S
u=rwx,g=rx,o=rx
chattr修改隱藏權限
[root@study ~]# chattr [+-=][ASacdistu] 文件或目錄名稱
選項與參數:
+ :增長某一個特殊參數,其餘本來存在參數則不動。
- :移除某一個特殊參數,其餘本來存在參數則不動。
= :設置必定,且僅有後面接的參數
A :當設置了 A 這個屬性時,若你有存取此文件(或目錄) 時,他的存取時間 atime 將不會被修改,可避免 I/O 較慢的機器過分的存取磁盤。(目前建議使用文件系統掛載參數處理這個項目)
S :通常文件是非同步寫入磁盤的(原理請參考[前一章sync](../Text/index.html#sync)的說明) ,若是加上 S 這個屬性時,當你進行任何文件的修改,該更動會「同步」寫入磁盤中。
a :當設置 a 以後,這個文件將只能增長數據,而不能刪除也不能修改數據,只有root 才能設置這屬性
c :這個屬性設置以後,將會自動的將此文件「壓縮」,在讀取的時候將會自動解壓縮,可是在儲存的時候,將會先進行壓縮後再儲存(看來對於大文件彷佛蠻有用的!)
d :當 dump 程序被執行的時候,設置 d 屬性將可以使該文件(或目錄) 不會被 dump 備份
i :這個 i 可就很厲害了!他可讓一個文件「不能被刪除、更名、設置連接也沒法寫入或新增數據!」對於系統安全性有至關大的助益!只有 root 能設置此屬性
s :當文件設置了 s 屬性時,若是這個文件被刪除,他將會被徹底的移除出這個硬盤空間,因此若是誤刪了,徹底沒法救回來了喔!
u :與 s 相反的,當使用 u 來設置文件時,若是該文件被刪除了,則數據內容其實還存在磁盤中,可使用來救援該文件喔!
注意1:屬性設置常見的是 a 與 i 的設置值,並且不少設置值必需要身爲 root 才能設置
注意2:xfs 文件系統僅支持 AadiS 而已
範例:請嘗試到/tmp下面建立文件,並加入 i 的參數,嘗試刪除看看。
[root@study ~]# cd /tmp
[root@study tmp]# touch attrtest <==建立一個空文件
[root@study tmp]# chattr +i attrtest <==給予 i 的屬性
[root@study tmp]# rm attrtest <==嘗試刪除看看
rm: remove regular empty file `attrtest'? y
rm: cannot remove `attrtest': Operation not permitted
# 看到了嗎?呼呼!連 root 也沒有辦法將這個文件刪除呢!趕忙解除設置!
範例:請將該文件的 i 屬性取消!
[root@study tmp]# chattr -i attrtest

文件特殊權限

SUID(set UID)(4)

SUID只能在二進制執行文件上生效,好比/usr/bin/passwd上面。普通用戶執行具備SUID權限的二進制權限的時候,會臨時具備root用戶的超級權限。也就是說普通用戶也是能夠執行。ip

  • /usr/bin/passwd之因此須要s權限是由於普通用戶修改密碼後,寫入shadow文件沒有權限,只有root超級權限才能夠網/etc/shadown裏面寫入配置。

SGID(2)

SGID對於目錄和文件也有效, 程序執行須要用戶有執行x權限。假如我用zhanghao用戶執行,zhanghao用戶的組是zhanghao,可是我要執行文件的用戶組是haozi,那麼我用zhanghao執行就會有haozi組的權限,對於目錄和文件來講,有SGID權限,使用者能夠對這個目錄進行讀和執行。

SBIT(1)

只是對於目錄有效,對於文件已經沒有任何效果。

  • 使用者對於這個目錄有w和x的權限
  • 使用者在目錄下面建立的目錄,只有本身和root用戶才能夠刪除。

好比/tmp目錄。擁有SBIT目錄,在裏面建立的文件只有本身或者root權限才能夠刪除。

設置特殊權限

### SUID
$ chmod 4755

### SGID
$ chmod 2755

### SBIT
$ chmod 1755
相關文章
相關標籤/搜索