zoukankan      html  css  js  c++  java
  • linux 文件权限、类型、命名规则

    文件权限


    -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文件和目录名是大小写敏感的,一般规则都是使用小写字母。
  • 相关阅读:
    webpack学习笔记(五)
    webpack学习笔记(四)
    webpack学习笔记(三)
    directives 自定义指令
    css面试--基础
    css面试--H5移动端
    vue watch和computed的使用场景
    JS继承的实现方式
    js面试--ajax与性能优化
    js面试--概念
  • 原文地址:https://www.cnblogs.com/little-snake/p/4634830.html
Copyright © 2011-2022 走看看