文件和目录权限

Posted f-h-j-11-7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件和目录权限相关的知识,希望对你有一定的参考价值。

         学linux最为重要的就是文件,即一切皆文件。所以文件的权限也很重要。我们要牢记,并正确使用它。权限不仅有普通权限还有特殊权限,当然啦不仅文件有权限,目录也有权限。下面就让我们来了解一下权限相关知识!

文件属性

一般情况下,当我们执行 ‘ls -Al’ 命令后,终端界面上会列出当前路径下所有的目录和文件详细的权限与属性,你会看到类似下面的内容

技术分享图片

第一列权限列代表文件的权限和属性,其各个字符含义如下图所示:

技术分享图片

我们复习一下之前学过的知识,文件类型有[d]目录,[-]文件,[l]链接文件,[b]块设备文件,[c]字符设备文件,[p]管道等等。

第二列表示有多少个文件名连接到此节点(i-node),这就涉及到Linux的文件系统了,在内核里有一个struct inode结构体,因为在Linux中所有的设备、文件夹等都是作为文件处理的,所以该结构体也就是文件的索引节点,每一个文件都有一个索引节点,它用来记录和存放文件的基本信息和相关属性,包含权限、属性、时间、使用者及群组等,以及记录到文件内容存储块的索引,但是我们使用的命令树确是使用文件名来记录的,每个文件名都要连接到一个i-node上才有意义,因此这个属性记录的就是多少个不同的文件名连接到同一个i-node索引节点上。

第三列表示这个文件的所有者。

第四列表示这个文件的所属用户组。

第五列表示这个文件的容量大小,默认单位为B。

第六列为这个文件的创建日期或者是最近的修改日期。

第七列是文件名,文件名第一个字符为. 表示隐藏文件。

目录与文件的权限意思

权限对于文件的意义
  • r : 可读取此文件的内容。
  • w : 可以编辑、新增或者是修改该文件的内容,不包括删除权限。
  • x : 具有被系统执行的权限。在Linux下面,文件是否能被当前用户执行是由该标志唯一判断的。
    以上主要都是针对文件的内容而言,与文件名本身没有绝对的关系
权限对于目录的意义
  • r : 具有读取目录结构列表的权限。
  • w : 具有更改该目录结构列表的权限,包括新建、删除、重命名、拷贝移动等。
  • x : 具有进入该目录成为工作目录的权限。

       文件和目录其实是一样的原理,因为在文件系统中,不管是文件、设备还是目录都是作为一个inode节点来记录的,而实际数据则放置在block中,这些block由inode索引。当具有r权限时,也就可以读取block中的内容,对于目录来说,目录结构列表就是目录的内容;当具有w权限时,也就意味着可以修改block中的内容;当具有x权限,就可以将block中的内容加载到内存中,对于目录来说也就是切换到工作目录

文件系统特性

对一个分区进行格式化后,在这个分区里就形成了文件系统,在文件系统中有以下三个比较重要的概念:

super block: 记录此文件系统的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式与相关信息等;
inode: 记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码;
block: 实际记录文件的内容,一个文件根据文件大小占用一个或多个block。

回到一开始的问题,当我们在Linux下的ext2文件系统新建一个目录时,ext2会分配一个inode与至少一块block给该目录。其中,inode记录该目录的相关权限与属性,并可记录分配到的那块block号码;而block则是记录在这个目录下的文件名与该文件名占用的inode号码数据。所以,inode本身并不记录文件名,文件名的记录是在目录的block中。因为对目录具有r权限,所以我们可以看到记录在block中的文件名,但是因为没有x权限,所以我们无法去读目录里的文件的inode信息。


chown 修改文件的owner
      chown                 用户名 文件/目录名  
             -R                   递归同时修改目录下的子文件子目录
              --reference 文件1  文件2   将文件1的owner设置给文件2
      chown owner.group 或  owner:group  文件名  可以同时修改文件的owner和group  仅root


chgrp 修改文件的group
      chgrp              组名 文件/目录名

     owner             可以修改文件的属于组,但owner一定要属于目标组
      -R                     递归
      --reference     文件1  文件2   将文件1的group设置给文件2

  
rwx权限
     文件
     当仅r权限作用在文件上的时候,表示可以读取该文件的内容 cat less
     当仅w权限作用在文件上的时候,表示可以修改该文件的内容 gedit vi vim nano > >>
     当仅x权限作用在文件上的时候,无作用
     当rw权限同时作用在文件上的时候,表示可以读写该文件
     当rx权限同时作用在文件上的时候,表示可以读并能执行该文件
     当wx权限同时作用在文件上的时候,权限等同于仅w权限
   rwx 
     目录
     当仅r权限作用在目录上的时候,可以短列出目录的内容(子文件,子目录名)
     当仅w权限作用在目录上的时候,无作用
     当仅x权限作用在目录上的时候,可以进入该目录
     当rw同时作用在目录上的时候,权限等同于仅r
     当rx同时作用在目录上的时候,表示可以长列出,可以进入
     当wx同时作用在目录上的时候,可以创建及删除文件或目录。
     当rwx同时作用在目录上的时候,可以列出可以创建删除可以进入。


