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 只是一個符號鏈接而已。