美文网首页
linux文件权限

linux文件权限

作者: Peng_001 | 来源:发表于2020-06-10 15:12 被阅读0次

    当我们在目录下,使用ls横行输出文件信息,输出结果的第一行就是描述文件和目录权限的编码。

    mugpengdembp:tmp mugpeng$ ls -l |head -10
    total 264
    -rw-r--r--  1 root     wheel       0 Jun  9 10:26 AlTest1.err
    -rw-r--r--  1 root     wheel       0 Jun  9 10:26 AlTest1.out
    prw-rw-rw-  1 root     wheel       0 Jun  2 13:36 F7C71944B49B446081C0603DE90E4855_IN
    prw-rw-rw-  1 root     wheel       0 Jun  2 13:36 F7C71944B49B446081C0603DE90E4855_OUT
    -rw-rw-rw-  1 mugpeng  wheel  121278 Jun  9 10:52 adobegc.log
    drwx------  3 mugpeng  wheel      96 Jun  2 13:36 com.apple.launchd.CEG3EUNUCk
    drwx------  3 mugpeng  wheel      96 Jun  2 13:36 com.apple.launchd.lp7oclZNYU
    drwxr-xr-x@ 2 mugpeng  wheel      64 Jun  7 19:27 com.google.Keystone
    -rw-r--r--  1 root     wheel     106 Jun  9 11:10 com.sangfor.ca.sha
    

    解读权限编码信息

    -rw-r--r--
    drwx------
    

    其中第一个字符 表示 对象的类型:

    -  表示文件
    d 表示目录
    l 表示链接
    c 表示字符型设备
    b 表示块设备
    n 表示网络设备
    

    之后有3组三字符的编码。每一组定义了三种访问权限:

    r 表示对象是可读的
    w 表示对象是可写的
    x 表示对象是可执行的
    若没有某种权限,则会在该权限位置出现单破折号。
    

    3组 权限分别对应对象的3个安全级别:

    对象的属主
    对象的属组
    系统其他用户
    

    编辑文件权限

    umask

    使用touch 或mkdir 创建文件,会默认设置文件的权限。

    mugpengdembp:test mugpeng$ ls -l
    total 0
    -rw-r--r--  1 mugpeng  wheel   0 Jun  9 11:20 test1
    drwxr-xr-x  2 mugpeng  wheel  64 Jun  9 11:20 test2
    
    • 表示文件,d 表示目录。

    这些权限从何而来呢?是通过umask 设置的。
    我们可以直接输入umask 查看默认权限的设置。

    $ umask
    0022
    

    其中第一位代表了粘着位 sticky bit 的安全特性。而后面三位表示文件或目录对应的umask 八进制值。
    也就是将三字符的权限的3组内容转化为八进制的三个数字。

    --- 000 0
    --x 001 1
    -w- 010 2
    -wx 011 3
    r-- 100 4
    r-x 101 5
    rw- 110 6
    rwx 111 7
    

    因此对于文件来说,全权限的值为666,而对目录来说,则是777

    而我们创建的文件可以转为八进制表示644

    但是,我们创建的文件权限却和默认的022 不同。
    这是因为umask 值只是一个掩码。它会屏蔽掉不想授予权限的文件。因此我们需要将umask 值从对象的全权限值中减掉。如开始的文件权限本来为666,在umask 为022下,需要进行减法,因此它的实际权限为644

    我们可以使用umask xxx 为其指定一个新值。此时创建的文件其权限已更为640

    $ umask 026
    $ ls -l test3
    -rw-r-----  1 mugpeng  wheel  0 Jun  9 11:41 test3
    

    chmod

    chmod 命令可以用来改变文件的权限。

    chmod options mode file
    

    mode 参数可以自定义为八进制模式还是符号模式进行安全性设置。默认下为八进制权限码。

    -rw-r-----  1 mugpeng  wheel   0 Jun  9 11:41 test3
    $ chmod 760 test3
    -rwxrw----  1 mugpeng  wheel   0 Jun  9 11:41 test3
    

    符号模式安全设置

    对于chmod 的符号模式下的安全设置,则略显复杂。
    chmod [ugoa] [+-=] [rwxXstugo]
    其中

    u 表示用户
    g 表示组
    o 代表其他
    a 代表ugo 全部
    + 表示增加权限
    - 表示移除权限
    = 表示将现有权限修改为后面新值
    X 表示若对象是目录或已有执行权限,则赋予执行权限
    s 表示运行时重新设置UID 或GID
    t 表示保留文件或目录
    

    比如

    -rwxrw----  1 mugpeng  wheel   0 Jun  9 11:41 test3
    $ chmod o+r test3
    -rwxrw-r--  1 mugpeng  wheel   0 Jun  9 11:41 test3
    

    相关文章

      网友评论

          本文标题:linux文件权限

          本文链接:https://www.haomeiwen.com/subject/ebhstktx.html