chmod
     符号模式
         ugo +-= rwx
         a=ugo 或=左边省略
         =右边省略表示---

    数字模式
     rwx rw- r--

    r:4
     w:2
     x:1
     1:x
     2:w
     3:wx
     4:r
     5:rx
     6:rw
     7:rwx
umask
     umask查询umask
     umask xxx 设置umask

    chmod a+X *  当批量增加x权限时,x只增加到目录上,而跳过文件,如果某文件本身在ugo任意一位上有x,则不会被跳过
     cp -f src dst  当操作的用户对dst没有w权限时,则不能直接覆盖,可以使用-f,进行删除再创建(前提是,操作的用户对该目录有wx权限)
练习
1、当用户xiaoming对/testdir目录无执行权限时,意味着无法做哪些操作?
        只有rw时,可以短列出
2、当用户xiaoqiang对/testdir目录无读权限时,意味着无法做哪些操作?
        只有wx时,可以创建及删除,可以进入
3、当用户wangcai对/testdir目录无写权限时,该目录下的只读文件file1是否可修改和删除?
        只有rx权限时,不能,不能
4、当用户wangcai对/testdir目录有写和执行权限时,该目录下的只读文件file1是否可修改和删除?
        只有wx权限时,不能修改,可以删除

1、复制/etc/fstab文件到/var/tmp下,设置文件所有者为wangcai读写权限,所属组为sysadmins组有读写权限,其他人无权限

useradd wangcai
groupadd sysadmins
chown wangcai.sysadmins /etc/fstab
chmod 660 fstab
cp -p /etc/fstab /var/tmp

 

2、误删除了用户wangcai的家目录,请重建并恢复该用户家目录及相应的权限属性

[[email protected] ~]# mkdir /home/wangcai
[[email protected] ~]# cp -r /etc/skel/. /home/wangcai
[[email protected] ~]# chmod 770 /home/wangcai -R
[[email protected] ~]# ll -a /home/wangcai/
total 12
drwxr-xr-x. 3 wangcai wangcai  78 Apr 11 12:59 .
drwxr-xr-x. 8 root    root     79 Jul 19 07:16 ..
-rw-r--r--. 1 wangcai wangcai  18 Apr 11 08:53 .bash_logout
-rw-r--r--. 1 wangcai wangcai 193 Apr 11 08:53 .bash_profile
-rw-r--r--. 1 wangcai wangcai 231 Apr 11 08:53 .bashrc
drwxr-xr-x. 4 wangcai wangcai  39 Jul 11 01:15 .mozilla

 

3、创建用户liubei,guanyu,zhangfei,要求三用户同属于一个附加组shuguo

useradd liubei
useradd guanyu
groupmems -g shuguo -a liubei
[root@localhost etc]# groupmems -g shuguo -a guanyu
[[email protected] etc]# groupmems -g shuguo -a zhangfei
[[email protected] etc]# groupmems -g shuguo -l

 

4、创建目录/app/house,要求owner为liubei,仅刘关张对该目录有完整权限,其他人无任何权限

[[email protected] ~]# mkdir /app/house
[[email protected] ~]# chown liubei.shuguo /app/house
[[email protected] ~]# chmod 770 /app/house/

 

5、分别使用刘关张三用户在house创建各自的room目录,名为xxx_room,要求各自的room只能自己有完整权限,其他人没有任何权限

[[email protected] ~]# su liubei
[[email protected] root]$ mkdir /app/house/liubei_room
[liubei@localhost root]$ chmod 700 /app/house/liubei_room/
[liubei@localhost root]$ ll -d /app/house/liubei_room/

 

6、创建一个共享目录为/app/house/common,要求刘关张在该目录下所创建的文件,彼此之间都可以读写,其他人无任何权限。

[[email protected] ~]# mkdir /app/house/common
[[email protected] ~]# chmod 777 /app/house/common/
[[email protected] ~]$ touch /app/house/common/hehe.txt
[liubei@localhost ~]$ chmod 760 /app/house/common/hehe.txt
[root@localhost ~]# chgrp shuguo /app/house/common -R

 


























































以上是关于文件和目录权限的主要内容,如果未能解决你的问题,请参考以下文章

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

Django REST框架--认证和权限

检查目录是不是存在和权限[重复]

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

常用python日期日志获取内容循环的代码片段