歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> Linux命令(shell)從入門到精通 學習筆記之1 文件安全與權限

Linux命令(shell)從入門到精通 學習筆記之1 文件安全與權限

日期:2017/3/1 18:06:15   编辑:SHELL編程

1.ls -l 命令:

最前面的一位表示文件類型:
d 目錄。
l 符號鏈接(指向另一個文件)。
s 套接字文件。
b 塊設備文件。
c 字符設備文件。
p 命名管道文件。
- 普通文件,或者更准確地說,不屬於以上幾種類型的文件。

後面的連續九位,表示文件的讀寫權限:
r w x:文件屬主權限 這是前面三位
r - x:同組用戶權限 這是中間三位
r - x:其他用戶權限 這是最後三位

2. 新創建文件(夾)的權限

目錄:

可以看到,新創建的目錄 myshell 的權限是:rwx r-x r-x, 即:

onwer 用戶具有 read、write、execute 權限,group 和其他用戶具有 read、execute權限。

文件:

可以看到,新創建的文件 myfile 的權限是:rw- r-- r--。

文件在新創建的狀態下,不會被賦予執行的權限,這是出於安全性的考慮。

文件權限修改:

# chmod 777 myfile    // 為所有用戶賦予了該文件的所有權限。

# chmod a-x myfile    // 回收所有用戶的執行權限(注意 a-x,-x 前面沒有空格)。

# chmod u+x,go-w myfile // 賦予文件屬主執行權限,同時回收其他用戶的寫權限

3. chmod 命令兩種模式:符號模式和絕對模式

符號模式:

# u: 文件屬主
# g: 同組用戶

# o: 其他用戶

# a: 所有用戶

+ 增加權限

- 回收權限

如:

chmod a-x myfile   // 剝奪所有用戶的文件執行權限

chmod og-w myfile

chmod g+w myfile

chmod u+x myfile

chmod go+x myf

chmod u+x,o-w myfile

絕對模式:

004 可讀

002 可寫

001 可執行

000 沒有權限

chmod 750 myfile

對文件myfile增加權限:

7 = 4 + 2 + 1 (屬主可讀、寫、執行)

5 = 4 + 1 (同組用戶可讀、執行)

0 = 0 (其他用戶沒有任何權限)

如果對一個目錄執行:

chmod 740 *

表示對該目錄下的所有文件賦予740權限,但以後新增的目錄,權限仍是默認的 rw- r-- r--

4. 目錄的權限

對目錄而言,意味著:

讀權限:可以列出該目錄中的文件

寫權限:可以在該目錄中創建或刪除文件

執行權限:可以搜索或進入該目錄

目錄的權限將會覆蓋該目錄中文件的權限。例如,如果目錄 docs 具有如下的權限:

而其中的文件 pay 的權限為:

那麼 admin 組的用戶將無法編輯該文件,因為它所屬的目錄不具有這樣的權限。

該文件對任何用戶都可讀,但由於它所在的目錄並未給 admin 組的用戶賦予執行權限,所以該組的用戶都將無法訪問該目錄,他們將會得到“訪問受限”的錯誤消息。

5.suid 和 guid(了解)

suid 意味著如果某個用戶對屬於自己的 shell 腳本設置了這種權限,那麼其他用戶在執行這一腳本時也會具有其屬主的相應權限。

如文件 myfile 具有 741 的權限,要對其設置suid,只需在其權限數字前加 4 (guid 是加 2,兩個都設置就是 4+2=6),

6. /etc/passwd 文件

該文件中列出了系統合法的用戶相關信息。

7. chown 和 chgrp

chown:文件的所有者和管理員能用這一命令改變文件的所有權,改變之後,原來的所有者,就不能回收他的權限了,如果真要回收,必須求助與管理員。

如:

將 myfile 的所有者,從root變更為用戶 zhy (zhy 必須是在 /etc/passwd 中合法的)。

chgrp:改變文件所屬的組。

如:

將 myfile 所屬的組,從 root 改成了 zhy 組。

# groups

查看當前登錄用戶所在的組內所有的成員。

# id

查看當前登錄用戶的信息

# whoami

查看系統當前是被哪個用戶登錄的。

# groups zhy

查看zhy用戶所在的組,以及組內成員。

用戶組的特性在系統管理中為系統管理員提供了極大的方便,但安全性也是值得關注的,如某個用戶下有對系統管理有最重要的內容,最好讓用戶擁有獨立的用戶組,或者是把用戶下的文件的權限設置為完全私有;另外root用戶組一般不要輕易把普通用戶加入進去。

8.umask命令

一個用戶登錄到系統之後,他所創建的文件有一個缺省的權限,這個權限可以由管理員配置,也可以由用戶登錄之後用 umask 命令自己配置,這種配置在退出該 shell 或使用另外的 umask 命令之前一直有效。

一般來說, umask 命令是在 /etc/profile 文件中設置的,每個用戶在登錄時都會引用這個文件,所以如果希望改變所有用戶的 umask ,可以在該文件中加入相應的條目。如果希望永久性地設置自己的 umask 值,那麼就把它放在自己 $home 目錄下的 .profile或 .bash_profile 文件中。

umask 值與權位:

通過:

# umask

命令查看當前 umask 值(後三位):

可以看到,當前 umaks 值為022,通過上面的表,就可以知道,umask 對應的文件權限是 644,目錄權限是 755。

如果沒有上面的表,還有另外一種計算方法:

777: rwx rwx rwx

022: --- -w- -w-

取上面兩行中沒有匹配的位就是目錄的權限:

rwx r-x r-x

換成值就是:755(目錄權限)

再將上面算出的結果(rwx r-x r-x)中為 x 的位換成 - ,就是文件的權限:

rw- r-- r--

換成值就是:644(文件權限)

如果希望改變系統的 umask 值,可以這樣:

# umask 007

例:

可以看到,文件的權限確實被改變了。

9. 符號鏈接

是一個指向文件的指針,在我理解就是 window 下的快捷方式:

.profile 就是 /usr/local/menus/sales.profile 的快捷方式了,這樣很方便,比如我們有多個用戶,比如 50 個,可以為他們分別創建一個.profile 文件,都指向這同一個 sales.profile 文件,以後我們修改一個 sales.profile 就可以了,不用對每個用戶的 .profile 做修改。

創建符號鏈接的命令格式:

# ln [-s] source_path target_path

source_path 是要指向的文件

target_path 就是指針(快捷方式)

例:

# ln -s /usr/opt/monitor/regstar/reg.log /var/adm/logs/monitor.log

在新安裝的系統上,通常要進行這樣的操作,在/var 目錄中創建一個指向/tmp目錄的鏈接,因為有些應用程序認為存在 /var/tmp 目錄(然而它實際上並不存在),有些應用程序在該目錄中保存一些臨時文件。為了使所有的臨時文件都放在一個地方,可以使用 ln 命令在 /var目錄下建立一個指向 /tmp 目錄的鏈接:

# ln -s /tmp /var/tmp

以後,如果有應用程序試圖將一些臨時文件放在 /var/tmp 下,實際上它是被存放在了 /tmp 目錄下了,因為 /var/tmp 只是一個符號鏈接而已。

Copyright © Linux教程網 All Rights Reserved