linux文件系统权限获取_linux 获取文件权限 - CSDN
  • Linux文件系统权限

    2017-04-24 09:26:10
    且如果用户对于某目录不具有x权限,则该用户不能查询该目录下的文件的内容,注意:指的是内容,如果有r 权限是可以查看该目录下的文件名列表或子目录列表的。所以要开放目录给任何人浏览时,应该至少要给与

    拥有目录的x权限表示用户可以进入该目录成为工作目录,能不能进入一个目录,只与该目录的x权限有关,如果用户对于某个目录不具有x权限,则无法切换到该目录下,也就无法执行该目录下的任何命令,即使具有该目录的r权限。且如果用户对于某目录不具有x权限,则该用户不能查询该目录下的文件的内容,注意:指的是内容,如果有r 权限是可以查看该目录下的文件名列表或子目录列表的。所以要开放目录给任何人浏览时,应该至少要给与r及x权限。

    一、权限对于目录的意义
    1、首先要明白的是目录主要的内容是记录文件名列表和子目录列表,而不是实际存放数据的地方。
    2、r权限:拥有此权限表示可以读取目录结构列表,也就是说可以查看目录下的文件名和子目录名,注意:仅仅指的是名字。
    3、w权限:拥有此权限表示具有更改该目录结构列表的权限,总之,目录的w权限与该目录下的文件名或子目录名的变动有关,注意:指的是名字。具体如下:
    1)在该目录下新建新的文件或子目录。
    2)删除该目录下已经存在的文件或子目录(不论该文件或子目录的权限如何),注意:这点很重要,用户能否删除一个文件或目录,看的是该用户是否具有该文件或目录所在的目录的w权限(配合x权限,因为要进入目录)。
    3)将该目录下已经存在的文件或子目录进行重命名。
    4)转移该目录内的文件或子目录的位置。

    4、x权限:拥有目录的x权限表示用户可以进入该目录成为工作目录,能不能进入一个目录,只与该目录的x权限有关,如果用户对于某个目录不具有x权限,则无法切换到该目录下,也就无法执行该目录下的任何命令,即使具有该目录的r权限。且如果用户对于某目录不具有x权限,则该用户不能查询该目录下的文件的内容,注意:指的是内容,如果有r 权限是可以查看该目录下的文件名列表或子目录列表的。所以要开放目录给任何人浏览时,应该至少要给与r及x权限。

    二、权限对于文件的意义
    1、也应该明白的是文件是实际含有数据的地方,所以r、w、x权限对文件来说是与其内容有关的。
    2、r权限:用于此权限表示可以读取此文件的实际内容。

    3、w权限:拥有此权限表示可以编辑、添加或者是修改该文件的内容。但是不包含删除该文件,因为由上面权限对于目录的意义得知删除文件或目录的条件是什么。
    4、x权限:表示该文件具有可以被系统执行的权限。文件是否能被执行就是由该权限来决定的,跟文件名没有绝对的关系。

    要开放目录给任何人浏览时,应该至少也要给予r及x的权限,但w权限不可随便给!

    因为:如果A用户对某文件没有任何权限,但是对该文件所在目录拥有w权限的话,那么A用户依然可以删除该文件。

    三、测试部分:
    用户能否进入一个目录只与x权限有关:

    [root@master /]# ll
    total 28
    -rw-r--r--.   1 root root    0 Mar 16 11:49 1
    lrwxrwxrwx.   1 root root    7 Mar 16 11:43 bin -> usr/bin
    dr-xr-xr-x.   4 root root 4096 Mar 16 12:05 boot
    drwxr-xr-x.  20 root root 3280 Mar 23 14:32 dev
    drwxr-xr-x. 138 root root 8192 Mar 23 14:32 etc
    drwxr-xr-x.   9 root root  104 Mar 19 10:57 home
    lrwxrwxrwx.   1 root root    7 Mar 16 11:43 lib -> usr/lib
    lrwxrwxrwx.   1 root root    9 Mar 16 11:43 lib64 -> usr/lib64
    drwxr-xr-x.   2 root root    6 Nov  5 11:38 media
    drwxr-xr-x.   2 root root    6 Nov  5 11:38 mnt
    drwxr-xr-x.   4 root root   28 Mar 17 03:27 opt
    dr-xr-xr-x. 181 root root    0 Mar 23 14:31 proc
    dr-xr-x---.   7 root root 4096 Mar 23 14:35 root
    drwxr-xr-x.  38 root root 1140 Mar 23 14:32 run
    lrwxrwxrwx.   1 root root    8 Mar 16 11:43 sbin -> usr/sbin
    drwxr-xr-x.   2 root root    6 Nov  5 11:38 srv
    dr-xr-xr-x.  13 root root    0 Mar 23 14:31 sys
    drwxr-x--x.   3 root root   16 Mar 23 11:41 testperm
    drwxrwxrwt.  42 root root 4096 Mar 23 14:38 tmp
    drwxr-xr-x.  13 root root  155 Mar 16 11:43 usr
    drwxr-xr-x.  21 root root 4096 Mar 23 14:31 var
    [hdfs@master /]$ ls testperm
    ls: cannot open directory testperm: Permission denied
    [hdfs@master /]$ cd testperm
    [hdfs@master testperm]$

    只有r权限时,不能进入目录,只能使用ls命令得知目录下的文件和文件夹列表,仅限于名字

    [root@master /]# ll
    total 28
    -rw-r--r--.   1 root root    0 Mar 16 11:49 1
    lrwxrwxrwx.   1 root root    7 Mar 16 11:43 bin -> usr/bin
    dr-xr-xr-x.   4 root root 4096 Mar 16 12:05 boot
    drwxr-xr-x.  20 root root 3280 Mar 23 14:32 dev
    drwxr-xr-x. 138 root root 8192 Mar 23 14:32 etc
    drwxr-xr-x.   9 root root  104 Mar 19 10:57 home
    lrwxrwxrwx.   1 root root    7 Mar 16 11:43 lib -> usr/lib
    lrwxrwxrwx.   1 root root    9 Mar 16 11:43 lib64 -> usr/lib64
    drwxr-xr-x.   2 root root    6 Nov  5 11:38 media
    drwxr-xr-x.   2 root root    6 Nov  5 11:38 mnt
    drwxr-xr-x.   4 root root   28 Mar 17 03:27 opt
    dr-xr-xr-x. 182 root root    0 Mar 23 14:31 proc
    dr-xr-x---.   7 root root 4096 Mar 23 14:35 root
    drwxr-xr-x.  38 root root 1140 Mar 23 14:32 run
    lrwxrwxrwx.   1 root root    8 Mar 16 11:43 sbin -> usr/sbin
    drwxr-xr-x.   2 root root    6 Nov  5 11:38 srv
    dr-xr-xr-x.  13 root root    0 Mar 23 14:31 sys
    drwxr-xr--.   3 root root   16 Mar 23 11:41 testperm
    drwxrwxrwt.  42 root root 4096 Mar 23 14:40 tmp
    drwxr-xr-x.  13 root root  155 Mar 16 11:43 usr
    drwxr-xr-x.  21 root root 4096 Mar 23 14:31 var
    [hdfs@master /]$ cd testperm
    bash: cd: testperm: Permission denied
    [hdfs@master /]$ ls testperm
    ls: cannot access testperm/d1: Permission denied
    ls: cannot access testperm/a.txt: Permission denied
    a.txt  d1

    为其他用户组赋予rx权限后,发现删除其中的文件或目录都失败,尽管拥有对文件或目录的w权限:

    [hdfs@master testperm]$ ll
    total 0
    -rw-r--rw-. 1 root root 0 Mar 23 14:55 a.txt
    drwxrwxrwx. 2 hdfs hdfs 6 Mar 23 11:41 d1
    [hdfs@master testperm]$ rm a.txt
    rm: cannot remove ‘a.txt’: Permission denied 
    [hdfs@master /]$ rm -r testperm/d1
    rm: cannot remove ‘testperm/d1’: Permission denied

    当对目录赋予w权限后,即使用户对其中的文件没有w权限,依然可以删除文件:

    [hdfs@master testperm2]$ rm 1.txt
    rm: remove write-protected regular empty file ‘1.txt’?
    [hdfs@master testperm2]$ rm -f 1.txt
    [hdfs@master testperm2]$
    展开全文
  • AUG权限、进程安全上下文、ACL权限权限掩码umask、文件特殊权限SUID/SGID/SBIT、隐藏属性


      Linux最优秀的地方之一就是多任务环境,为了让各个使用者具有较为安全的文件数据,因此文件的权限管理变得尤为重要,在Linux系统中一般将文件可存取访问的身份分为3个类别:owner、group、others,我们称为权限对象,且这三类身份都具有:read、write、execute等权限,我们称为权限类型

    一、权限对象

      1、owner身份(文件所有者)

      由于Linux是多用户、多任务的操作系统,因此可能常常有多人同时在某台主机上工作,为了考虑每个人的隐私,文件所有者这个权限就尤为重要。每个人均可在主机上设置文件的权限,让其成为个人的“私密文件”,即个人所有者。因为设置了适当的文件权限,除本人(文件所有者)之外的用户无法查看文件内容。

      2、group身份(与文件所有者同组的用户)

      群组是权限中最有用的功能之一,群组简单理解就是用户组,类似于我们公司的各个部门之间,或者学校班级之间的划分,每个班级就是一个群组,群组内的资源是共享的,群组间是相互隔离的。

      3、others身份(其他人)

      不属于文件所有者或文件所属群组成员的用户。


    tips:这么说大家可能还不是很了解,这里举个栗子:

      张三、李四、王五是舍友住在三室一厅的房子里,他们分别是自己房间的所有者(owner);这里有一个用户组(group),这个组有张三、李四、王五三个成员,这个组里的成员都可以进入客厅;隔壁赵六,既不能进入他们的个人房间,也不能去他们三个共用的客厅,显而易见就是其他人(others)

    二、权限类型

      ①对于文件而言

    权 限 说 明
    读权限(r) 可获取文件的数据
    写权限(w) 可修改文件的数据
    执行权限(x) 可以将此文件运行为进程

      ②对于文件而言

    权 限 说 明
    读权限(r) 可使用ls命令获取其下的所有文件列表
    写权限(w) 可在此目录下“创建/删除//复制/移动”文件
    执行权限(x) 可以cd至此目录中,并且可以使用ls -l命令来获取所有文件的详细属性信息

    三、文件属性介绍

      在Linux中,是如何查看文件的权限信息呢?ls命令就可以查看文件的相关属性(也可以使用 " ll " 命令,等价于 " ls -l " )。其中,标红的部分就是Linux的文档权限属性信息。

      对于这十个字段,所表达的含义可以结合这张图来理解:

    十位字符表示含义:
    第1位:表示文档类型,取值常见的有"d"表示文件夹、"-"表示文件、"l"表示软链接、"s"表示套接字等等;
    第2-4位:表示文档所有者的权限情况,第2位表示读权限的情况,取值有r、-;第3位表示写权限的情况,取值有w、-;第4位表示执行权限的情况,取值有x、-。
    第5-7位:表示与所有者同在一个的用户的权限情况,第5位表示读权限的情况,取值有r、-;第6位表示写权限的情况,取值有w、-;第7位表示执行权限的情况,取值有x、-。
    第8-10位:表示其他用户的权限情况,第8位表示读权限的情况,取值有r、-;第9位表示写权限的情况,取值有w、-;第10位表示执行权限的情况,取值有x、-。

    四、权限管理命令

    1、chmod命令

    • 命令解释
        chmod - change file mode bits(修改文件或目录的权限)
        只有root用户和文档的所有者,才可以给文档设置权限。
    • 命令语法
        chmod [选项] 权限模式 文件
    • 命令常用选项
    选 项 解 释
    -R 递归设置权限(当文件类型为目录时使用)
    • 权限模式是什么呢?

      权限模式就是该文件需要设置的权限信息,分为字母形式数字形式

      ① 字母形式

    给谁设置 含 义 分配方式 含 义 权限字符 含 义
    u 所有者(owner) + 新增权限(相对当前) r 读权限
    g 用户组(group) - 删除权限(相对当前) w 写权限
    o 其他人(others) = 将权限设置成具体的值(注重结果) x 执行权限
    a 所有人(all) - 没有权限

      实例:创建/tmp/test(-rw-rwx—)文件并给其设置权限,要求所有者拥有全部的权限,同组用户拥有读和执行权限,其他用户拥有读权限和写权限。

    [root@localhost tmp]# chmod u=rwx,g=rx,o=rw test    //第一种方法
    [root@localhost tmp]# ll
    总用量 0
    -rwxr-xrw-. 1 root root 0 3月  12 20:14 test
    
    
    [root@localhost tmp]# chmod u+x,g-w,o+rw test    //第二种方法
    [root@localhost tmp]# ll
    总用量 0
    -rwxr-xrw-. 1 root root 0 3月  12 20:14 test
    
    

      ② 数字形式

    权 限 数 值
    读权限(r) 4
    写权限(w) 2
    执行权限(x) 1

      实例:为/tmp/test文件设置权限,要求所有者拥有全部的权限,同组用户拥有读和执行权限,其他用户只读权限。

      全部权限(u):读+写+执行=4+2+1=7
      读和执行(g):读+执行=4+1=5
      读权限(o):读=4

    [root@localhost tmp]# chmod 754 test
    [root@localhost tmp]# ll
    总用量 0
    -rwxr-xr--. 1 root root 0 3月  12 20:14 test
    
    

    tips:如果权限数字中但凡出现23的数字,则该权限有不合理的情况。为什么呢?
       那是因为2表示只有写权限,3表示拥有写和执行权限。那么大家想一想,用户没有读权限,如何打开文件去写呢?

    2、chown命令

    • 命令解释
        chown - change file owner and group(更改文件所有者和所属组,仅管理员可用)
    • 命令语法
        chown [选项]… [所有者][:[所属组]] 文件…
    • 命令常用选项
    选 项 解 释
    -R 递归修改(将目录内的目录或文件一并修改)
    • 实例

      创建/tmp/test文件,修改所有者为tom,所属组为jerry。

    [root@localhost tmp]# ll    //初始信息
    总用量 0
    drwxr-xr-x. 2 root root 18 3月  12 21:09 test
    [root@localhost tmp]# chown tom:jerry test    //修改所属者和所属组
    [root@localhost tmp]# ll    //修改成功
    总用量 0
    drwxr-xr-x. 2 tom jerry 18 3月  12 21:09 test
    
    

    3、chgrp命令(了解)

    • 命令解释
        chgrp - change group ownership(更改文件所属组,仅管理员可用)
    • 命令语法
        chgrp [选项]… 所属组 文件…
    • 命令常用选项
    选 项 解 释
    -R 递归修改(将目录内的目录或文件一并修改)
    • 实例:修改/tmp/test文件的所属组为root。
    [root@localhost tmp]# ll    //初始信息
    总用量 0
    drwxr-xr-x. 2 tom jerry 18 3月  12 21:09 test
    [root@localhost tmp]# chgrp root test/    //修改所属组
    [root@localhost tmp]# ll    //修改成功
    总用量 0
    drwxr-xr-x. 2 tom root 18 3月  12 21:09 test
    
    

    五、进程安全上下文

      1、任何一个可执行程序文件是否可以执行,取决于发起者对文件是否有x权限;
      2、若进程启动成功,进程的属主为发起者,属组为进程发起者的所属组;
      3、进程所能够访问文件的权限,取决于进程的发起者:
        ① 进程的属主与文件的属主是否相同;如果相同,则应用属主的权限;
        ② 否则,则检查进程的属主是否属于文件的属组;如果是,则应用属组的权限;
        ③ 否则,就只能应用others的权限。

    六、基本权限ACL

      ACL的全称是Access Control List(访问控制列表),一个针对文件/目录的访问控制列表。它在UGO权限管理的基础上为文件系统提供了一个额外的更灵活的权限管理机制。ACL允许你给任何的用户或用户组设置任何文件/目录的访问权限。
      作为UGO权限管理的补充,ACL自然有UGO办不到的事情,例如:
        ① 可以针对用户来设置权限
        ② 可以针对用户组来设置权限
        ③ 子文件/目录继承父母录的权限

    1、查看ACL

    • 命令解释
        getfacl - get file access control lists(获取文件访问控制列表)
    • 命令语法
        getfacl [-aceEsRLPtpndvh] 文件 …
    • 命令常用选项
    选 项 解 释
    -R 递归列出所有文件和目录的acl

    2、配置ACL

    • 命令解释
        setfacl - set file access control lists(设置文件访问控制列表)
    • 命令语法
        setfacl [-bkndRLPvh] [{-m|-x} acl_参数] 文件 …
    • 命令常用选项
    选 项 解 释
    -m 配置文件的acl,不可与-x合用
    -x 删除acl,不可与-m合用
    -b 删除所有acl
    -k 删除默认acl
    -R 递归地对所有文件和目录应用操作
    -d 配置"默认acl参数",只对目录有效,该目录新建的数据会继承此默认值

    3、实例

      ① 创建/tmp/testdir目录,并为tom(others)用户赋予x权限使其可以进入testdir目录。

    [root@localhost tmp]# mkdir testdir    //创建/tmp/testdir(drw-r--r--)目录
    [root@localhost tmp]# chmod 644 testdir/    //修改testdir目录权限
    [root@localhost tmp]# ll
    总用量 0
    drw-r--r--. 2 root root 6 3月  13 10:33 testdir
    
    root@localhost testdir]# su - tom    //切换至tom用户(tom用户属于其他人)
    [tom@localhost tmp]$ cd testdir/    //尝试进入testdir目录(因为没有x权限,所以拒绝访问)
    bash: cd: testdir/: 权限不够
    
    [tom@localhost tmp]$ su - root    //切换至root用户
    密码:
    上一次登录:五 3月 13 10:21:37 CST 2020从 192.168.140.1pts/0 上
    [root@localhost ~]# setfacl -m u:tom:x /tmp/testdir/    //为tom用户对testdir目录添加x权限
    [root@localhost tmp]# ll    //查看文件信息也发生了变化
    总用量 0
    drw-r-xr--+ 2 root root 22 3月  13 10:33 testdir
    [root@localhost tmp]# getfacl testdir/    //查看testdir目录的acl
    # file: testdir/
    # owner: root
    # group: root
    user::rw-
    user:tom:--x    //tom用户拥有x权限
    group::r--
    mask::r-x
    other::r--
    
    [root@localhost tmp]# su - tom    //切换至tom用户测试是否可以进入testdir目录
    上一次登录:五 3月 13 10:47:38 CST 2020pts/0 上  
    [tom@localhost ~]$ cd /tmp/testdir/
    [tom@localhost testdir]$    //进入成功
    
    

      ② 删除tom用户对/tmp/testdir目录的所有acl权限。

    [root@localhost ~]# setfacl -x u:tom /tmp/testdir/    //删除tom用户对testdir目录的权限acl权限
    [root@localhost ~]# getfacl /tmp/testdir/    //查看testdir目录的acl
    getfacl: Removing leading '/' from absolute path names
    # file: tmp/testdir/
    # owner: root
    # group: root
    user::rw-
    group::r--
    mask::r--
    other::r--    //user:tom:--x 这条记录以及被删除
    
    

      ③ 使/tmp/testdir目录下"文件/目录"继承/tmp/testdir目录的acl权限。

    [root@localhost ~]# chmod 745 /tmp/testdir/    修改testdir目录的权限为(-rw-rw-r-x)
    [root@localhost ~]# setfacl -m d:u:tom:rw /tmp/testdir/    //为tom用户对testdir添加子目录/文件会继承的rw权限
    [root@localhost ~]# touch /tmp/testdir/testfile    //创建testfile文件
    [root@localhost ~]# getfacl -R /tmp/testdir/    //递归查看testdir目录下全部文件的acl
    getfacl: Removing leading '/' from absolute path names
    # file: tmp/testdir/
    # owner: root
    # group: root
    user::rw-
    group::r--
    mask::r--
    other::r--
    default:user::rw-
    default:user:tom:rwx    //其子目录/文件默认tom用户拥有rw权限
    default:group::r--
    default:mask::rwx
    default:other::r--
    
    
    # file: tmp/testdir//testfile
    # owner: root
    # group: root
    user::rw-
    user:tom:rw-    //tom用户拥有rw权限
    group::r--
    mask::rw-
    other::r--
    
    [root@localhost ~]# su - tom    //切换至tom用户测试是否可以进入向testfile文件中写入内容
    上一次登录:五 3月 13 13:35:50 CST 2020pts/0 上
    [tom@localhost ~]$ echo "Hello World" > /tmp/testdir/testfile
    [tom@localhost ~]$ cat /tmp/testdir/testfile
    Hello World
    
    

      ④ 删除/tmp/testdir目录的全部acl权限。

    [root@localhost tmp]# setfacl -b /tmp/testdir/    移除所有acl权限
    
    

    七、权限掩码umask

      在我们创建新的目录和文件时本身也是有它默认的权限,这个默认权限是什么呢?就是由权限掩码umask所确定的。它的功能可以说与chmod刚好相反,代表默认拿走的,也就是说不要的权限。
      所以说umask就是用来指定"目前用户在新建文件或者目录时的权限默认值"。那么如何得知或设置这个umask呢?

    1、查看umask

    [root@localhost ~]# umask    //以数字类型的方式显示出权限设置
    0022
    //其中第一个0与特殊权限有关,可以暂时不用理会
    //后三位022则与普通权限(rwx)有关
    [root@localhost ~]# umask -S    //以符号类型的方式显示出权限设置
    u=rwx,g=rx,o=rx
    
    

      那么这个数字具体是怎么表示权限的呢?
      文件:666-umask  目录:777-umask
      那又为什么文件是666去减呢?那是因为文件默认不能拥有执行权限,如果普通文件都有执行权限,那么势必安全性就会很低(一些木马程序就有权限直接被执行)!所以,如果减得的结果中有执行权限,则会加1进行修改。
    例如:
      umask:023
      文件:666-023=643 需要加"1",所以为644
      目录:777-023=745

    2、设置umask

      设置umask很简单,这里不做过多讲述。

    [root@localhost ~]# umask 023    //设置umask为023
    [root@localhost ~]# umask
    0023
    
    

    八、文件特殊权限SUID、SGID、SBIT

    1、Set UID

      当s这个标志出现在文件所有者的x权限上时,就被称为Set UID,简称为SUID。那么这个特殊权限的特殊性的作用是什么呢?
      ① SUID权限仅对二进制程序(binary program)有效;
      ② 执行者对于该程序需要具有x的可执行权限;
      ③ 本权限仅在执行该程序的过程中(run-time)有效;
      ④ 执行者将具有该程序所有者(owner)的权限。

      这么说大家可能不太理解,SUID这个权限的目的到底是什么呢?

    例如:当用户修改自己密码的时候需要使用passwd这个命令,这个二进制文件的权限为:"-rwsr-xr-x",所以系统中每一个用户都可以执行,但是在修改密码的过程中需要将密码写入/etc/shadow文件中,但是这个文件的权限为:"----------"。从进程安全上下文中,大家可以知道一个命令对文件的调用权限取决于发起者对文件的权限,所以根本是拒绝写入的!这时就用到了这个s权限,执行passwd命令的过程中发起者就拥有了root的权限,所以用户就可以借助root的权力,修改/etc/passwd文件了。

      tips:属主的执行权限为如果原本有执行权限,显示为小写s;否则为大写S。

    2、Set GID

      如果这个s放在文件的所属用户组的x权限上时,就被称为Set GID,简称为SGID。和SUID一样,只是SGID是获得该程序所属用户组的权限。
      ① SGID对二进制程序有用;
      ② 程序执行者对该程序需要具有x的可执行权限;
      ③ 执行者将具有该程序所属组(group)的权限。
      ④ SGID主要用在目录上:在此目录下创建新的文件时,新的文件的属组和目录的属组相同。

      如果大家已经理解SUID,那么相信前三点不是难点,第四点为大家举个栗子:

    [root@localhost tmp]# mkdir testdir    //创建testdir目录
    [root@localhost tmp]# chmod g+s o+w testdir/    //为testdir目录添加SGID权限以及其他人给予w权限
    [root@localhost tmp]# ll    //权限给予成功
    总用量 4
    drwxr-srwx. 2 root root 4096 3月  17 00:17 testdir
    [root@localhost tmp]# su - tom    //切换至tom用户
    [tom@localhost ~]$ touch /tmp/testdir/testfile    //在testdir目录下创建testfile文件
    [tom@localhost ~]$ cd /tmp/testdir/    //转到/tmp/testdir目录下
    [tom@localhost testdir]$ ll    //查看testfile有何特殊
    总用量 0
    -rw-rw-r--. 1 tom root 0 3月  17 00:35 testfile    //`可以看出用户组还是root`
    
    

      tips:属组的执行权限为如果原本有执行权限,显示为小写s;否则为大写S。

    3、Sticky Bit

      这个就是针对others来设置的了,目前只针对目录有效,作用是:当用户在该目录下建立文件或目录时,仅有自己和root才有权力删除。
      最有代表的就是/tmp目录(drwxrwxrwt),任何人都可以在里面增加、修改文件,但仅有root与该目录/文件的创建者能够删除自己的目录或文件。
      tips:其他人的执行权限为如果原本有执行权限,显示为小写t;否则为大写T。

    八、隐藏属性

      Linux系统中的文件和目录,除了可以设定普通权限和特殊权限外,还有一些隐藏属性

    属 性 含 义
    A 文件的atime不可被修改,可以减少磁盘I/O数量,有利于提高性能和续航能力
    S 磁盘I/O同步选项,功能类似sync
    a 即append,只能向文件中添加数据,而不能删除
    i 文件不能被删除、改名、设置链接关系、写入或追加数据,只有root可以设置这个属性
    c 即compresse,文件会自动地经压缩后在存储,读取时会自动地解压
    d 即no dump,设定文件不能成为dump程序的备份目标
    s 删除文件或目录时,会被完全从硬盘空间中删除,不可恢复
    u 与s相反,删除文件或目录时,其内容会被保存,用于后期恢复数据,常用来防止意外删除文件或目录

    1、lsattr命令

    • 命令解释
        lsattr - list file attributes on a Linux second extended file system(查看文件或目录的隐藏属性)
    • 命令语法
        lsattr [选项] 文件或目录名
    • 命令常用选项
    选 项 解 释
    -a 显示所有文件和目录的隐藏属性
    -d 只列出目录本身的隐藏属性,不会对目录下的文件或子目录进行操作
    -R 递归操作,列出当前目录及其子目录下的文件和目录的隐藏属性
    • 实例

      查看文件的隐藏属性;

    [root@localhost ~]# lsattr anaconda-ks.cfg
    -------------e- anaconda-ks.cfg
    
    

    2、chattr命令

    • 命令解释
        chattr - change file attributes on a Linux file system(修改文件或目录的隐藏属性,仅root可以使用)
    • 命令语法
      chattr [模式] 文件或目录名
    • 模式

      模式格式+/-/= 属性

    参 数 含 义
    + 增加某些特殊属性,其他属性保持不变
    - 删除某些特殊属性,其他属性保持不变
    = 重置为仅后面接的特殊属性
    • 实例

      给文件赋予 i 属性;

    [root@localhost ~]# chattr +i anaconda-ks.cfg    //赋予i属性
    [root@localhost ~]# lsattr anaconda-ks.cfg    //查看
    ----i--------e- anaconda-ks.cfg
    [root@localhost ~]# rm -f anaconda-ks.cfg    //即使是root用户也不能删除
    rm: cannot remove `anaconda-ks.cfg': Operation not permitted
    
    
    展开全文
  • Linux文件权限详解

    2018-12-30 19:57:00
    文章目录Linux文件权限详解一、文件权限二、修改文件访问权限的方法三、UMASK值四、三种特殊权限suid、sgid、sticky(sticky权限工作环境中相对常用)五、ACL访问控制列表六、文件权限操作的常用命令 Linux文件权限...

    文件权限

    Linux文件权限详解

    Linux系统中不仅是对用户与组根据UID,GID进行了管理,还对Linux系统中的文件,按照用户与组进行分类,针对不同的群体进行了权限管理,用他来确定谁能通过何种方式对文件和目录进行访问和操作。

    一、文件权限

    1. 文件的权限针对三类对象进行定义

      owner 属主,缩写u

      group 属组,缩写g

      other 其他,缩写o

    2. 每个文件针对每类访问者定义了三种主要权限

      r:Read 读

      w:Write 写

      x:eXecute 执行

      另 X:针对目录加执行权限,文件不加执行权限(因文件具备执行权限有安全隐患)

      注意:root账户不受文件权限的读写限制,执行权限受限制

    3. 对于文件和目录来说,r,w,x有着不同的作用和含义:

      针对文件:

       r:读取文件内容
       
       w:修改文件内容
       
       x:执行权限对除二进制程序以外的文件没什么意义
      

      针对目录:目录本质可看做是存放文件列表、节点号等内容的文件

       r:查看目录下的文件列表
       
       w:删除和创建目录下的文件
       
       x:可以cd进入目录,能查看目录中文件的详细属性,能访问目录下文件内容(基础权限)
      

      权限

    4. 用户获取文件权限的顺序: 先看是否为所有者,如果是,则后面权限不看;再看是否为所属组,如果是,则后面权限不看。

    二、修改文件访问权限的方法

    • chmod 修改权限 change mode

      方法1:mode法

      格式:chmod who opt per file

        who:u g o a(all)
        
        opt:+ – =
        
        per:r w x X
      

      方法2:数字法

      格式:chmod XXX file

        rwx rw- r–	
        111 110 100
        7   6   4
        
        r:4
        w:2
        x:1
      

      例:chmod 764 file 给file文件添加 rwxrw-r– 权限

      chmod -R +X dir 给dir目录添加X执行权限,dir目录下文件不添加执行权限

      (如果dir目录下有文件已具备执行权限,则添加该文件执行权限)

    三、UMASK值

    作用:取消对应的权限,影响创建文件和目录的默认权限

    对目录:	umask+default=777(dir)
    
    对文件:666-umask:观察结果,如果有奇数,奇数位+1,偶数不变
    

    四、三种特殊权限suid、sgid、sticky(sticky权限工作环境中相对常用)

    1. suid

      作用:给一个用户继承二进制程序所有者拥有的权限

      suid权限位 位于所有者的执行权限位上,如果一个文件具有suid权限,则所有者执行位为s,文件表现为红色背景

       例:ll /usr/bin/passwd
       	-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd
      
       给file文件增加suid权限
       
       	chmod u+s file
       	
       	chmod 4755 file               suid数字法表示为4
      

      注: suid只适合作用在二进制程序上

    2. sgid

      作用1:给一个用户继承二进制程序所有组拥有的权限

      sgid权限位 位于所有组的执行权限位,如果一个文件具有suid权限,则所有组的执行位为s,文件表现为黄色背景

      例:ll `which cat`
      	-rwxr-sr-x. 1 root root 48568 Mar 23  2017 /bin/cat
      
      给file文件增加sgid权限
      
      	chmod g+s file
      	
      	chmod 2755 file               sgid数字法表示为2
      

      作用2:作用在目录上时,使一个目录下的新建的文件继承目录的所属组

    3. sticky

      作用:作用于目录上,此目录的文件只能被所有者删除

      sticky权限位 位于其他的执行权限位上,如果一个文件具有sticky权限,则其他的执行位为t,目录表现为绿色背景

      如:ll -d /tmp
      	drwxrwxrwt. 17 root root 4096 Apr  4 10:02 /tmp
      
      给dir目录添加sticky权限
      
      	chmod o+t dir
      
      	chmod 1777 dir                sticky数字法表示为1
      

    五、ACL访问控制列表

    作用:实现更加灵活的权限管理,打破了三类用户的权限管理

    1. 添加ACL权限

      setfacl -m u:wang:0 file 使wang账户对指定file文件无权限
      
      setfacl -m u:mage:rw file       使mage账户对指定file文件有读写权限
      
      setfacl -m g:g1:rw file 使g1组对指定file文件有读写权限
      
      getfacl     file                     查看指定file文件的ACL权限
      

      ACL权限执行顺序类似于用户获取文件权限的顺序,getfacl顺序从上到下执行,一旦生效,下面的将不再生效(如果属于多个组,权限累加)

    2. 删除ACL权限

      setfacl -x u:wang file      删除wang账户对指定file文件的ACL权限
      
      setfacl -x g:g1 file   删除g1组对指定file文件的ACL权限
      
    3. ACL权限下的mask

      设置用户对指定文件所能拥有的最大权限(限高作用)
      
      setfacl -m mask::r file             使指定文件file所拥有的最大权限位读r
      
      setfacl -x mask::r file               取消指定文件file的最大权限限制mask
      
      setfacl -b f1                      取消f1文件所有的ACL权限
      

      ACL生效顺序:所有者、自定义用户、自定义组、其他人

    4. 备份和恢复ACL权限

      getfacl -R /tmp/dir1>acl.txt           将dir1目录下ACL权限备份
      
      setfacl -R –set-file=acl.txt /tem/dir      恢复dir1目录下ACL权限
      

    六、文件权限操作的常用命令

    • chown 设置文件所有者(普通用户无法修改文件所有者)

    • chgrp 设置文件所属组(普通用户要想该所属组,前提是文件所有者为自己,自己在所属组中)

    • chmod 设置指定文件权限

        -R     递归
        
        –reference=f1 f2 f3        参考f1文件权限设置f2,f3文件
      
    • chattr 给指定文件添加保护,避免root账户误操作

        +i      锁定文件,不能删除,不能改名,不能更改内容
        
        -i      解锁+i
        
        -a     锁定文件,不能删除,不能改名,但可追加内容(追加重定向)
        
        -a     解锁+a
        
        +A    指定文件读时间atime不再更改
      
    • lsattr 查看指定文件是否有锁定状态

    • setfacl 设置文件ACL权限

        -m mask::r file          使指定文件file所拥有的最大权限位读r
        
        -x mask::r file            取消指定文件file的最大权限限制mask
        
        -b f1                   取消f1文件所有的ACL权限
        
        -R –set-file=acl.txt /tem/dir   恢复dir1目录下ACL权限
      
    • getfacl 查看文件ACL权限

    展开全文
  • 三、Linux 文件权限首先来查看一下当前目录下的文件内容吧ls -l 查看当前目录下的文件列表 ls -l xxx.xxx (xxx.xxx是文件名) 查看指定的文件我们可以看到文件的权限,-rw-rw-r-- ,一共有10位数。其中: 最前面...
    三、Linux 文件权限


    首先来查看一下当前目录下的文件内容吧

    ls -l    查看当前目录下的文件列表
    ls -l xxx.xxx (xxx.xxx是文件名) 查看指定的文件


    我们可以看到文件的权限-rw-rw-r--  ,一共有10位数。

    其中: 最前面那个 - 代表的是类型(详细如下面贴图所示)
    中间那三个 rw- 代表的是所有者(user)
    然后那三个 rw- 代表的是组群(group)
    最后那三个 r-- 代表的是其他人(other)
    然后我再解释一下后面那9位数:
    r 表示文件可以被读(read)
    w 表示文件可以被写(write)
    x 表示文件可以被执行(如果它是程序的话)

    - 表示相应的权限还没有被授予

    文件和文件夹操作权限:

    权限简写对普通文件的作用对文件夹的作用
    读取r查看文件内容列出文件夹中的文件(ls)
    写入w修改文件内容在文件夹中删除、添加或重命名文件(夹)
    执行x文件可以作为程序执行cd 到文件夹
    图解:



    需要注意的一点是,一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息。

    补充:

    特殊权限SUID、SGID、Sticky
    在 linux 系统中还有三种与用户身份无关的三个文件权限属性。即SUID、SGID和Sticky。
    SUID(Set User ID, 4):
    该属性只对有执行权限的文件有效,对目录无效。执行具有SUID权限的程序时,引发的进程的所有者是程序文件的所有者,而不是启动程序的用户(除非二者是同一个人)。比如,如果一个程序的所有者是root且具有SUID属性,一个普通用户执行此程序时,如同root执行此程序一样。(请注意该属性对Shell脚本程序无效)该属性为一些特殊程序(如lpr)的启动带来了方便。但有时也带来了安全隐患:比如一个具有SUID属性的程序如果在执行时运行了一个shell,那么用户可以籍此得到系统的最高权限。SUID可用s表示,如:
    $ ls -l /usr/bin/passwd
    -rwsr-xr-x 1 root root 47032 Feb 16  2014 /usr/bin/passwd

    SGID(Set Group ID, 4):
    对于可执行文件,SGID与SUID类似,引发的进程的所有组是程序文件所属的组。对于目录,SGID属性会使目录中新建文件的所属组与该目录相同。SGID也可以用s表示,如:
    $ ls -l /var
    drwxrwsr-x  2 root staff    4096 Apr 10  2014 local
    drwxrwxr-x 15 root syslog   4096 Apr  4 19:57 log
    Sticky, 1:
    仅对目录有效。带sticky属性的目录下的文件或目录可以被其拥有者删除或改名。常利用sticky属性创建这样的目录:组用户可以在此目录中创建新文件、修改文件内容,但只有文件所有者才能对自己的文件进行删除或改名。如系统中的/tmp文件夹。在属性字符串中,通常用t表示。
    $ ls -l /
    drwxrwxrwt   8 root root  4096 Apr  4 23:57 tmp


    修改文件和文件夹对应用户的操作权限

    如果你有一个自己的文件不想被其他用户读、写、执行,那么就需要对文件的权限做修改,这里有两种方式:

    方式一:二进制数字表示


    每个文件的三组权限:
    u 代表所有者(user
    g 代表所有者所在的组群(group
    o 代表其他人,但不是u和g (other
    a 代表全部的人,也就是包括u,g和o
    根据上图,其中:rwx也可以用数字来代替
    r ------------4
    w -----------2
    x ------------1
    - ------------0

    当大家都明白了上面的东西之后,那么我们常见的以下的一些权限就很容易都明白了:
      -rw------- (600) 只有所有者才有读和写的权限
      -rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
      -rwx------ (700) 只有所有者才有读,写,执行的权限
      -rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
      -rwx--x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
      -rw-rw-rw- (666) 每个人都有读写的权限
      -rwxrwxrwx (777) 每个人都有读写和执行的权限

    上实际操作

    查看了test的权限,是所有者拥有读、写、执行的权限:


    然后向文件里添加了些内容,更改了下权限(700:-rwx------),并尝试在shiyanlou(所有者)下读取文件,可以读取。


    更换到其他用户Peter,如下图再尝试读取,显示是权限不够,无法读取。



    方式二:加减赋值操作

    u 代表所有者(user)
    g 代表所有者所在的组群(group)
    o 代表其他人,但不是u和g (other)

    a 代表全部的人,也就是包括u,g和o

    + 和 - 分别表示增加和去掉相应的权限。+号一般不显示(初学练手时我还是会加上)

    在终端输入:
    chmod o+w xxx.xxx
    chmod o w xxx.xxx         表示给其他人授予xxx.xxx这个文件的权限

    chmod go-rw xxx.xxx      表示删除xxx.xxx中组群和其他人的读和写的权限
    chmod ug-r xxx.xxx




    修改文件或文件夹的拥有者/所属的组

    使用命令chown改变目录或文件的所有权(所有者/组)

    注释:这里说的断断续续的,将在学习下一个内容(用户/组 增删改查)之后补充

    文件与目录不仅可以改变权限,其所有权及所属用户组也能修改,和设置权限类似,用户可以通过图形界面来设置,或执行chown命令来修改。
    我们先执行ls -l看看目录情况:

    可以看到test文件的所属用户组为root所有者为root
    执行下面命令,把上图中test文件的所有权转移到用户peter:
    # chown peter test


    改变所属组,将test文件从root组中转移到组Peter中,可使用下面命令:
    # chown :peter test


    将所属的用户和组一起更改
    将文件夹或文件test的拥有者修改成shiyanlou,所属的组修改成shiyanlou,如下图:


    展开全文
  • 文件权限系统最底层安全设定方法之一,它保证文件可以被可用的用户做相应操作 2.权限的识别 利用以下命令进行查看: 对文件:ls -l file 对目录:ls -ld dir 3.权限的查看与理解 首先在/mnt目录下用touch /...
  • Linux文件系统详解

    2019-05-29 16:07:53
    从操作系统的角度详解Linux文件系统层次、文件系统分类、文件系统的存储结构、不同存储介质的区别(RAM、ROM、Flash)、存储节点inode。本文参考: http://blog.chinaunix.net/uid-8698570-id-1763151.html ...
  • 整理下Linux文件权限相关知识 一、查看文件夹或文件的可读可写权限: ls -l 文件夹 解析“drwxrwxrwx”,这个权限说明一共10位。 第一位代表文件类型,有两个数值:“d”和“-”,“d”代表目录,“-”...
  • Linux获取root权限

    2019-02-22 07:32:05
    有时候,我们需要对Linux服务器的文件进行更新,但是没有权限去操作root权限下的文件,此时可以将普通权限修改为root权限,修改方式如下(图片本身示例为root权限下修改,不用在意): 1、控制台输入sudo passwd; ...
  • 如题,我目前做一个加解密工具,linux下使用。加解密没问题,但是解密后的文件与原文件权限不一致,有人支个招吗
  • 查看linux文件权限:ls -l 文件名称 查看linux文件夹的权限:ls -ld 文件夹名称(所在目录) 修改文件及文件夹权限: sudo chmod -(代表类型)×××(所有者)×××(组用户)×××(其他用户) 常用修改...
  • Linux系统下操作时,执行某些命令需要用到root权限,而当前登录的只是普通用户,如何能够不使用root用户密码,而又能执行root权限的命令呢?有两种临时方法: 一、sudo su 执行后按提示输入当前用户的...
  • //创建文件 public void createTxt(){ File ct=new File(filetxt); ct.setWritable(true, false); ct.setReadable(true, false); try { Process proces
  • 文章目录Linux 权限ls -l 中显示的内容如下:0-9位说明rwx权限详解 Linux 权限 ls -l 中显示的内容如下: -rwxrw-r-- 1 root police 1213 Feb 2 09:39 abc.txt 0-9位说明 Linux 权限 ls -l 中显示的内容...
  • 提到 sysfs 文件系统 ,必须先需要了解的是Linux设备模型,什么事Linux设备模型呢? 一、Linux 设备模型 1、设备模型概述  从2.6版本开始,Linux开发团队便为内核建立起一个统一的设备模型。在以前的内核中没有...
  • Linux文件权限的更改 【权限篇】 ubuntu系统中,对于不同用户及不同用户组中用户对文件的操作权限都不相同,通过控制台我们可以快速的对文件权限进行操作。 对于修改权限可以使用两种方案来更改其权限,下面认识...
  • 我们知道,在Linux下对很多文件进行修改都需要有root(管理员)权限,比如对/ect/profile等文件的修改。很多情况下,我们在进行开发的时候都是使用普通用户进行登录的,尤其在进行一些环境变量的配置工作时,常常...
  • Linux宏,一位用户创建文件和目录时,所具有的权限都是一样的,创建后可以使用chmod进行相应的修改 权限掩码的作用就是规范初创文件和目录时的权限设置。 设掩码为abc 则某用户新建普通文件权限为(7-a)(7-b)(7-c...
  • Linux系统中最常见的文件权限是w、r、x,分别对应着写、读、执行权限,但是除此之外linux还支持另外一系列的权限设置,这篇文字讲的就是这些权限中s权限的具体含义。  s,表示set UID或set GID。位于user或...
  • 今天生成的对流云团路径图片放在linux下,文件权限都是rw,没有x,后续的别人的程序调用不了,这里附上对三个属性的简单解释,有不够的欢迎大家补充 Linux权限不是很细致,只有RWX三种 r(Read,读取):对文件而...
  • chmod:修改文件权限 格式:chmod [options] mode file... 同时修改文件的所有权限: 按照权重修改:例,chmod 755 file 同时修改文件的一组权限: 例,chmod u=rw,g=r file 只...
1 2 3 4 5 ... 20
收藏数 172,202
精华内容 68,880
关键字:

linux文件系统权限获取