文件权限
-rwxr-x--t 文件类型 用户权限 组权限 其他用户权限
umask是一个掩码,设置文件的默认权限,会屏蔽掉不想授予该安全级别的权限,从对象的全权权限中减掉;对文件全权权限是666,目录是777,因为目录有执行权限。系统启动时在/etc/profile中设置。
chmod [ugoa] [+-=] [rwxXstugo] 只有文件的属主可以改变权限
chmod 0xddd file
-R 参数表示递归的改变文件权限
u 表示设置权限和属主一样,g和o类似
s 运行时重新设置uid或gid
t 保留文件或目录
X 表示如果对象是目录或者已有执行权限,赋予执行权限
suid sgid 粘着位 构成另外一个八进制数在 umask 中(前),umask 有 4 个 8 进制数
r 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限
w 对文件而言,具有新增、修改和删除文件的权限;对目录来说,具有删除、移动目录内文件的权限
x 对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限
s(suid) 当文件被用户使用时,程序会以文件的属主权限运行,大写 s 表示用户的执行权限为空
s(sgid) 对文件来说,文件会以文件属组的权限运行;对目录来说,目录中创建的权限会以目录的默认属组作为默认属组,常用于创建共享组共享文件(新建共享组后可能需要重启才能生效)
t(sticky) 进程结束后仍保留在内存中;當使用者對於此目錄具有 w, x 權限,亦即具有寫入的權限時,使用者在該目錄下建立的檔案或目錄,僅有自己與 root 才有權力刪除該檔案
SUID 不用在目录上,而 t 不用在档案上。SUID 为 u+s ,而 SGID 为 g+s ,t 则是 o+t
目录 r 权限表明可以使用ls命令列出内容(必须也有使用ls命令选项的执行权限), w 权限表明文件可以被添加或删除(目录必须也有执行权限), x 权限控制对目录的访问。用户可以cd到目录中,使用读访问列出其中的内容。文件可以使用写访问被移动或者拷贝到目录中;只有属主可以使用 chmod 操作目录,重命名目录。
檔案隱藏屬性
什麼?檔案還有隱藏屬性?光是那九個權限就快要瘋掉了,竟然還有隱藏屬性,真是要命~ 但是沒辦法,就是有檔案的隱藏屬性存在啊!不過,這些隱藏的屬性確實對於系統有很大的幫助的~ 尤其是在系統安全 (Security) 上面,重要的緊呢!不過要先強調的是,底下的chattr指令只能在Ext2/Ext3/Ext4的 Linux 傳統檔案系統上面完整生效, 其他的檔案系統可能就無法完整的支援這個指令了,例如 xfs 僅支援部份參數而已。底下我們就來談一談如何設定與檢查這些隱藏的屬性吧!
chattr (設定檔案隱藏屬性)
[root@study ~]# chattr [+-=][ASacdistu] 檔案或目錄名稱
選項與參數:
+ :增加某一個特殊參數,其他原本存在參數則不動。
- :移除某一個特殊參數,其他原本存在參數則不動。
= :設定一定,且僅有後面接的參數
A :當設定了 A 這個屬性時,若你有存取此檔案(或目錄)時,他的存取時間 atime 將不會被修改,
可避免 I/O 較慢的機器過度的存取磁碟。(目前建議使用檔案系統掛載參數處理這個項目)
S :一般檔案是非同步寫入磁碟的(原理請參考前一章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
這個指令是很重要的,尤其是在系統的資料安全上面!由於這些屬性是隱藏的性質,所以需要以 lsattr 才能看到該屬性呦!其中,個人認為最重要的當屬 +i 與 +a 這個屬性了。+i 可以讓一個檔案無法被更動,對於需要強烈的系統安全的人來說, 真是相當的重要的!裡頭還有相當多的屬性是需要 root 才能設定的呢!
此外,如果是 log file 這種的登錄檔,就更需要 +a 這個可以增加,但是不能修改舊有的資料與刪除的參數了!怎樣?很棒吧! 未來提到登錄檔 (十八章) 的認知時,我們再來聊一聊如何設定他吧!
文件类型
普通文件 - 、目录文件 d 、字符设备文件 c 、块设备文件 b 、符号链接文件 l 、套接口文件 s 、先进先出文件 f
文件的命名规则
最大长度:文件或目录名最大长度为255个数字字母字符,包含完整路径名称及目录 (/) 之完整档名为 4096 个字符
非数字字母字符:一些非数字字母字符或者元字符是可用的:“ _ - . ”;允许但不推荐的符号:“ * ? ~ [ ] & | " $ ”;不允许的符号:“ ; < > ”。
文件名扩展:文件名可以包含零个或多个扩展名。扩展名常被一个应用追加到文件的末端。扩展名通常是1个到3个字符,追加到文件名的末端,之前有一个句点。
目录名的扩展名:目录名一般不包含扩展名,但是也没有规则反对这一点。
大小写敏感:Linux文件和目录名是大小写敏感的,一般规则都是使用小写字母。